]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcAgentDescriptorDaoJcr.java
Improve RCP
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / dao / SlcAgentDescriptorDaoJcr.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.ArrayList;
20 import java.util.List;
21
22 import javax.jcr.Node;
23 import javax.jcr.NodeIterator;
24 import javax.jcr.RepositoryException;
25 import javax.jcr.query.Query;
26
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29 import org.argeo.jcr.JcrUtils;
30 import org.argeo.slc.SlcException;
31 import org.argeo.slc.dao.runtime.SlcAgentDescriptorDao;
32 import org.argeo.slc.runtime.SlcAgentDescriptor;
33
34 public class SlcAgentDescriptorDaoJcr extends AbstractSlcJcrDao implements
35 SlcAgentDescriptorDao {
36 private final static Log log = LogFactory
37 .getLog(SlcAgentDescriptorDaoJcr.class);
38
39 public void create(SlcAgentDescriptor slcAgentDescriptor) {
40 try {
41 nodeMapper.save(getSession(), basePath(slcAgentDescriptor),
42 slcAgentDescriptor);
43 getSession().save();
44 } catch (RepositoryException e) {
45 throw new SlcException("Cannot import " + slcAgentDescriptor, e);
46 }
47 }
48
49 public SlcAgentDescriptor getAgentDescriptor(String agentId) {
50 // TODO: optimize query
51 String queryString = "//agent[@uuid='" + agentId + "']";
52 Query query = createQuery(queryString, Query.XPATH);
53 Node node = JcrUtils.querySingleNode(query);
54 if (node == null)
55 return null;
56 return (SlcAgentDescriptor) nodeMapper.load(node);
57 }
58
59 public void delete(SlcAgentDescriptor slcAgentDescriptor) {
60 try {
61 String queryString = "//agent[@uuid='"
62 + slcAgentDescriptor.getUuid() + "']";
63 Query query = createQuery(queryString, Query.XPATH);
64 Node node = JcrUtils.querySingleNode(query);
65 if (node != null) {
66 node.remove();
67 getSession().save();
68 } else
69 log.warn("No node found for agent descriptor: "
70 + slcAgentDescriptor);
71 } catch (RepositoryException e) {
72 throw new SlcException("Cannot delete " + slcAgentDescriptor, e);
73 }
74
75 }
76
77 public void delete(String agentId) {
78 try {
79 // TODO: optimize query
80 String queryString = "//agent[@uuid='" + agentId + "']";
81 Query query = createQuery(queryString, Query.XPATH);
82 Node node = JcrUtils.querySingleNode(query);
83 if (node != null)
84 node.remove();
85 } catch (RepositoryException e) {
86 throw new SlcException("Cannot find AgentDescriptor" + agentId, e);
87 }
88
89 }
90
91 public List<SlcAgentDescriptor> listSlcAgentDescriptors() {
92 try {
93 String queryString = "//agent";
94 Query query = createQuery(queryString, Query.XPATH);
95
96 List<SlcAgentDescriptor> listSad = new ArrayList<SlcAgentDescriptor>();
97
98 NodeIterator ni = query.execute().getNodes();
99 while (ni.hasNext()) {
100 Node curNode = (Node) ni.next();
101 // JcrUtils.debug(curNode);
102 listSad.add((SlcAgentDescriptor) nodeMapper.load(curNode));
103 }
104
105 return listSad;
106 } catch (Exception e) {
107 throw new SlcException("Cannot load AgentDescriptorList", e);
108 }
109 }
110
111 }