+++ /dev/null
-/**
- * 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 <vamsasFileDirectory> <vamsasSessionURN> <action> [+<arguments>]\n"
- +"<action> 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<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
- 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) {
- // do something with data
- // , update document, or something.
- // ..
-
- }
- // call finalizeClient
- vorbaclient.finalizeClient();
- // { meanwhile, eventHandlers are called to do any saves if need be }
- // and all registered listeners will be deregistered to avoid deadlock.
-
- // finish
- }
-}