]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java
Start adding enhancement toward v0.8.1
[gpl/argeo-slc.git] / org.argeo.slc.core / 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 List<?> list = getHibernateTemplate().find(
42 "from TreeSPath where asUniqueString=?", pathString);
43 if (list.size() == 0) {
44 return null;
45 } else {
46 return (TreeSPath) list.get(0);
47 }
48 }
49
50 public TreeSPath getOrCreate(TreeSPath pathTransient) {
51 TreeSPath path = getTreeSPath(pathTransient.getAsUniqueString());
52 if (path != null) {
53 return path;
54 } else {
55 create(pathTransient);
56 // TODO: optimize
57 return getTreeSPath(pathTransient.getAsUniqueString());
58 }
59
60 }
61
62 }