+/*\r
+ * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
package org.argeo.slc.jcr.dao;\r
\r
import java.util.ArrayList;\r
-import java.util.Calendar;\r
-import java.util.Date;\r
-import java.util.GregorianCalendar;\r
import java.util.List;\r
\r
import javax.jcr.Node;\r
import javax.jcr.NodeIterator;\r
import javax.jcr.RepositoryException;\r
-import javax.jcr.Workspace;\r
import javax.jcr.query.Query;\r
-import javax.jcr.query.QueryManager;\r
\r
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
import org.argeo.jcr.JcrUtils;\r
-import org.argeo.jcr.NodeMapper;\r
import org.argeo.slc.SlcException;\r
import org.argeo.slc.dao.runtime.SlcAgentDescriptorDao;\r
import org.argeo.slc.runtime.SlcAgentDescriptor;\r
private final static Log log = LogFactory\r
.getLog(SlcAgentDescriptorDaoJcr.class);\r
\r
- private Workspace workspace;\r
- private QueryManager queryManager;\r
- private NodeMapper nodeMapper;\r
- \r
- public void init() {\r
- try {\r
- workspace = getSession().getWorkspace();\r
- queryManager = workspace.getQueryManager();\r
- nodeMapper = getNodeMapperProvider().findNodeMapper(null);\r
- } catch (RepositoryException e) {\r
- throw new SlcException("Cannot initialize DAO", e);\r
- }\r
- }\r
-\r
public void create(SlcAgentDescriptor slcAgentDescriptor) {\r
- if (log.isDebugEnabled())\r
- log.debug("in SlcAgentDescriptorDaoJcr.create");\r
try {\r
nodeMapper.save(getSession(), basePath(slcAgentDescriptor),\r
slcAgentDescriptor);\r
getSession().save();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot import " + slcAgentDescriptor, e);\r
}\r
}\r
\r
public SlcAgentDescriptor getAgentDescriptor(String agentId) {\r
- try {\r
- // TODO: optimize query\r
- String queryString = "//agent[@uuid='" + agentId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
- Node node = JcrUtils.querySingleNode(query);\r
- if (node == null)\r
- return null;\r
- return (SlcAgentDescriptor) nodeMapper.load(node);\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot load Agent Descriptor" + agentId, e);\r
- }\r
+ // TODO: optimize query\r
+ String queryString = "//agent[@uuid='" + agentId + "']";\r
+ Query query = createQuery(queryString, Query.XPATH);\r
+ Node node = JcrUtils.querySingleNode(query);\r
+ if (node == null)\r
+ return null;\r
+ return (SlcAgentDescriptor) nodeMapper.load(node);\r
}\r
\r
public void delete(SlcAgentDescriptor slcAgentDescriptor) {\r
- if (log.isDebugEnabled())\r
- log.debug("slcAgentDescriptorDaoJcr.delete(slcAgentDescriptor)");\r
+ try {\r
+ String queryString = "//agent[@uuid='"\r
+ + slcAgentDescriptor.getUuid() + "']";\r
+ Query query = createQuery(queryString, Query.XPATH);\r
+ Node node = JcrUtils.querySingleNode(query);\r
+ if (node != null) {\r
+ node.remove();\r
+ getSession().save();\r
+ } else\r
+ log.warn("No node found for agent descriptor: "\r
+ + slcAgentDescriptor);\r
+ } catch (RepositoryException e) {\r
+ throw new SlcException("Cannot delete " + slcAgentDescriptor, e);\r
+ }\r
\r
}\r
\r
public void delete(String agentId) {\r
- if (log.isDebugEnabled())\r
- log.debug("slcAgentDescriptorDaoJcr.delete(agentID)");\r
try {\r
// TODO: optimize query\r
String queryString = "//agent[@uuid='" + agentId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
Node node = JcrUtils.querySingleNode(query);\r
if (node != null)\r
node.remove();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot find AgentDescriptor" + agentId, e);\r
}\r
\r
}\r
\r
public List<SlcAgentDescriptor> listSlcAgentDescriptors() {\r
- if (log.isDebugEnabled())\r
- log.debug("slcAgentDescriptorDaoJcr.delete(agentID)");\r
-\r
try {\r
String queryString = "//agent";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
\r
List<SlcAgentDescriptor> listSad = new ArrayList<SlcAgentDescriptor>();\r
\r
NodeIterator ni = query.execute().getNodes();\r
while (ni.hasNext()) {\r
Node curNode = (Node) ni.next();\r
- JcrUtils.debug(curNode);\r
+ // JcrUtils.debug(curNode);\r
listSad.add((SlcAgentDescriptor) nodeMapper.load(curNode));\r
}\r
\r