/** * Created on 14-Sep-2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package org.vamsas.test; 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. * * @author jimp */ public class ExampleApplication { private static ClientHandle app; private static UserHandle user; // TODO: make this something defined by the api private static IClientFactory clientfactory; private static IClient vorbaclient; private static byte[] mydata; private static Vector vamsasObjects; private static boolean isUpdated = false; private static boolean isShuttingdown = false; private static boolean isFinalizing = false; private static void processVamsasDocument(IClientDocument doc) { // merge vamsasObjects with vamsas objects in document // get this apps 'mydata' if it hasn't got it already. // .. access this application's 'public' mydata' if there is any. } private static void addHandlers(IClient avorbaclient) { // make a non-volatile reference to the client instance. final IClient vorbaclient = avorbaclient; // register update handler vorbaclient.addDocumentUpdateHandler(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { System.out.println("Vamsas document update for "+evt.getPropertyName() +": "+evt.getOldValue()+" to "+evt.getNewValue()); // merge new data into ours. isUpdated=true; // tell main thread to reflect change... } }); // register close handler vorbaclient.addVorbaEventHandler(Events.DOCUMENT_REQUESTTOCLOSE, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { System.out.println("Received request to close vamsas document."); // ask user for a filename to save it to. // Then pass it to the vorba object... vorbaclient.storeDocument(new java.io.File("UserLocation")); } }); // register some more handlers to monitor the session : vorbaclient.addVorbaEventHandler(Events.CLIENT_CREATION, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { System.out.println("New Vamsas client for "+evt.getPropertyName() +": "+evt.getOldValue()+" to "+evt.getNewValue()); // tell app add new client to its list of clients. } }); vorbaclient.addVorbaEventHandler(Events.CLIENT_FINALIZATION, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { System.out.println("Vamsas client finalizing for "+evt.getPropertyName() +": "+evt.getOldValue()+" to "+evt.getNewValue()); // tell app to update its list of clients to communicate with. } }); vorbaclient.addVorbaEventHandler(Events.SESSION_SHUTDOWN, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { 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 [+]\n" +" is one of :\n\tsave,update,close,watch"; private static boolean parseArgs(String args[]) { return true; // incorrect arguments. } public static void main(String[] args) { if ((args.length<=2) || !parseArgs(args)) { System.err.print(Usage); } // get IClientFactory 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"); 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