]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java
Move org.argeo.slc.server
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / ws / process / SlcExecutionRequestEp.java
1 package org.argeo.slc.ws.process;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5
6 import org.argeo.slc.core.SlcException;
7 import org.argeo.slc.core.process.SlcExecution;
8 import org.argeo.slc.dao.process.SlcExecutionDao;
9 import org.argeo.slc.msg.process.SlcExecutionRequest;
10 import org.argeo.slc.msg.process.SlcExecutionStatusRequest;
11
12 import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint;
13
14 public class SlcExecutionRequestEp extends AbstractMarshallingPayloadEndpoint {
15
16 private Log log = LogFactory.getLog(getClass());
17
18 private final SlcExecutionDao slcExecutionDao;
19
20 public SlcExecutionRequestEp(SlcExecutionDao slcExecutionDao) {
21 this.slcExecutionDao = slcExecutionDao;
22 }
23
24 @Override
25 protected Object invokeInternal(Object requestObject) throws Exception {
26 if (requestObject instanceof SlcExecutionRequest) {
27
28 SlcExecutionRequest msg = (SlcExecutionRequest) requestObject;
29 SlcExecution slcExecutionMsg = msg.getSlcExecution();
30
31 SlcExecution slcExecutionPersisted = slcExecutionDao
32 .getSlcExecution(slcExecutionMsg.getUuid());
33 if (slcExecutionPersisted == null) {
34 if (log.isTraceEnabled())
35 log.trace("Creating SLC execution #"
36 + slcExecutionMsg.getUuid());
37
38 slcExecutionDao.create(slcExecutionMsg);
39 } else {
40 if (log.isTraceEnabled())
41 log.trace("Updating SLC execution #"
42 + slcExecutionMsg.getUuid());
43
44 slcExecutionDao.merge(slcExecutionMsg);
45 }
46 return null;
47
48 } else if (requestObject instanceof SlcExecutionStatusRequest) {
49 SlcExecutionStatusRequest msg = (SlcExecutionStatusRequest) requestObject;
50 SlcExecution slcExecution = slcExecutionDao.getSlcExecution(msg
51 .getSlcExecutionUuid());
52 if (slcExecution == null)
53 throw new SlcException("Could not find SLC execution #"
54 + msg.getSlcExecutionUuid());
55
56 slcExecution.setStatus(msg.getNewStatus());
57
58 if (log.isTraceEnabled())
59 log.trace("Updating status for SLC execution #"
60 + slcExecution.getUuid());
61
62 slcExecutionDao.update(slcExecution);
63 return null;
64 } else {
65 throw new SlcException("Unrecognized request format: "
66 + requestObject.getClass());
67 }
68 }
69 }