From ddfeb77416eb3e504da4d6c1e7248facc911d3ba Mon Sep 17 00:00:00 2001 From: jprocter Date: Fri, 17 Aug 2007 14:45:35 +0000 Subject: [PATCH] formatting changes git-svn-id: https://svn.lifesci.dundee.ac.uk/svn/repository/trunk@435 be28352e-c001-0410-b1a7-c7978e42abec --- src/uk/ac/vamsas/test/ExampleApplication.java | 550 +++++++++++++------------ 1 file changed, 279 insertions(+), 271 deletions(-) diff --git a/src/uk/ac/vamsas/test/ExampleApplication.java b/src/uk/ac/vamsas/test/ExampleApplication.java index 3bebe6d..826a8eb 100644 --- a/src/uk/ac/vamsas/test/ExampleApplication.java +++ b/src/uk/ac/vamsas/test/ExampleApplication.java @@ -37,27 +37,29 @@ import java.util.Vector; * Then a while loop waits around for events until shutdown: * - currently it will shutdown after 9 updates (totalUpdates) * - an update will be made after every other update that is detected. - * - * Status: PickManager now shuts down correctly. Serial updates for two instances work correctly and are detected under j1.4 (need to test in 1.5 and 1.6). * - * TODO: test - * appData get/set methods + * Status: PickManager now shuts down correctly. Serial updates for two + * instances work correctly and are detected under j1.4 (need to test in 1.5 and + * 1.6). * - * TODO: verify and test pickManager and interaction - * between it and other session events + * TODO: test appData get/set methods + * + * TODO: verify and test pickManager and interaction between it and other + * session events * * TODO: add more session interaction events * - * TODO: test client add/leave events - currently library generates exceptions for sessionlist and clientlist modifications. + * TODO: test client add/leave events - currently library generates exceptions + * for sessionlist and clientlist modifications. * * @author jimp */ -public class ExampleApplication -{ +public class ExampleApplication { private ClientHandle app; private UserHandle user; // TODO: make this something defined by the + // api private IClientFactory clientfactory; @@ -73,34 +75,40 @@ public class ExampleApplication private boolean isShuttingdown = false; private boolean isFinalizing = false; + private int totalUpdates = 9; + private uk.ac.vamsas.client.VorbaId recover = null; - private int calls=0; + + private int calls = 0; + private long mdatahash = 0; + private long muserdatahash = 0; - - private void processVamsasDocument(IClientDocument doc) - { - if (doc.getVamsasRoots().length<4) { + + private void processVamsasDocument(IClientDocument doc) { + if (doc.getVamsasRoots().length < 4) { doc.addVamsasRoot(Core.getDemoVamsas()); } else { try { - uk.ac.vamsas.objects.core.DataSet ds = doc.getVamsasRoots()[1].getDataSet(0); - uk.ac.vamsas.objects.core.AlignmentSequence alsq = ds.getAlignment(0).getAlignmentSequence(0); - if (recover==null) - { + uk.ac.vamsas.objects.core.DataSet ds = doc.getVamsasRoots()[1] + .getDataSet(0); + uk.ac.vamsas.objects.core.AlignmentSequence alsq = ds.getAlignment(0) + .getAlignmentSequence(0); + if (recover == null) { recover = alsq.getVorbaId(); } else { Vobject recoverd = doc.getObject(recover); - System.out.println("Recovery of "+recover+" was "+((recoverd==null) ? "A FAILURE" : "SUCCESSFUL")); + System.out.println("Recovery of " + recover + " was " + + ((recoverd == null) ? "A FAILURE" : "SUCCESSFUL")); } - System.out.println("Modifying Sequence:\n"+alsq.hashCode()); - alsq.setSequence(alsq.getSequence()+ds.getAlignment(0).getGapChar()); - System.out.println("Modifying Sequence:\n"+alsq.hashCode()); - System.out.println("Modified Sequence:\n"+alsq.getSequence()); + System.out.println("Modifying Sequence:\n" + alsq.hashCode()); + alsq.setSequence(alsq.getSequence() + ds.getAlignment(0).getGapChar()); + System.out.println("Modifying Sequence:\n" + alsq.hashCode()); + System.out.println("Modified Sequence:\n" + alsq.getSequence()); doc.setVamsasRoots(doc.getVamsasRoots()); } catch (Exception ee) { - + } } // get this apps 'mydata' if it hasn't got it already. @@ -108,134 +116,141 @@ public class ExampleApplication try { processAppData(doc); System.out.println(".....Finished."); - } catch (Exception e) - { + } catch (Exception e) { System.err.println("Failed to process appdata for our application."); e.printStackTrace(System.err); } - - + // .. access this application's 'public' mydata' if there is any. vorbaclient.updateDocument(doc); // merge vamsasObjects with vamsas objects in document - + } - private int appdatareads=0; + + private int appdatareads = 0; + private void processAppData(IClientDocument doc) throws Exception { appdatareads++; - boolean writtenonce=false; - if (doc!=null) - { + boolean writtenonce = false; + if (doc != null) { uk.ac.vamsas.client.IClientAppdata appd = doc.getClientAppdata(); - if (appd.hasClientAppdata() && !(appdatareads % 2==0)) - { - //byte[] cappd = appd.getClientAppdata(); - //if (cappd!=null) - // System.out.println("Client appdata\n"+cappd.toString()+"\nEnd of Appdata\n"); + if (appd.hasClientAppdata() && !(appdatareads % 2 == 0)) { + // byte[] cappd = appd.getClientAppdata(); + // if (cappd!=null) + // System.out.println("Client appdata\n"+cappd.toString()+"\nEnd of + // Appdata\n"); System.out.println("Testing read from inputstream"); String cappds = readData(appd.getClientInputStream()); - System.out.println("Client appdata\n"+cappds+"\nEnd of Appdata\n"); + System.out.println("Client appdata\n" + cappds + "\nEnd of Appdata\n"); } else { - if (!writtenonce) - { - writtenonce=true; - // appd.setClientAppdata(makeappData("Client Appdata for "+user.toString()+" written")); - writeData(appd.getClientOutputStream(), "Client Appdata for all users written on "+appdatareads+" read by "+vorbaclient.getUserHandle()); + if (!writtenonce) { + writtenonce = true; + // appd.setClientAppdata(makeappData("Client Appdata for + // "+user.toString()+" written")); + writeData(appd.getClientOutputStream(), + "Client Appdata for all users written on " + appdatareads + + " read by " + vorbaclient.getUserHandle()); System.out.println("Written to ClientAppdata stream."); } } - if (appd.hasUserAppdata() && !(appdatareads % 2==0)) - { + if (appd.hasUserAppdata() && !(appdatareads % 2 == 0)) { byte[] cappd = appd.getUserAppdata(); - if (cappd!=null) - System.out.println("User appdata\n"+new String(cappd)+"\nEnd of Users' Appdata\n"); - else - { + if (cappd != null) + System.out.println("User appdata\n" + new String(cappd) + + "\nEnd of Users' Appdata\n"); + else { System.out.println("No user appdata."); - appd.setUserAppdata(("no default - overwritten null byte set on "+appdatareads+" read by "+vorbaclient.getUserHandle()+"").getBytes()); + appd.setUserAppdata(("no default - overwritten null byte set on " + + appdatareads + " read by " + vorbaclient.getUserHandle() + "") + .getBytes()); } - } else - if (!writtenonce) - { - writtenonce=true; - byte[] bts = makeappData("User Appdata for "+user+" written on "+appdatareads+" read at "); - System.out.println("Setting appData bytes to\n"+new String(bts)+"\nEnd."); + } else if (!writtenonce) { + writtenonce = true; + byte[] bts = makeappData("User Appdata for " + user + " written on " + + appdatareads + " read at "); + System.out.println("Setting appData bytes to\n" + new String(bts) + + "\nEnd."); appd.setUserAppdata(bts); System.out.println("Written to UserAppdata stream."); } } } - private byte[] makeappData(String message) - { + + private byte[] makeappData(String message) { StringBuffer sb = new StringBuffer(); sb.append(message); - sb.append("on "+new java.util.Date()); + sb.append("on " + new java.util.Date()); return sb.toString().getBytes(); } - private boolean writeData(AppDataOutputStream os, String message) - { + + private boolean writeData(AppDataOutputStream os, String message) { StringBuffer sb = new StringBuffer(); sb.append(message); - sb.append("on "+new java.util.Date()); + sb.append("on " + new java.util.Date()); try { ObjectOutputStream oos = new ObjectOutputStream(os); oos.writeObject(sb.toString()); oos.flush(); oos.close(); - } - catch (Exception e) { - System.err.println("Problem serialising this message:\n"+sb); + } catch (Exception e) { + System.err.println("Problem serialising this message:\n" + sb); e.printStackTrace(System.err); return false; } return true; } - private String readData(AppDataInputStream is) - { - try { - ObjectInputStream ois = new ObjectInputStream(is); - String rs = (String) ois.readObject(); - return rs; - } - catch (Exception e) - { - System.err.println("Failed to read a string from input stream!"); - e.printStackTrace(System.err); + + private String readData(AppDataInputStream is) { + if (is != null) { + try { + if (is.available() > 0) { + ObjectInputStream ois = new ObjectInputStream(is); + String rs = (String) ois.readObject(); + return rs; + } + } catch (Exception e) { + System.err.println("Failed to read a string from input stream!"); + e.printStackTrace(System.err); + } } return ""; } - private void addHandlers(IClient avorbaclient) - { + + private void addHandlers(IClient avorbaclient) { + final ExampleApplication me = this; // 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) - { + public void propertyChange(PropertyChangeEvent evt) { System.out.println("Vamsas document update for " - + evt.getPropertyName() + ": " + evt.getOldValue() - + " to " + evt.getNewValue()); + + evt.getPropertyName() + ": " + evt.getOldValue() + " to " + + evt.getNewValue()); // merge new data into ours. // example - output doc - try - { + try { IClientDocument cdoc = vorbaclient.getClientDocument(); - if (calls>2 && cdoc.getVamsasRoots().length>0 && !cdoc.getVamsasRoots()[0].is__stored_in_document()) - { - System.err.println("Pathological Update Detected - Document is zeroed!"); + if (calls > 2 && cdoc.getVamsasRoots().length > 0 + && !cdoc.getVamsasRoots()[0].is__stored_in_document()) { + System.err + .println("Pathological Update Detected - Document is zeroed!"); } calls++; - uk.ac.vamsas.test.simpleclient.ArchiveReports.rootReport( - cdoc.getVamsasRoots(), true, System.out); + uk.ac.vamsas.test.simpleclient.ArchiveReports.rootReport(cdoc + .getVamsasRoots(), true, System.out); // Simple update try { - if (cdoc.getVamsasRoots().length>2) { - uk.ac.vamsas.objects.core.DataSet ds = cdoc.getVamsasRoots()[1].getDataSet(0); - uk.ac.vamsas.objects.core.AlignmentSequence alsq = ds.getAlignment(0).getAlignmentSequence(0); + if (cdoc.getVamsasRoots().length > 2) { + uk.ac.vamsas.objects.core.DataSet ds = cdoc.getVamsasRoots()[1] + .getDataSet(0); + uk.ac.vamsas.objects.core.AlignmentSequence alsq = ds + .getAlignment(0).getAlignmentSequence(0); if (alsq.isUpdated()) System.out.println("Seqeuence was updated since last time."); - alsq.setSequence(alsq.getSequence()+ds.getAlignment(0).getGapChar()); - System.out.println("Newly Modified Sequence:\n"+alsq.getSequence()); + alsq.setSequence(alsq.getSequence() + + ds.getAlignment(0).getGapChar()); + System.out.println("Newly Modified Sequence:\n" + + alsq.getSequence()); cdoc.setVamsasRoots(cdoc.getVamsasRoots()); } } catch (Exception ee) { @@ -243,11 +258,9 @@ public class ExampleApplication ee.printStackTrace(System.err); } vorbaclient.updateDocument(cdoc); - } - catch (Exception e) - { + } catch (Exception e) { System.err - .println("Exception whilst dumping document tree after an update."); + .println("Exception whilst dumping document tree after an update."); e.printStackTrace(System.err); } isUpdated = true; // tell main thread to reflect change... @@ -256,145 +269,168 @@ public class ExampleApplication // 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")); - } - }); + 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. - } - }); + 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. - } - }); + 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. - } - }); + 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 void propertyChange(PropertyChangeEvent evt) { + boolean finalized = false; + System.out + .println("Application received a DOCUMENT_FINALIZEAPPDATA event."); + IClientDocument cdoc = null; + try { + cdoc = vorbaclient.getClientDocument(); + if (cdoc != null) { + IClientAppdata apd = cdoc.getClientAppdata(); + if (apd != null) { + String userd = ""; + if (apd.getUserAppdata()!=null) + { + userd = new String(apd.getUserAppdata()); + } + String appdat = me.readData(apd.getClientInputStream()); + me.writeData(apd.getClientOutputStream(), appdat + + "\nUser Data merged\n" + userd + "\n"); + } + finalized = true; + vorbaclient.updateDocument(cdoc); + } + // tell app to finalize its session data prior to the + // storage of the current session as an archive. + } catch (Exception e) { + if (!finalized) { + System.err + .println("Probable library problem - exception when trying to update document after writing merged appdata."); + e.printStackTrace(System.err); + } else { + System.err + .println("Recovering from exception when writing merged appdata"); + e.printStackTrace(System.err); + try { + if (cdoc != null) { + vorbaclient.updateDocument(cdoc); + } + } catch (Exception e2) { + System.err + .println("Probable library problem - exception when trying to update document after an exception when writing merged appdata."); + e2.printStackTrace(System.err); + } + } + return; + } + System.out.println("Application finalized appdata successfuly."); + } + }); } public String Usage = "ExampleApplication :/n [-arena ][-session ] [+]\n" - + " is one of :\n\tsave,update,close,watch"; + + " is one of :\n\tsave,update,close,watch"; String sess = null; - String importFile=null; - String outputFile=null; - private boolean parseArgs(String args[]) - { - if (args.length == 0) - { + + String importFile = null; + + String outputFile = null; + + private boolean parseArgs(String args[]) { + if (args.length == 0) { return false; } - int cpos=0; - boolean parsed=false; - while (!parsed && cposshutdown) - { - isShuttingdown=true; + if (System.currentTimeMillis() > shutdown) { + isShuttingdown = true; } } - try { Thread.sleep(50); } - catch (Exception e) {} + try { + Thread.sleep(50); + } catch (Exception e) { + } } System.out.println("Finalizing."); @@ -541,15 +551,11 @@ public class ExampleApplication vorbaclient.finalizeClient(); System.out.println("Shutting down picker."); picker.pm = null; - while (picker.isAlive()) - { + while (picker.isAlive()) { System.out.println("Waiting for picker to die..."); - try - { + try { Thread.sleep(1000); - } - catch (Exception e) - { + } catch (Exception e) { } ; } @@ -558,10 +564,12 @@ public class ExampleApplication // and all registered listeners will be deregistered to avoid deadlock. // finish + vorbaclient=null; + clientfactory=null; System.out.println("Byee!"); } - public static void main(String[] args) - { + + public static void main(String[] args) { ExampleApplication example = new ExampleApplication(); example.runMe(args); } -- 1.7.10.2