refactoring org to uk
[vamsas.git] / src / org / vamsas / test / simpleclient / ArchiveWatcher.java
index 8340413..08a6522 100644 (file)
@@ -4,48 +4,98 @@ import java.io.File;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.vamsas.client.simpleclient.FileWatcher;
-import org.vamsas.client.simpleclient.Lock;
-import org.vamsas.client.simpleclient.SimpleDocument;
-import org.vamsas.client.simpleclient.VamsasArchiveReader;
-import org.vamsas.objects.core.VamsasDocument;
+
+import uk.ac.vamsas.client.ClientHandle;
+import uk.ac.vamsas.client.simpleclient.FileWatcher;
+import uk.ac.vamsas.client.simpleclient.Lock;
+import uk.ac.vamsas.client.simpleclient.SimpleDocument;
+import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader;
+import uk.ac.vamsas.client.simpleclient.VamsasFile;
+import uk.ac.vamsas.objects.core.VamsasDocument;
 /**
  * demo of archive watching process - should mimic the clientsfileTest watcher/monitor process.
  * @author jimp
  *
  */
 public class ArchiveWatcher {
-  private static Log log = LogFactory.getLog(ArchiveWatcher.class); 
+  private static Log log = LogFactory.getLog(ArchiveWatcher.class);
+  private static CommandProcessor cproc=new CommandProcessor();
+  static {
+    cproc.addCommand("new", 0, "no args");
+    cproc.addCommand("delete", 0, "no args");    
+    cproc.addCommand("watch", 0, "no args");
+    cproc.addCommand("file", 1, "Need vamsas archive as argument.");    
+  }
+  
   public static void main(String[] args) {
     try {
+      
       if (args!=null && args.length>0) {
-        
         File archive = new File(args[0]);
         log.info("Watching file "+args[0]);
-/*        if (!archive.exists())
-          archive.createNewFile();
- */       // watch the new file... - taken straight from ClientsFileTest
-        FileWatcher w = new FileWatcher(archive);
-        while (true) {
-          
-          // get watcher's lock to ensure state change is fixed for retrieval
-          Lock chlock = w.getChangedState();
-          if (chlock != null)
-            if (archive.length()>0) {
-              log.info("Noticed Testing update: ");
-              VamsasArchiveReader vreader = new VamsasArchiveReader(archive);
-              SimpleDocument sdoc = new SimpleDocument("testing vamsas watcher");
-              try {
-                VamsasDocument d = sdoc.getVamsasDocument(vreader);
-                if (d!=null) {
-                  ArchiveReports.reportDocument(d, vreader, false, System.out);
+        int argc=1;
+        while (argc < args.length) {
+          // vars needed for operations
+          ClientHandle ch;
+          int com = cproc.getCommand(args, argc);
+          argc++;
+          switch (com) {
+          case 0:
+            // new
+            log.info("Doing locked deletion and new-file creation.");
+            {
+              if (!archive.exists())
+                archive.createNewFile();
+              VamsasFile sf = new VamsasFile(archive);
+              Lock l = sf.getLock();
+              archive.delete();
+              archive.createNewFile();
+              sf.unLock();
+            }
+            break;
+          case 1:
+            // delete
+            log.info("Deleting "+archive+" without locking it first.");
+            archive.delete();
+            break;
+          case 2:
+            // watch
+            log.info("Endlessly Watching file "+archive);
+            /*        if (!archive.exists())
+                      archive.createNewFile();
+             */       // watch the new file... - taken straight from ClientsFileTest
+            FileWatcher w = new FileWatcher(archive);
+            while (true) {              
+              // get watcher's lock to ensure state change is fixed for retrieval
+              Lock chlock = w.getChangedState();
+              if (chlock != null) {
+                log.info("Got lock on "+archive+(archive.exists() ? " exists l="+archive.length() : "(non existant)"));
+                if (archive.length()>0) {
+                  VamsasArchiveReader vreader = new VamsasArchiveReader(archive);
+                  SimpleDocument sdoc = new SimpleDocument("testing vamsas watcher");
+                  try {
+                    VamsasDocument d = sdoc.getVamsasDocument(vreader);
+                    if (d!=null) {
+                      ArchiveReports.reportDocument(d, vreader, false, System.out);
+                    }
+                    System.out.println("Update at "+System.currentTimeMillis()+"\n\n********************************************************\n");
+                  } catch (Exception e) {
+                    log.error("Unmarshalling failed.",e);
+                  }
+                  vreader.close();
+                  w.setState();
                 }
-                System.out.println("Update at "+System.currentTimeMillis()+"\n\n********************************************************\n");
-              } catch (Exception e) {
-                log.error("Unmarshalling failed.",e);
               }
-              vreader.close();
             }
+            // break;
+          case 3: // set file
+            archive = new File(args[argc++]);
+            break;
+          case 4:
+            break;
+            default:
+              log.warn("Unknown command  + "+args[argc++]);
+          }
         }
       }
     } catch (Exception e) {