1 package org
.argeo
.slc
.jcr
.dao
;
3 import java
.util
.Calendar
;
5 import java
.util
.GregorianCalendar
;
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
;
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
;
23 public class SlcExecutionDaoJcr
implements SlcExecutionDao
{
24 private Session session
;
26 private BeanNodeMapper beanNodeMapper
= new BeanNodeMapper();
28 public void addSteps(String slcExecutionId
,
29 List
<SlcExecutionStep
> additionalSteps
) {
30 // TODO Auto-generated method stub
34 public void create(SlcExecution slcExecution
) {
36 beanNodeMapper
.saveOrUpdate(getSession(), basePath(slcExecution
),
39 } catch (Exception e
) {
40 throw new SlcException("Cannot import " + slcExecution
, e
);
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();
52 public SlcExecution
getSlcExecution(String uuid
) {
54 Workspace workspace
= session
.getWorkspace();
55 QueryManager qm
= workspace
.getQueryManager();
57 String queryString
= "//*[@uuid='" + uuid
+ "']";
58 Query query
= qm
.createQuery(queryString
, Query
.XPATH
);
59 QueryResult queryResult
= query
.execute();
60 NodeIterator nodeIterator
= queryResult
.getNodes();
62 if (nodeIterator
.hasNext())
63 node
= nodeIterator
.nextNode();
65 throw new SlcException("Query returned no node.");
67 if (nodeIterator
.hasNext())
68 throw new SlcException("Query returned more than one node.");
70 return (SlcExecution
) beanNodeMapper
.nodeToBean(node
);
71 } catch (Exception e
) {
72 throw new SlcException("Cannot load SLC execution " + uuid
, e
);
76 public List
<SlcExecution
> listSlcExecutions() {
77 // TODO Auto-generated method stub
81 public void merge(SlcExecution slcExecution
) {
82 // TODO Auto-generated method stub
86 public void update(SlcExecution slcExecution
) {
87 // TODO Auto-generated method stub
91 public void setSession(Session session
) {
92 this.session
= session
;
95 protected Session
getSession() {