]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java
First slc execution JCR mapping
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / dao / SlcExecutionDaoJcr.java
1 package org.argeo.slc.jcr.dao;
2
3 import java.util.Calendar;
4 import java.util.Date;
5 import java.util.GregorianCalendar;
6 import java.util.List;
7
8 import javax.jcr.Node;
9 import javax.jcr.NodeIterator;
10 import javax.jcr.Session;
11 import javax.jcr.Workspace;
12 import javax.jcr.query.Query;
13 import javax.jcr.query.QueryManager;
14 import javax.jcr.query.QueryResult;
15
16 import org.argeo.jcr.BeanNodeMapper;
17 import org.argeo.jcr.JcrUtils;
18 import org.argeo.slc.SlcException;
19 import org.argeo.slc.dao.process.SlcExecutionDao;
20 import org.argeo.slc.process.SlcExecution;
21 import org.argeo.slc.process.SlcExecutionStep;
22
23 public class SlcExecutionDaoJcr implements SlcExecutionDao {
24 private Session session;
25
26 private BeanNodeMapper beanNodeMapper = new BeanNodeMapper();
27
28 public void addSteps(String slcExecutionId,
29 List<SlcExecutionStep> additionalSteps) {
30 // TODO Auto-generated method stub
31
32 }
33
34 public void create(SlcExecution slcExecution) {
35 try {
36 beanNodeMapper.saveOrUpdate(getSession(), basePath(slcExecution),
37 slcExecution);
38 session.save();
39 } catch (Exception e) {
40 throw new SlcException("Cannot import " + slcExecution, e);
41 }
42 }
43
44 protected String basePath(SlcExecution slcExecution) {
45 Calendar cal = new GregorianCalendar();
46 cal.setTime(new Date());
47 // cal.setTime(slcExecution.getStartDate());
48 return "/slc/processes/" + slcExecution.getHost().replace('.', '/')
49 + '/' + JcrUtils.dateAsPath(cal) + slcExecution.getUuid();
50 }
51
52 public SlcExecution getSlcExecution(String uuid) {
53 try {
54 Workspace workspace = session.getWorkspace();
55 QueryManager qm = workspace.getQueryManager();
56
57 String queryString = "//*[@uuid='" + uuid + "']";
58 Query query = qm.createQuery(queryString, Query.XPATH);
59 QueryResult queryResult = query.execute();
60 NodeIterator nodeIterator = queryResult.getNodes();
61 Node node;
62 if (nodeIterator.hasNext())
63 node = nodeIterator.nextNode();
64 else
65 throw new SlcException("Query returned no node.");
66
67 if (nodeIterator.hasNext())
68 throw new SlcException("Query returned more than one node.");
69
70 return (SlcExecution) beanNodeMapper.nodeToBean(node);
71 } catch (Exception e) {
72 throw new SlcException("Cannot load SLC execution " + uuid, e);
73 }
74 }
75
76 public List<SlcExecution> listSlcExecutions() {
77 // TODO Auto-generated method stub
78 return null;
79 }
80
81 public void merge(SlcExecution slcExecution) {
82 // TODO Auto-generated method stub
83
84 }
85
86 public void update(SlcExecution slcExecution) {
87 // TODO Auto-generated method stub
88
89 }
90
91 public void setSession(Session session) {
92 this.session = session;
93 }
94
95 protected Session getSession() {
96 return session;
97 }
98
99 }