X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjcr%2Fdao%2FSlcExecutionDaoJcr.java;h=67ebefd82d1337caba584a352a77249dd9fee60c;hb=4663b42433ba4a16c81d90927aecff2a923cd7a4;hp=d2626f69aab058e88fed95e7e05b68bc9961e2a4;hpb=dfe0c5ca8925056d9483a180d72ab7607e28b03a;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java index d2626f69a..67ebefd82 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.argeo.slc.jcr.dao; import java.util.ArrayList; @@ -9,39 +25,20 @@ import java.util.List; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; -import javax.jcr.Workspace; import javax.jcr.query.Query; -import javax.jcr.query.QueryManager; import javax.jcr.query.QueryResult; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.jcr.JcrUtils; -import org.argeo.jcr.NodeMapper; -import org.argeo.jcr.NodeMapperProvider; import org.argeo.slc.SlcException; import org.argeo.slc.dao.process.SlcExecutionDao; import org.argeo.slc.process.SlcExecution; import org.argeo.slc.process.SlcExecutionStep; -public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements SlcExecutionDao { +public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements + SlcExecutionDao { private final static Log log = LogFactory.getLog(SlcExecutionDaoJcr.class); - private Workspace workspace; - private QueryManager queryManager; - - private NodeMapper nodeMapper; - private NodeMapperProvider nodeMapperProvider; - - public void init() { - try { - workspace = getSession().getWorkspace(); - queryManager = workspace.getQueryManager(); - nodeMapper = nodeMapperProvider.findNodeMapper(null); - - } catch (RepositoryException e) { - throw new SlcException("Cannot initialize DAO", e); - } - } public void addSteps(String slcExecutionId, List additionalSteps) { @@ -53,15 +50,12 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements SlcExecutio } public void create(SlcExecution slcExecution) { - if (log.isDebugEnabled()) - log.debug("create"); - try { - nodeMapper.save(getSession(), basePath(slcExecution), - slcExecution); + nodeMapper.save(getSession(), basePath(slcExecution), slcExecution); getSession().save(); - } catch (Exception e) { - throw new SlcException("Cannot create slcExecution" + slcExecution, e); + } catch (RepositoryException e) { + throw new SlcException("Cannot create slcExecution" + slcExecution, + e); } } @@ -69,37 +63,29 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements SlcExecutio Calendar cal = new GregorianCalendar(); cal.setTime(new Date()); // cal.setTime(slcExecution.getStartDate()); - return "/slc/processes/" + JcrUtils.hostAsPath(slcExecution.getHost()) - + '/' + JcrUtils.dateAsPath(cal) + "process"; + String host = slcExecution.getHost(); + if (host == null) + host = "UNKOWNHOST"; + return "/slc/processes/" + JcrUtils.hostAsPath(host) + '/' + + JcrUtils.dateAsPath(cal) + "process"; } - public SlcExecution getSlcExecution(String uuid) { - if (log.isDebugEnabled()) - log.debug("getSlcExecution"); - - try { - // TODO: optimize query - String queryString = "//process[@uuid='" + uuid + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); - Node node = JcrUtils.querySingleNode(query); - if (node == null) - return null; - return (SlcExecution) nodeMapper.load(node); - } catch (Exception e) { - throw new SlcException("Cannot load SLC execution " + uuid, e); - } + // TODO: optimize query + String queryString = "//process[@uuid='" + uuid + "']"; + Query query = createQuery(queryString, Query.XPATH); + Node node = JcrUtils.querySingleNode(query); + if (node == null) + return null; + return (SlcExecution) nodeMapper.load(node); } public List listSlcExecutions() { - if (log.isDebugEnabled()) - log.debug("listSlcExecutions"); - List res = new ArrayList(); // TODO: optimize query String queryString = "//process"; try { - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); QueryResult qr = query.execute(); NodeIterator iterator = qr.getNodes(); while (iterator.hasNext()) { @@ -109,7 +95,7 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements SlcExecutio res.add(slcExecution); } return res; - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot list SLC executions", e); } } @@ -119,24 +105,29 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements SlcExecutio } public void update(SlcExecution slcExecution) { - if (log.isDebugEnabled()) - log.debug("update"); - // TODO: optimize query String queryString = "//process[@uuid='" + slcExecution.getUuid() + "']"; try { - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); Node node = JcrUtils.querySingleNode(query); nodeMapper.update(node, slcExecution); getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot update " + slcExecution, e); } } - //IoC - public void setNodeMapperProvider(NodeMapperProvider nodeMapperProvider) { - this.nodeMapperProvider = nodeMapperProvider; + public List tailSteps(String slcExecutionId, + Integer nbrOfSteps) { + log.error("Method not implemented, returning an empty list."); + return new ArrayList(); } + + public List tailSteps(String slcExecutionId, + String slcExecutionStepId) { + log.error("Method not implemented, returning an empty list."); + return new ArrayList(); + } + }