]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Detached UI architecture
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 5 Oct 2008 18:14:59 +0000 (18:14 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 5 Oct 2008 18:14:59 +0000 (18:14 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1710 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedAnswer.java
org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/DetachedExecutionServerImpl.java
org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java
org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiPart.java
org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/ui/UiStep.java

index 219ab781af914234b5373c3fce1ee0fbb493759b..55789a04696f0b3d1b6a92694547aacc222938e5 100644 (file)
@@ -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);
+               }
+       }
 }
index 718809ec01689017332d5767ad5d67f6a2b924e2..1a601310b309fdf99e22e979158671245f6874e3 100644 (file)
@@ -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;
        }
 
index 2c6429ded5ec9da0ded40a2b96bc1c2b884936e7..375bbab766dc2cfa972200266001b73fc643a398 100644 (file)
@@ -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);
        }
 
 }
index 84548d53ec7a378c6f14b662b6c84852e281adf7..7f3f2a91f608f688f0ac73c9a63c8f76f31d9ae3 100644 (file)
@@ -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;
+       }
+
 }
index 9c9d91493a057343fbd05fc5a81545f2096ee980..6daee02eca2f5a3aee0ad6280f494d4470e5b348 100644 (file)
@@ -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;
+       }
+
 }