]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java
Improve JCR
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / dao / SlcExecutionDaoJcr.java
index 2cc32b0a3bf7406dfdd5f782a370d407041f9fdb..135f10760e91c3a73917918cd6c066b82ad63c56 100644 (file)
@@ -8,38 +8,19 @@ import java.util.List;
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.Workspace;
 import javax.jcr.query.Query;
-import javax.jcr.query.QueryManager;
 import javax.jcr.query.QueryResult;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.jcr.BeanNodeMapper;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.dao.process.SlcExecutionDao;
 import org.argeo.slc.process.SlcExecution;
 import org.argeo.slc.process.SlcExecutionStep;
 
-public class SlcExecutionDaoJcr implements SlcExecutionDao {
-       private final static Log log = LogFactory.getLog(SlcExecutionDaoJcr.class);
-       private Session session;
-       private Workspace workspace;
-       private QueryManager queryManager;
-
-       private BeanNodeMapper beanNodeMapper = new BeanNodeMapper();
-
-       public void init() {
-               try {
-                       workspace = session.getWorkspace();
-                       queryManager = workspace.getQueryManager();
-               } catch (RepositoryException e) {
-                       throw new SlcException("Cannot initialize DAO", e);
-               }
-       }
+public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements
+               SlcExecutionDao {
+       // private final static Log log =
+       // LogFactory.getLog(SlcExecutionDaoJcr.class);
 
        public void addSteps(String slcExecutionId,
                        List<SlcExecutionStep> additionalSteps) {
@@ -51,15 +32,12 @@ public class SlcExecutionDaoJcr implements SlcExecutionDao {
        }
 
        public void create(SlcExecution slcExecution) {
-               if (log.isDebugEnabled())
-                       log.debug("create");
-
                try {
-                       beanNodeMapper.save(getSession(), basePath(slcExecution),
-                                       slcExecution);
-                       session.save();
+                       nodeMapper.save(getSession(), basePath(slcExecution), slcExecution);
+                       getSession().save();
                } catch (Exception e) {
-                       throw new SlcException("Cannot import " + slcExecution, e);
+                       throw new SlcException("Cannot create slcExecution" + slcExecution,
+                                       e);
                }
        }
 
@@ -67,14 +45,14 @@ public class SlcExecutionDaoJcr implements SlcExecutionDao {
                Calendar cal = new GregorianCalendar();
                cal.setTime(new Date());
                // cal.setTime(slcExecution.getStartDate());
-               return "/slc/processes/" + slcExecution.getHost().replace('.', '/')
-                               + '/' + JcrUtils.dateAsPath(cal) + "process";
+               String host = slcExecution.getHost();
+               if (host == null)
+                       host = "UNKOWNHOST";
+               return "/slc/processes/" + JcrUtils.hostAsPath(host) + '/'
+                               + JcrUtils.dateAsPath(cal) + "process";
        }
 
        public SlcExecution getSlcExecution(String uuid) {
-               if (log.isDebugEnabled())
-                       log.debug("getSlcExecution");
-
                try {
                        // TODO: optimize query
                        String queryString = "//process[@uuid='" + uuid + "']";
@@ -82,16 +60,13 @@ public class SlcExecutionDaoJcr implements SlcExecutionDao {
                        Node node = JcrUtils.querySingleNode(query);
                        if (node == null)
                                return null;
-                       return (SlcExecution) beanNodeMapper.nodeToBean(node);
+                       return (SlcExecution) nodeMapper.load(node);
                } catch (Exception e) {
                        throw new SlcException("Cannot load SLC execution " + uuid, e);
                }
        }
 
        public List<SlcExecution> listSlcExecutions() {
-               if (log.isDebugEnabled())
-                       log.debug("listSlcExecutions");
-               
                List<SlcExecution> res = new ArrayList<SlcExecution>();
                // TODO: optimize query
                String queryString = "//process";
@@ -101,8 +76,8 @@ public class SlcExecutionDaoJcr implements SlcExecutionDao {
                        NodeIterator iterator = qr.getNodes();
                        while (iterator.hasNext()) {
                                Node node = iterator.nextNode();
-                               SlcExecution slcExecution = (SlcExecution) beanNodeMapper
-                                               .nodeToBean(node);
+                               SlcExecution slcExecution = (SlcExecution) nodeMapper
+                                               .load(node);
                                res.add(slcExecution);
                        }
                        return res;
@@ -116,32 +91,17 @@ public class SlcExecutionDaoJcr implements SlcExecutionDao {
        }
 
        public void update(SlcExecution slcExecution) {
-               if (log.isDebugEnabled())
-                       log.debug("update");
-
                // TODO: optimize query
                String queryString = "//process[@uuid='" + slcExecution.getUuid()
                                + "']";
                try {
                        Query query = queryManager.createQuery(queryString, Query.XPATH);
                        Node node = JcrUtils.querySingleNode(query);
-                       beanNodeMapper.update(node, slcExecution);
-                       session.save();
+                       nodeMapper.update(node, slcExecution);
+                       getSession().save();
                } catch (Exception e) {
                        throw new SlcException("Cannot update " + slcExecution, e);
                }
        }
 
-       public void setSession(Session session) {
-               this.session = session;
-       }
-
-       protected Session getSession() {
-               return session;
-       }
-
-       public void setBeanNodeMapper(BeanNodeMapper beanNodeMapper) {
-               this.beanNodeMapper = beanNodeMapper;
-       }
-
 }