]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcAgentDescriptorDaoJcr.java
Update headers
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / dao / SlcAgentDescriptorDaoJcr.java
index 91a14c0840c6572a3eeee3d280a5cabbf168591d..863dfb93c8e6fbae8cad48a46719bbe34e7e629b 100644 (file)
@@ -1,22 +1,31 @@
+/*\r
+ * Copyright (C) 2007-2012 Mathieu Baudier\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
 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
@@ -26,82 +35,69 @@ public class SlcAgentDescriptorDaoJcr extends AbstractSlcJcrDao implements
        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