formatting
authorjprocter <jprocter@compbio.dundee.ac.uk>
Fri, 31 Aug 2007 16:12:25 +0000 (16:12 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Fri, 31 Aug 2007 16:12:25 +0000 (16:12 +0000)
git-svn-id: https://svn.lifesci.dundee.ac.uk/svn/repository/trunk@454 be28352e-c001-0410-b1a7-c7978e42abec

src/uk/ac/vamsas/client/simpleclient/SimpleClientFactory.java

index 4093290..d709f5d 100644 (file)
@@ -1,12 +1,12 @@
-/*
-* VAMSAS Project
-*
-
-* 
-* Dec 13, 2006 
-*
-*/
+/**
+ * 
+ * VAMSAS Project
+ *
+ * 
+ * Dec 13, 2006 
+ *
+ */
+
 package uk.ac.vamsas.client.simpleclient;
 
 import java.io.File;
@@ -14,7 +14,6 @@ import java.io.File;
 import java.io.IOException;
 import java.net.MalformedURLException;
 
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -36,37 +35,36 @@ public class SimpleClientFactory implements IClientFactory {
   private static Log log = LogFactory.getLog(SimpleClientFactory.class);
 
   private File sessionArena = null;
-  
+
   private String vamsasSubdirectoryName = ".vamsas";
-  
- private SimpleSessionManager sessionManager = null;
-  private static final String SESSION_LIST="sessions.obj";
-  
+
+  private SimpleSessionManager sessionManager = null;
+
+  private static final String SESSION_LIST = "sessions.obj";
+
   // private String[] currentlyAvailableDessions = null;
-  
+
   /**
    * default constructor - called by CreateClientFactory only.
    * 
    * Inits the sessionarena to the directory .vamsas of the user home directory.
    * 
    */
-  public SimpleClientFactory() throws IOException
-  {
-   // sessionArena
-    
+  public SimpleClientFactory() throws IOException {
+    // sessionArena
+
     // retrieves user home directory
     String userHomeDirectory = System.getProperty("user.home");
-    if (userHomeDirectory == null || userHomeDirectory.length()<1)
-      {
-        new IOException("Unable to detect user home directory");
-      }
-    String sessionArenaPath =  userHomeDirectory.concat(File.separator.concat(this.vamsasSubdirectoryName));
-    
+    if (userHomeDirectory == null || userHomeDirectory.length() < 1) {
+      new IOException("Unable to detect user home directory");
+    }
+    String sessionArenaPath = userHomeDirectory.concat(File.separator
+        .concat(this.vamsasSubdirectoryName));
+
     this.initSessionArena(sessionArenaPath);
-   // this.initFactoryObjects();
+    // this.initFactoryObjects();
   }
-  
-  
+
   /**
    * Create a client factory that works with sessions at the given path.
    * 
@@ -74,10 +72,10 @@ public class SimpleClientFactory implements IClientFactory {
    *          path to directory called session arena, where will be created
    *          session directories and session files.
    */
-  public SimpleClientFactory(String path) throws IOException
-  {
+  public SimpleClientFactory(String path) throws IOException {
     this.initSessionArena(path);
   }
+
   /**
    * Inits sessionArena to a given path. checks if path is valid.
    * 
@@ -86,32 +84,24 @@ public class SimpleClientFactory implements IClientFactory {
    * @throws IOException
    *           if the path is incorrect
    */
-  private void  initSessionArena (String path) throws IOException
-  {
+  private void initSessionArena(String path) throws IOException {
     // Check path is valid and read/writeable.
-    File arenaFile = new File (path);
-    if (!arenaFile.exists())
-    {
-      if (! arenaFile.mkdirs())
-      {
+    File arenaFile = new File(path);
+    if (!arenaFile.exists()) {
+      if (!arenaFile.mkdirs()) {
         this.sessionArena = null;
-        throw(new IOException("Unable to create a directory called "+path));
+        throw (new IOException("Unable to create a directory called " + path));
       }
     }
-    if (arenaFile.exists() && arenaFile.isDirectory() && arenaFile.canRead() && arenaFile.canWrite()) 
-      {
-        this.sessionArena = arenaFile;
-      } 
-    else
-      {
+    if (arenaFile.exists() && arenaFile.isDirectory() && arenaFile.canRead()
+        && arenaFile.canWrite()) {
+      this.sessionArena = arenaFile;
+    } else {
       this.sessionArena = null;
-        throw(new IOException("Cannot read and write to a directory called "+path));
-      }
+      throw (new IOException("Cannot read and write to a directory called "
+          + path));
+    }
   }
-  
-  
-
-  
 
   /**
    * @see uk.ac.vamsas.client.IClientFactory#getIClient(uk.ac.vamsas.client.ClientHandle)
@@ -134,84 +124,84 @@ public class SimpleClientFactory implements IClientFactory {
    *      java.lang.String)
    */
   public IClient getIClient(ClientHandle applicationHandle, String sessionUrn) {
-// locate session from Urn
+    // locate session from Urn
     // check that clientHandle is unique (with default user) - if not update the
     // clientHandle urn to make it unique.
     // wait for lock and attach to session
     // create SimpleClient instance
-    log.debug("Trying to create session with URN "+sessionUrn);
+    log.debug("Trying to create session with URN " + sessionUrn);
     return this.getIClient(applicationHandle, null, sessionUrn);
-  
+
   }
 
-  private File convertSessionUrnToFile(String sessionUrn) throws InvalidSessionUrnException
-  {
-    if (sessionUrn == null)
-      {
-        log.debug("Incorrect URN: can not open session.");
-        throw new InvalidSessionUrnException();
-      }
-    
+  private File convertSessionUrnToFile(String sessionUrn)
+      throws InvalidSessionUrnException {
+    if (sessionUrn == null) {
+      log.debug("Incorrect URN: can not open session.");
+      throw new InvalidSessionUrnException();
+    }
+
     SessionUrn urn = new SessionUrn(sessionUrn);
-   return urn.asFile();
-    
+    return urn.asFile();
+
   }
-  
+
   /**
    * @see uk.ac.vamsas.client.IClientFactory#getIClient(uk.ac.vamsas.client.ClientHandle,
    *      uk.ac.vamsas.client.UserHandle, java.lang.String)
    */
   public IClient getIClient(ClientHandle applicationHandle, UserHandle userId,
       String sessionUrn) {
-// locate session from Urn
+    // locate session from Urn
     // check Uniqueness of user + ClientHandle in the session. Update
     // clientHandle urn accordingly.
     // wait for lock, attach to session
     // create client instance
     IClient client = null;
-    
+
     try {
       File sessionDirectory = this.convertSessionUrnToFile(sessionUrn);
       // create session
-      log.debug("found session directory "+sessionDirectory.getAbsolutePath());
+      log
+          .debug("found session directory "
+              + sessionDirectory.getAbsolutePath());
       VamsasSession vamsasSession = new VamsasSession(sessionDirectory);
-   /*
-     * if (userId == null) { //create a default userHandle //with current OS
-     * user and hostname userId = new UserHandle(System.getProperty("user.name",
-     * System.getProperty("USERNAME","Joe Doe")),
-     * System.getProperty("host.name",System.getProperty("HOSTNAME", "Unknown")
-     * ));// clientName, clientVersion, sessionPath); }
-     * 
-     * 
-     * //create simple client client = new SimpleClient(userId,
-     * applicationHandle, vamsasSession);
-     */
+
+      /*
+       * if (userId == null) { //create a default userHandle //with current OS
+       * user and hostname userId = new UserHandle(System.getProperty("user.name",
+       * System.getProperty("USERNAME","Joe Doe")),
+       * System.getProperty("host.name",System.getProperty("HOSTNAME", "Unknown")
+       * ));// clientName, clientVersion, sessionPath); }
+       * 
+       * 
+       * //create simple client client = new SimpleClient(userId,
+       * applicationHandle, vamsasSession);
+       */
       client = this.initClient(sessionDirectory, userId, applicationHandle);
     } catch (MalformedURLException e) {
-      log.error("error while creating new IClient: incorrect session urn",e);
+      log.error("error while creating new IClient: incorrect session urn", e);
       client = null;
-     
+
     } catch (InvalidSessionUrnException e) {
-      log.error("error while creating new IClient: incorrect session urn",e);
+      log.error("error while creating new IClient: incorrect session urn", e);
       client = null;
     } catch (IOException e) {
-      log.error("error while creating new IClient: file access error",e);
+      log.error("error while creating new IClient: file access error", e);
       client = null;
     }
     return client;
   }
 
-  
-  private IClient initClient( File sessdir, UserHandle userId, ClientHandle clientHandle) throws IOException, InvalidSessionUrnException
-  {
+  private IClient initClient(File sessdir, UserHandle userId,
+      ClientHandle clientHandle) throws IOException, InvalidSessionUrnException {
     IClient client = null;
     // create session
     VamsasSession vamsasSession = new VamsasSession(sessdir);
-  
-    this.getSessionManager().addSession(new SessionHandle(new SessionUrn(vamsasSession).getSessionUrn()));
-    if (userId == null)
-    {
+
+    this.getSessionManager().addSession(
+        new SessionHandle(new SessionUrn(vamsasSession).getSessionUrn()));
+    if (userId == null) {
       // create a default userHandle
       // userId = new UserHandle(System.getProperty("user.name",
       // System.getProperty("USERNAME","Joe Doe")),
@@ -219,40 +209,38 @@ public class SimpleClientFactory implements IClientFactory {
       // "Unknown") ));// clientName, clientVersion, sessionPath);
       userId = new UserHandle(null, null);
     }
-    
+
     // FullName and organisation should not be null (otherwise UserHandle equals
     // method raises an java.lang.NullPointerException )
     // use current OS user and hostname, if null
-    if ( userId.getFullName() == null)
-      {
-        userId.setFullName(System.getProperty("user.name", System.getProperty("USERNAME","Joe Doe")));
+    if (userId.getFullName() == null) {
+      userId.setFullName(System.getProperty("user.name", System.getProperty(
+          "USERNAME", "Joe Doe")));
+    }
+
+    if (userId.getOrganization() == null) {
+      userId.setOrganization(System.getProperty("host.name", System
+          .getProperty("HOSTNAME", "Unknown")));
+    }
+
+    if (clientHandle == null)
+      clientHandle = new ClientHandle("SimpleVamsasClientApp", "0.1");
+    else {
+      if (clientHandle.getClientName() == null) {
+        clientHandle.setClientName("SimpleVamsasClientApp");
       }
-        
-    if (userId.getOrganization() == null)
-      {
-        userId.setOrganization( System.getProperty("host.name",System.getProperty("HOSTNAME", "Unknown") ));
+      if (clientHandle.getVersion() == null) {
+        clientHandle.setVersion("0.1");
       }
-      
-    if (clientHandle == null)
-      clientHandle = new ClientHandle("SimpleVamsasClientApp","0.1");
-     else
-       {
-         if (clientHandle.getClientName() == null)
-           {
-             clientHandle.setClientName("SimpleVamsasClientApp");
-           }
-         if (clientHandle.getVersion() == null)
-           {
-             clientHandle.setVersion("0.1");
-           }
-       }
-    
-  // create simple client
-     client = new SimpleClient(userId,  clientHandle,  vamsasSession);
-     vamsasSession.addClient((SimpleClient) client);
-     vamsasSession.setSessionManager(this.getSessionManager());
-     return client;
+    }
+
+    // create simple client
+    client = new SimpleClient(userId, clientHandle, vamsasSession);
+    vamsasSession.addClient((SimpleClient) client);
+    vamsasSession.setSessionManager(this.getSessionManager());
+    return client;
   }
+
   /**
    * @see uk.ac.vamsas.client.IClientFactory#getIClient(uk.ac.vamsas.client.ClientHandle,
    *      uk.ac.vamsas.client.UserHandle)
@@ -263,57 +251,51 @@ public class SimpleClientFactory implements IClientFactory {
     // register SimpleClient and UserHandles in session
     // create client instance
     IClient client = null;
-    if (this.sessionArena==null)
-      throw new Error("Improperly initialised SimpleClientFactory object - null sessionArena.");
-    
-    ClientHandle clientHandle =applicationHandle;
+    if (this.sessionArena == null)
+      throw new Error(
+          "Improperly initialised SimpleClientFactory object - null sessionArena.");
+
+    ClientHandle clientHandle = applicationHandle;
     // create default clientHandle with "SimpleVamsasClientApp","0.1",
     if (clientHandle == null)
-     clientHandle = new ClientHandle("SimpleVamsasClientApp","0.1");
-    else
-      {
-        if (clientHandle.getClientName() == null)
-        {
-          clientHandle.setClientName("SimpleVamsasClientApp");
-        }
-      
-    
-    if (clientHandle.getVersion() == null)
-      {
-        clientHandle.setVersion("0.1");
+      clientHandle = new ClientHandle("SimpleVamsasClientApp", "0.1");
+    else {
+      if (clientHandle.getClientName() == null) {
+        clientHandle.setClientName("SimpleVamsasClientApp");
       }
+
+      if (clientHandle.getVersion() == null) {
+        clientHandle.setVersion("0.1");
       }
+    }
     // check if any available session(s)
     String[] availableSessions = this.getCurrentSessions();
-    if (availableSessions != null) 
-      {// there are available sessions
-        if (availableSessions.length>1)
-          {// more than one session if available... can not choose
-          
-          // represents list of session as String
-            StringBuffer sessionURNs = new StringBuffer("");
-            for (int i = 0; i< availableSessions.length ; i++)
-              {
-                sessionURNs.append(availableSessions[i]+" ");
-              }
-            throw new  NoDefaultSessionException("Several sessions available, please pick one: "+sessionURNs);
-          }
-      
-        // check if only one session available. if yes, open it
-        if (availableSessions.length == 1)
-          {
-          // only one session available, open it.
-            return this.getIClient(clientHandle,  availableSessions[0]);
-          }
-        else {
-          log.debug("No active session found");
+    if (availableSessions != null) {// there are available sessions
+      if (availableSessions.length > 1) {// more than one session if available... can not choose
+
+        // represents list of session as String
+        StringBuffer sessionURNs = new StringBuffer("");
+        for (int i = 0; i < availableSessions.length; i++) {
+          sessionURNs.append(availableSessions[i] + " ");
         }
+        throw new NoDefaultSessionException(
+            "Several sessions available, please pick one: " + sessionURNs);
+      }
+
+      // check if only one session available. if yes, open it
+      if (availableSessions.length == 1) {
+        // only one session available, open it.
+        return this.getIClient(clientHandle, availableSessions[0]);
+      } else {
+        log.debug("No active session found");
       }
+    }
     // no session available - create a new one
-    
+
     client = clientInNewSession(userId, clientHandle);
     return client;
   }
+
   /**
    * 
    * @param userId
@@ -322,65 +304,58 @@ public class SimpleClientFactory implements IClientFactory {
    */
   private IClient clientInNewSession(UserHandle userId,
       ClientHandle clientHandle) {
+
     IClient client = null;
-    try 
-      {
-        // create sessionDirectory
-        File sessdir = File.createTempFile("sess", ".simpleclient", this.sessionArena);
-        log.debug("Creating new session  directory");
-        if (!(sessdir.delete() && sessdir.mkdir()))
-          throw new IOException("Could not make session directory "+sessdir);
-       client = this.initClient(sessdir, userId, clientHandle);
-      } 
-    catch (IOException e) 
-      {
-        log.error("error while creating new IClient",e);
-      }
-    catch (InvalidSessionUrnException e) 
-      {
-        log.error("Unable to create new IClient. The session urn is incorrect ",e);
-      }
-   
+    try {
+      // create sessionDirectory
+      File sessdir = File.createTempFile("sess", ".simpleclient",
+          this.sessionArena);
+      log.debug("Creating new session  directory");
+      if (!(sessdir.delete() && sessdir.mkdir()))
+        throw new IOException("Could not make session directory " + sessdir);
+      client = this.initClient(sessdir, userId, clientHandle);
+    } catch (IOException e) {
+      log.error("error while creating new IClient", e);
+    } catch (InvalidSessionUrnException e) {
+      log.error("Unable to create new IClient. The session urn is incorrect ",
+          e);
+    }
+
     return client;
   }
+
   /**
    * @see uk.ac.vamsas.client.IClientFactory#getCurrentSessions()
    */
   public String[] getCurrentSessions() {
-    String [] sessions = null;
+    String[] sessions = null;
     try {
-      sessions =this.getSessionManager().getCurrentSessions();
+      sessions = this.getSessionManager().getCurrentSessions();
     } catch (IOException e) {
-     log.error("Unable to get available sessions",e);
-     sessions = null;
+      log.error("Unable to get available sessions", e);
+      sessions = null;
     }
     return sessions;
   }
 
-
   /**
    * @return the sessionFile
    */
-  private SimpleSessionManager getSessionManager()  throws IOException
-    {
-      if (this.sessionManager == null)
-        {
-          this.sessionManager = new SimpleSessionManager( new File (this.sessionArena, SESSION_LIST));
-        }
-      return this.sessionManager;
+  private SimpleSessionManager getSessionManager() throws IOException {
+    if (this.sessionManager == null) {
+      this.sessionManager = new SimpleSessionManager(new File(
+          this.sessionArena, SESSION_LIST));
     }
-
+    return this.sessionManager;
+  }
 
   public IClient getNewSessionIClient(ClientHandle applicationHandle) {
     return clientInNewSession(null, applicationHandle);
   }
 
-
   public IClient getNewSessionIClient(ClientHandle applicationHandle,
       UserHandle userId) {
     return clientInNewSession(userId, applicationHandle);
   }
 
-  
-
 }