2 * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org
.argeo
.slc
.jcr
.dao
;
19 import java
.util
.ArrayList
;
20 import java
.util
.List
;
22 import javax
.jcr
.Node
;
23 import javax
.jcr
.NodeIterator
;
24 import javax
.jcr
.RepositoryException
;
25 import javax
.jcr
.query
.Query
;
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
;
34 public class SlcAgentDescriptorDaoJcr
extends AbstractSlcJcrDao
implements
35 SlcAgentDescriptorDao
{
36 private final static Log log
= LogFactory
37 .getLog(SlcAgentDescriptorDaoJcr
.class);
39 public void create(SlcAgentDescriptor slcAgentDescriptor
) {
41 nodeMapper
.save(getSession(), basePath(slcAgentDescriptor
),
44 } catch (RepositoryException e
) {
45 throw new SlcException("Cannot import " + slcAgentDescriptor
, e
);
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
);
56 return (SlcAgentDescriptor
) nodeMapper
.load(node
);
59 public void delete(SlcAgentDescriptor slcAgentDescriptor
) {
61 String queryString
= "//agent[@uuid='"
62 + slcAgentDescriptor
.getUuid() + "']";
63 Query query
= createQuery(queryString
, Query
.XPATH
);
64 Node node
= JcrUtils
.querySingleNode(query
);
69 log
.warn("No node found for agent descriptor: "
70 + slcAgentDescriptor
);
71 } catch (RepositoryException e
) {
72 throw new SlcException("Cannot delete " + slcAgentDescriptor
, e
);
77 public void delete(String agentId
) {
79 // TODO: optimize query
80 String queryString
= "//agent[@uuid='" + agentId
+ "']";
81 Query query
= createQuery(queryString
, Query
.XPATH
);
82 Node node
= JcrUtils
.querySingleNode(query
);
85 } catch (RepositoryException e
) {
86 throw new SlcException("Cannot find AgentDescriptor" + agentId
, e
);
91 public List
<SlcAgentDescriptor
> listSlcAgentDescriptors() {
93 String queryString
= "//agent";
94 Query query
= createQuery(queryString
, Query
.XPATH
);
96 List
<SlcAgentDescriptor
> listSad
= new ArrayList
<SlcAgentDescriptor
>();
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
));
106 } catch (Exception e
) {
107 throw new SlcException("Cannot load AgentDescriptorList", e
);