From 9b8d1058ff19c4277e8dad545b81816823cbec4e Mon Sep 17 00:00:00 2001 From: jprocter Date: Fri, 12 Jun 2009 15:51:54 +0000 Subject: [PATCH] methods for importing anonymous vamsas documents into explicitly named sessions (e.g. temp file from URL). Suppress implementation Error messages if session update fails on first update. --- src/jalview/gui/VamsasApplication.java | 48 ++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/src/jalview/gui/VamsasApplication.java b/src/jalview/gui/VamsasApplication.java index 2879c2f..a62eeb5 100644 --- a/src/jalview/gui/VamsasApplication.java +++ b/src/jalview/gui/VamsasApplication.java @@ -72,18 +72,21 @@ public class VamsasApplication implements SelectionSource Desktop jdesktop = null; // our jalview desktop reference + private boolean inInitialUpdate=true; + // Cache.preferences for vamsas client session arena // preferences for check for default session at startup. // user and organisation stuff. - public VamsasApplication(Desktop jdesktop, File sessionPath) + public VamsasApplication(Desktop jdesktop, File sessionPath, String sessionName) { // JBPNote: // we should create a session URI from the sessionPath and pass it to // the clientFactory - but the vamsas api doesn't cope with that yet. this.jdesktop = jdesktop; - initClientSession(null, sessionPath); + initClientSession(null, sessionPath, sessionName); } + private static uk.ac.vamsas.client.IClientFactory getClientFactory() throws IOException { @@ -133,7 +136,12 @@ public class VamsasApplication implements SelectionSource * null or a valid vamsas document file * @return false if no vamsas connection was made */ - private boolean initClientSession(String sess, File vamsasDocument) + private void initClientSession(String sess, File vamsasDocument) + { + initClientSession(sess,vamsasDocument,null); + } + + private boolean initClientSession(String sess, File vamsasDocument, String newDocSessionName) { try { @@ -149,8 +157,14 @@ public class VamsasApplication implements SelectionSource } try { - vclient = clientfactory.openAsNewSessionIClient(app, + if (newDocSessionName!=null) + { + vclient = clientfactory.openAsNewSessionIClient(app, + vamsasDocument,newDocSessionName); + } else { + vclient = clientfactory.openAsNewSessionIClient(app, vamsasDocument); + } } catch (InvalidSessionDocumentException e) { JOptionPane @@ -252,9 +266,11 @@ public class VamsasApplication implements SelectionSource addDocumentUpdateHandler(); addStoreDocumentHandler(); startSession(); + inInitialUpdate = true; Cache.log .debug("Jalview loading the Vamsas Session for the first time."); dealWithDocumentUpdate(false); // we don't push an update out to the + inInitialUpdate = false; // document yet. Cache.log.debug("... finished update for the first time."); } @@ -302,6 +318,7 @@ public class VamsasApplication implements SelectionSource { Cache.log.info("Jalview updating to the Vamsas Session."); + dealWithDocumentUpdate(true); Cache.log.info("Jalview finished updating to the Vamsas Session."); } @@ -420,9 +437,11 @@ public class VamsasApplication implements SelectionSource * bindings is made. * * @param doc + * @return number of views stored in document (updated and new views) */ - public void updateVamsasDocument(IClientDocument doc) + public int updateVamsasDocument(IClientDocument doc) { + int storedviews=0; ensureJvVamsas(); errorsDuringUpdate = false; errorsDuringAppUpdate = false; @@ -434,7 +453,7 @@ public class VamsasApplication implements SelectionSource if (frames == null) { - return; + return 0; } Hashtable skipList = new Hashtable(); Hashtable viewset = new Hashtable(); @@ -471,6 +490,7 @@ public class VamsasApplication implements SelectionSource } else { + storedviews++; // could try to eliminate sequenceSetId from skiplist .. // (skipList.containsKey(af.getViewport().getSequenceSetId())) // remember sequenceSetId so we can skip all the other views on @@ -516,6 +536,7 @@ public class VamsasApplication implements SelectionSource errorsDuringAppUpdate = true; } vds.clearSkipList(); + return storedviews; } private Entry baseProvEntry() @@ -533,9 +554,11 @@ public class VamsasApplication implements SelectionSource * * @param fromJalview * true to update from jalview to the vamsas document + * @return total number of stored alignments in the document after the update */ - protected void dealWithDocumentUpdate(boolean fromJalview) + protected int dealWithDocumentUpdate(boolean fromJalview) { + int storedviews = 0; // called by update handler for document update. Cache.log.debug("Updating jalview from changed vamsas document."); disableGui(true); @@ -551,7 +574,7 @@ public class VamsasApplication implements SelectionSource } if (fromJalview) { - this.updateVamsasDocument(cdoc); + storedviews+=updateVamsasDocument(cdoc); if (Cache.log.isDebugEnabled()) { Cache.log @@ -593,10 +616,12 @@ public class VamsasApplication implements SelectionSource ee.printStackTrace(System.err); // recover object map backup, since its probably corrupted with references // to Vobjects that don't exist anymore. - this.recover_objectMappingBackup(); + recover_objectMappingBackup(); + storedviews=0; } Cache.log.debug("Finished updating from document change."); disableGui(false); + return storedviews; } private void addDocumentUpdateHandler() @@ -684,6 +709,11 @@ public class VamsasApplication implements SelectionSource { if (_backup_vobj2jv == null) { + if (inInitialUpdate) { + // nothing to recover so just + return; + } + throw new Error( "IMPLEMENTATION ERROR: Cannot recover vamsas object mappings - no backup was made."); } -- 1.7.10.2