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