X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Forg%2Fvamsas%2Fclient%2Fsimpleclient%2FSimpleClientFactory.java;h=c6d168708a076ce1cdf6d1f8e6d103b2b6cd6d1f;hb=43ba16c5dc20e182c8d48db1f32962bad747f999;hp=73d7ae95198d557ffe01804db3d2c70bd4491cbf;hpb=6d90708f65a2bf9c25759e482661b5ca81fe2f8a;p=vamsas.git diff --git a/src/org/vamsas/client/simpleclient/SimpleClientFactory.java b/src/org/vamsas/client/simpleclient/SimpleClientFactory.java index 73d7ae9..c6d1687 100644 --- a/src/org/vamsas/client/simpleclient/SimpleClientFactory.java +++ b/src/org/vamsas/client/simpleclient/SimpleClientFactory.java @@ -3,6 +3,8 @@ package org.vamsas.client.simpleclient; import java.io.File; import java.io.IOException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.vamsas.client.ClientHandle; import org.vamsas.client.IClient; import org.vamsas.client.IClientFactory; @@ -14,7 +16,8 @@ import org.vamsas.client.UserHandle; * */ public class SimpleClientFactory implements IClientFactory { - + private static Log log = LogFactory.getLog(SimpleClientFactory.class); + File sessionArena; /** @@ -81,7 +84,37 @@ public class SimpleClientFactory implements IClientFactory { // create client instance return null; } - + /** + * make a new vamsas session from the data in the archive vamsasdocument + * @param applicationHandle + * @param userId + * @param vamsasdocument + * @return + */ + public IClient openSession(ClientHandle applicationHandle, UserHandle userId, ArchiveUrn vamsasdocument) throws IOException { + // verify applicationHandle and userId + // TODO: verify applicationHandle and userId + // verify vamsasdocument is a valid document. + File vamdoc = vamsasdocument.asFile(); + log.debug("Starting new session with data from "+vamsasdocument.getSessionUrn()+"(File is : "+vamdoc+")"); + VamsasArchiveReader archive = new VamsasArchiveReader(vamdoc); + // TODO: a real validity test. The below just checks it can be read. + if (!archive.isValid()) + throw new IOException(vamsasdocument.getSessionUrn()+" is not a valid vamsasDocument archive."); + // create new session directory + if (sessionArena==null) + throw new Error("Improperly initialised SimpleClientFactory object - null sessionArena."); + File sessdir = File.createTempFile("sess", ".simpleclient", sessionArena); + if (!(sessdir.delete() && sessdir.mkdir())) + throw new IOException("Could not make session directory "+sessdir); + VamsasSession sess = new VamsasSession(sessdir); + // copy document into session directory + sess.setVamsasDocument(vamsasdocument.asFile()); + // create client instance and return. + SimpleClient client = new SimpleClient(userId, applicationHandle, sess); + + return client; + } public static void main(String[] args) { } }