]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java
e20e3deb3c33e2d29b851e34710f8377bcf2b8d5
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / hibernate / structure / tree / TreeSPathDaoHibernate.java
1 package org.argeo.slc.hibernate.structure.tree;
2
3 import java.util.List;
4
5 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9
10 import org.argeo.slc.core.structure.tree.TreeSPath;
11 import org.argeo.slc.dao.structure.tree.TreeSPathDao;
12
13 /**
14 * The Hibernate implementation for tree-based result of the test result dao.
15 *
16 * @see TreeTestResult
17 */
18 public class TreeSPathDaoHibernate extends HibernateDaoSupport implements
19 TreeSPathDao {
20
21 private static Log log = LogFactory.getLog(TreeSPathDaoHibernate.class);
22
23 public void create(TreeSPath path) {
24 createImpl(path);
25 }
26
27 private void createImpl(TreeSPath path) {
28 if (path.getParent() != null) {
29 TreeSPath parent = getTreeSPath(path.getParent()
30 .getAsUniqueString());
31 if (parent == null) {
32 createImpl(path.getParent());
33 }
34 }
35 getHibernateTemplate().save(path);
36 if (log.isTraceEnabled())
37 log.trace("Saved TreeSPath " + path.getAsUniqueString());
38 }
39
40 public TreeSPath getTreeSPath(String pathString) {
41 if (log.isTraceEnabled())
42 log.trace("Query path: " + pathString);
43 List<?> list = getHibernateTemplate().find(
44 "from TreeSPath where asUniqueString=?", pathString);
45 if (list.size() == 0) {
46 return null;
47 } else {
48 return (TreeSPath) list.get(0);
49 }
50 }
51
52 public TreeSPath getOrCreate(TreeSPath pathTransient) {
53 TreeSPath path = getTreeSPath(pathTransient.getAsUniqueString());
54 if (path != null) {
55 return path;
56 } else {
57 create(pathTransient);
58 // TODO: optimize
59 return getTreeSPath(pathTransient.getAsUniqueString());
60 }
61
62 }
63
64 }