refactoring org to uk - never use f**ng eclipse
[vamsas.git] / src / org / vamsas / test / ExampleApplication.java
index 297d48d..b6597be 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/**
  * Created on 14-Sep-2005
  *
  * TODO To change the template for this generated file go to
@@ -6,11 +6,12 @@
  */
 package org.vamsas.test;
 
-import org.vamsas.client.*;
+import uk.ac.vamsas.client.*;
 
 import java.awt.Event;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
+import java.io.IOException;
 import java.util.Vector;
 /**
  * Toy vamsas command line client application demonstrating the API.
@@ -20,7 +21,7 @@ import java.util.Vector;
 
 public class ExampleApplication {
   private static ClientHandle app;
-  private static UserHandle user;
+  private static UserHandle user; // TODO: make this something defined by the api
   private static IClientFactory clientfactory;
   private static IClient vorbaclient;
   private static byte[] mydata;
@@ -80,7 +81,15 @@ public class ExampleApplication {
         System.out.println("Session "+evt.getPropertyName()+" is shutting down.");
         // tell app to finalize its session data before shutdown.
       }
-    });        
+    });
+    vorbaclient.addVorbaEventHandler(Events.DOCUMENT_FINALIZEAPPDATA, 
+        new PropertyChangeListener() {
+      public void propertyChange(PropertyChangeEvent evt) {
+        System.out.println("Application received a DOCUMENT_FINALIZEAPPDATA event.");
+        // tell app to finalize its session data prior to the storage of the current session as an archive.
+      }
+    });
+    
   }
   public static String 
        Usage="ExampleApplication <vamsasFileDirectory> <vamsasSessionURN> <action> [+<arguments>]\n"
@@ -90,21 +99,49 @@ public class ExampleApplication {
     return true; // incorrect arguments.
   }
   public static void main(String[] args) {
-    if ((args.length<=2) || parseArgs(args)) {
+    if ((args.length<=2) || !parseArgs(args)) {
       System.err.print(Usage);
     }
 
     // get IClientFactory
-    clientfactory = new org.vamsas.client.SimpleClientFactory(args[0]);
+    try {
+      clientfactory = new uk.ac.vamsas.client.simpleclient.SimpleClientFactory(args[0]);
+    } catch (IOException e) {
+      System.err.println(e+"\n"+Usage);
+      System.exit(1);
+    }
     
     // get an Iclient with session data
     app = new ClientHandle("org.vamsas.test.ExampleApplication","0.1");
     user = new UserHandle("arnolduser","deathsdoor");
-    vorbaclient = clientfactory.getIClient(app, user);
+    try {
+      vorbaclient = clientfactory.getIClient(app, user);
+    } catch (NoDefaultSessionException e) {
+      System.err.println("There appear to be several sessions to choose from :");
+      String[] sessions = clientfactory.getCurrentSessions();
+      for (int s=0;s<sessions.length; s++)
+        System.err.println(sessions[s]);
+      System.exit(2);
+    }
     addHandlers(vorbaclient);
+    try {
+      vorbaclient.joinSession();
+    }
+    catch (Exception se) {
+      se.printStackTrace();
+      System.err.println(se+" when joining session.\n"+Usage);
+      System.exit(1);
+    }
     // register an update listener and a close listener.
     // get document data
-    processVamsasDocument(vorbaclient.getClientDocument());
+    try {
+      IClientDocument cdoc = vorbaclient.getClientDocument();
+      processVamsasDocument(cdoc);
+    } catch (Exception e) {
+      System.err.println("Unexpected exception when retrieving the client document for the first time!");
+      e.printStackTrace(System.err);
+      System.exit(1);
+    }
 
     // Main application event loop - wait around and do stuff...
     while (!isShuttingdown) {