]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/AbstractSlcJcrDao.java
Add license headers
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / dao / AbstractSlcJcrDao.java
1 /*
2 * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 package org.argeo.slc.jcr.dao;
18
19 import java.util.Calendar;
20 import java.util.Date;
21 import java.util.GregorianCalendar;
22
23 import javax.jcr.NamespaceRegistry;
24 import javax.jcr.RepositoryException;
25 import javax.jcr.Session;
26 import javax.jcr.query.Query;
27
28 import org.argeo.ArgeoException;
29 import org.argeo.jcr.JcrUtils;
30 import org.argeo.jcr.NodeMapper;
31 import org.argeo.jcr.NodeMapperProvider;
32 import org.argeo.slc.runtime.SlcAgentDescriptor;
33 import org.argeo.slc.test.TestResult;
34 import org.argeo.slc.test.TestRunDescriptor;
35
36 public abstract class AbstractSlcJcrDao {
37
38 private Session session;
39
40 // protected Workspace workspace;
41 // protected QueryManager queryManager;
42 protected NodeMapper nodeMapper;
43
44 // We inject the nodeMapperProvider that define a default node mapper as an
45 // entry point of the NodeMapper
46 private NodeMapperProvider nodeMapperProvider;
47
48 public void init() {
49 nodeMapper = getNodeMapperProvider().findNodeMapper(null);
50 // JcrUtils.registerNamespaceSafely(session, "slc",
51 // "http://www.argeo.org/slc/0.12");
52
53 }
54
55 public void setSession(Session session) {
56 this.session = session;
57 }
58
59 protected Session getSession() {
60 return session;
61 }
62
63 // IoC
64 public void setNodeMapperProvider(NodeMapperProvider nodeMapperProvider) {
65 this.nodeMapperProvider = nodeMapperProvider;
66 }
67
68 // TODO : define a strategy to define basePathes
69 protected String basePath(TestResult testResult) {
70 Calendar cal = new GregorianCalendar();
71 cal.setTime(new Date());
72 return "/slc/testresults/" + JcrUtils.dateAsPath(cal) + "testresult";
73 }
74
75 protected String basePath(SlcAgentDescriptor slcAgentDescriptor) {
76 return "/slc/agents/"
77 + JcrUtils.hostAsPath(slcAgentDescriptor.getHost()) + "/agent";
78 }
79
80 protected String basePath(TestRunDescriptor testRunDescriptor) {
81 return "/slc/testruns/" + testRunDescriptor.getSlcExecutionUuid()
82 + "/testrun";
83 }
84
85 protected NodeMapperProvider getNodeMapperProvider() {
86 return this.nodeMapperProvider;
87 }
88
89 protected Query createQuery(String query, String type) {
90 try {
91 return getSession().getWorkspace().getQueryManager().createQuery(
92 query, type);
93 } catch (RepositoryException e) {
94 throw new ArgeoException("Cannot create query " + query, e);
95 }
96 }
97 }