From: Mathieu Baudier Date: Sun, 5 Oct 2008 18:14:59 +0000 (+0000) Subject: Detached UI architecture X-Git-Tag: argeo-slc-2.1.7~2483 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=68bdfe825ee5121c47851af05cc27c5092614752;hp=a2bd497169faf1c7fdacad42ee74248c96255eb4;p=gpl%2Fargeo-slc.git Detached UI architecture git-svn-id: https://svn.argeo.org/slc/trunk@1710 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedAnswer.java b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedAnswer.java index 219ab781a..55789a046 100644 --- a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedAnswer.java +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedAnswer.java @@ -5,11 +5,11 @@ import java.util.Properties; public class DetachedAnswer implements DetachedCommunication { static final long serialVersionUID = 1l; - public static int UNKOWN = -1; - public static int PROCESSED = 0; - public static int ERROR = 1; - public static int SKIPPED = 2; - public static int CLOSED_SESSION = 10; + public final static int UNKOWN = -1; + public final static int PROCESSED = 0; + public final static int ERROR = 1; + public final static int SKIPPED = 2; + public final static int CLOSED_SESSION = 10; private Properties properties = new Properties(); private int status = UNKOWN; @@ -62,4 +62,24 @@ public class DetachedAnswer implements DetachedCommunication { this.uuid = uuid; } + public String getStatusAsString() { + return convertStatus(getStatus()); + } + + public static String convertStatus(int status) { + switch (status) { + case UNKOWN: + return "UNKOWN"; + case PROCESSED: + return "PROCESSED"; + case SKIPPED: + return "SKIPPED"; + case ERROR: + return "ERROR"; + case CLOSED_SESSION: + return "CLOSED_SESSION"; + default: + throw new DetachedException("Unkown status " + status); + } + } } diff --git a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedExecutionServerImpl.java b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedExecutionServerImpl.java index 718809ec0..1a601310b 100644 --- a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedExecutionServerImpl.java +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedExecutionServerImpl.java @@ -29,8 +29,6 @@ public class DetachedExecutionServerImpl implements DetachedExecutionServer { public synchronized DetachedAnswer executeRequest(DetachedRequest request) { DetachedAnswer answer = null; try { - // DetachedStep step = null; - // Find action ServiceReference[] refs = bundleContext.getAllServiceReferences( StaticRefProvider.class.getName(), null); @@ -61,23 +59,18 @@ public class DetachedExecutionServerImpl implements DetachedExecutionServer { throw new DetachedException("Unknown action type " + obj.getClass() + " for action with ref " + request.getRef()); - } else { - log.info("Processed '" + request.getRef() + "' (path=" - + request.getPath() + ")"); } - - } catch (DetachedException e) { + } catch (Exception e) { answer = new DetachedAnswer(request); answer.setStatus(DetachedAnswer.ERROR); answer.setLog(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - throw new DetachedException( - "Unexpected exception while executing request " + request, - e); } getCurrentSession().getRequests().add(request); getCurrentSession().getAnswers().add(answer); + if (log.isDebugEnabled()) + log.debug("Processed '" + request.getRef() + "' (status=" + + answer.getStatusAsString() + ", path=" + + request.getPath() + ")"); return answer; } diff --git a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java index 2c6429ded..375bbab76 100644 --- a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java @@ -7,6 +7,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.text.SimpleDateFormat; +import java.util.Date; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; @@ -28,12 +30,16 @@ import org.springframework.beans.factory.InitializingBean; public class FileDriver extends AbstractDriver implements DetachedClient, InitializingBean { private final static Log log = LogFactory.getLog(FileDriver.class); + private final static SimpleDateFormat sdf = new SimpleDateFormat( + "yyMMdd_HHmmss_SSS"); private File baseDir; private File requestsDir; private File answersDir; private File processedRequestsDir; private File processedAnswersDir; + private File cleanedRequestsDir; + private File cleanedAnswersDir; private String lockFileExt = "lck"; private FileFilter notLockFileFilter = new NotFileFilter( @@ -77,8 +83,8 @@ public class FileDriver extends AbstractDriver implements DetachedClient, throws Exception { final File file; if (getXmlConverter() != null) - file = new File(dir.getPath() + File.separator + detCom.getUuid() - + ".xml"); + file = new File(dir.getPath() + File.separator + + sdf.format(new Date()) + '-' + detCom.getUuid() + ".xml"); else file = new File(dir.getPath() + File.separator + detCom.getUuid()); @@ -202,11 +208,17 @@ public class FileDriver extends AbstractDriver implements DetachedClient, + File.separator + "processed" + File.separator + "requests"); this.processedAnswersDir = new File(baseDir.getAbsolutePath() + File.separator + "processed" + File.separator + "answers"); + this.cleanedRequestsDir = new File(baseDir.getAbsolutePath() + + File.separator + "cleaned" + File.separator + "requests"); + this.cleanedAnswersDir = new File(baseDir.getAbsolutePath() + + File.separator + "cleaned" + File.separator + "answers"); createIfNotExist(requestsDir); createIfNotExist(answersDir); createIfNotExist(processedRequestsDir); createIfNotExist(processedAnswersDir); + createIfNotExist(cleanedRequestsDir); + createIfNotExist(cleanedAnswersDir); } } diff --git a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiPart.java b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiPart.java index 84548d53e..7f3f2a91f 100644 --- a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiPart.java +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiPart.java @@ -3,6 +3,30 @@ package org.argeo.slc.detached.ui; import org.argeo.slc.detached.DetachedContext; import org.argeo.slc.detached.DetachedRequest; -public interface UiPart { - public void init(DetachedContext context, DetachedRequest request); +public abstract class UiPart { + private boolean initialized = false; + + public synchronized final void init(DetachedContext context, + DetachedRequest request) { + initUi(context, request); + initialized = true; + } + + public synchronized final void reset(DetachedContext context, + DetachedRequest request) { + resetUi(context, request); + initialized = false; + } + + protected abstract void initUi(DetachedContext context, + DetachedRequest request); + + protected void resetUi(DetachedContext context, DetachedRequest request) { + + } + + public synchronized boolean isInitialized() { + return initialized; + } + } diff --git a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiStep.java b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiStep.java index 9c9d91493..6daee02ec 100644 --- a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiStep.java +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiStep.java @@ -4,13 +4,15 @@ import org.argeo.slc.detached.DetachedAnswer; import org.argeo.slc.detached.DetachedContext; import org.argeo.slc.detached.DetachedRequest; import org.argeo.slc.detached.DetachedStep; +import org.springframework.beans.factory.BeanNameAware; -public abstract class UiStep implements DetachedStep { +public abstract class UiStep implements DetachedStep, BeanNameAware { private UiPart uiPart; + private String beanName; public final DetachedAnswer execute(DetachedContext detachedContext, DetachedRequest detachedStepRequest) { - uiPart.init(detachedContext, detachedStepRequest); + // uiPart.init(detachedContext, detachedStepRequest); return executeUiStep(detachedContext, detachedStepRequest); } @@ -25,4 +27,12 @@ public abstract class UiStep implements DetachedStep { this.uiPart = uiPart; } + public void setBeanName(String name) { + this.beanName = name; + } + + public String getBeanName() { + return beanName; + } + }