applied LGPLv3 and source code formatting.
[vamsas.git] / src / uk / ac / vamsas / test / simpleclient / simpleapp / VamsasDatastore.java
index aecf14f..c14598c 100644 (file)
@@ -1,26 +1,26 @@
 /*\r
- * VamsasClientSimpleApp - A framework for interoparable Sequence analysis\r
- * Copyright (C) 2006 VAMSAS\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
+ * This file is part of the Vamsas Client version 0.1. \r
+ * Copyright 2009 by Jim Procter, Iain Milne, Pierre Marguerite, \r
+ *  Andrew Waterhouse and Dominik Lindner.\r
+ * \r
+ * Earlier versions have also been incorporated into Jalview version 2.4 \r
+ * since 2008, and TOPALi version 2 since 2007.\r
+ * \r
+ * The Vamsas Client is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU Lesser General Public License as published by\r
+ * the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *  \r
+ * The Vamsas Client is distributed in the hope that it will be useful,\r
  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
+ * GNU Lesser General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU Lesser General Public License\r
+ * along with the Vamsas Client.  If not, see <http://www.gnu.org/licenses/>.\r
  */\r
-\r
 package uk.ac.vamsas.test.simpleclient.simpleapp;\r
 \r
-\r
-\r
 import java.io.*;\r
 import java.util.HashMap;\r
 import java.util.HashSet;\r
@@ -46,9 +46,10 @@ import uk.ac.vamsas.test.simpleclient.ClientDoc;
  */\r
 \r
 public class VamsasDatastore {\r
-  org.apache.commons.logging.Log log=org.apache.commons.logging.LogFactory.getLog(VamsasDatastore.class);\r
-  Entry provEntry = null;\r
+  org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory\r
+      .getLog(VamsasDatastore.class);\r
 \r
+  Entry provEntry = null;\r
 \r
   org.exolab.castor.types.Date date = new org.exolab.castor.types.Date(\r
       new java.util.Date());\r
@@ -61,7 +62,7 @@ public class VamsasDatastore {
 \r
   public VamsasDatastore(ClientDoc cdoc, Hashtable vobj2jv,\r
       IdentityHashMap jv2vobj, Entry provEntry) {\r
-      this.cdoc = cdoc;\r
+    this.cdoc = cdoc;\r
     this.vobj2jv = vobj2jv;\r
     this.jv2vobj = jv2vobj;\r
     this.provEntry = provEntry;\r
@@ -80,8 +81,6 @@ public class VamsasDatastore {
    * \r
    * marshaller.setMapping(map); marshaller.marshal(af); } catch (Exception e) {\r
    * e.printStackTrace(); } }\r
-   * \r
-   * \r
    */\r
   /**\r
    * @return the Vobject bound to Jalview datamodel object\r
@@ -99,11 +98,9 @@ public class VamsasDatastore {
    */\r
   protected Object getvObj2jv(uk.ac.vamsas.client.Vobject vobj) {\r
     VorbaId id = vobj.getVorbaId();\r
-    if (id == null)\r
-    {\r
+    if (id == null) {\r
       id = cdoc.registerObject(vobj);\r
-      log\r
-      .debug("Registering new object and returning null for getvObj2jv");\r
+      log.debug("Registering new object and returning null for getvObj2jv");\r
       return null;\r
     }\r
     if (vobj2jv.containsKey(vobj.getVorbaId()))\r
@@ -113,18 +110,17 @@ public class VamsasDatastore {
 \r
   protected void bindjvvobj(Object jvobj, uk.ac.vamsas.client.Vobject vobj) {\r
     VorbaId id = vobj.getVorbaId();\r
-    if (id == null)\r
-    {\r
+    if (id == null) {\r
       id = cdoc.registerObject(vobj);\r
-      if (id==null || vobj.getVorbaId()==null)\r
-        log.error("Failed to get id for "+(vobj.isRegisterable() ? "registerable" : "unregisterable") +" object "+vobj);\r
+      if (id == null || vobj.getVorbaId() == null)\r
+        log.error("Failed to get id for "\r
+            + (vobj.isRegisterable() ? "registerable" : "unregisterable")\r
+            + " object " + vobj);\r
     }\r
-    if (vobj2jv.containsKey(vobj.getVorbaId()) || jv2vobj.containsKey(jvobj))\r
-    {\r
-      log.error("Duplicate object binding! "+vobj+" id " +vobj.getVorbaId().getId()+" to "+jvobj);\r
-    }\r
-    else\r
-    {\r
+    if (vobj2jv.containsKey(vobj.getVorbaId()) || jv2vobj.containsKey(jvobj)) {\r
+      log.error("Duplicate object binding! " + vobj + " id "\r
+          + vobj.getVorbaId().getId() + " to " + jvobj);\r
+    } else {\r
       vobj2jv.put(vobj.getVorbaId(), jvobj);// JBPNote - better implementing a\r
       // hybrid invertible hash.\r
       jv2vobj.put(jvobj, vobj.getVorbaId());\r
@@ -140,8 +136,7 @@ public class VamsasDatastore {
     boolean nw = false;\r
     VAMSAS root = null; // will be resolved based on Dataset Parent.\r
     DataSet dataset = (DataSet) getjv2vObj(fromAppsDatamodel);\r
-    if (dataset == null)\r
-    {\r
+    if (dataset == null) {\r
       root = cdoc.getVamsasRoots()[0]; // default vamsas root for modifying.\r
       dataset = new DataSet();\r
       root.addDataSet(dataset);\r
@@ -156,9 +151,9 @@ public class VamsasDatastore {
   }\r
 \r
   private Property newProperty(String name, String type, String content) {\r
-    Property vProperty=new Property();\r
+    Property vProperty = new Property();\r
     vProperty.setName(name);\r
-    if (type!=null)\r
+    if (type != null)\r
       vProperty.setType(type);\r
     vProperty.setContent(content);\r
     return vProperty;\r
@@ -167,10 +162,12 @@ public class VamsasDatastore {
   /**\r
    * get start<end range of segment, adjusting for inclusivity flag and\r
    * polarity.\r
-   *  \r
+   * \r
    * @param visSeg\r
-   * @param ensureDirection when true - always ensure start is less than end.\r
-   * @return int[] { start, end, direction} where direction==1 for range running from end to start.\r
+   * @param ensureDirection\r
+   *          when true - always ensure start is less than end.\r
+   * @return int[] { start, end, direction} where direction==1 for range running\r
+   *         from end to start.\r
    */\r
   private int[] getSegRange(Seg visSeg, boolean ensureDirection) {\r
     boolean incl = visSeg.getInclusive();\r
@@ -179,59 +176,58 @@ public class VamsasDatastore {
     // region.\r
     int start = visSeg.getStart() + (incl ? 0 : pol);\r
     int end = visSeg.getEnd() + (incl ? 0 : -pol);\r
-    if (ensureDirection && pol==-1)\r
-    {\r
+    if (ensureDirection && pol == -1) {\r
       // jalview doesn't deal with inverted ranges, yet.\r
       int t = end;\r
       end = start;\r
       start = t;\r
     }\r
-    return new int[] { start, end, pol<0 ? 1 : 0 };\r
+    return new int[] { start, end, pol < 0 ? 1 : 0 };\r
   }\r
 \r
   public void updateToJalview() {\r
     VAMSAS _roots[] = cdoc.getVamsasRoots();\r
 \r
-    for (int _root = 0; _root<_roots.length; _root++) {\r
+    for (int _root = 0; _root < _roots.length; _root++) {\r
       VAMSAS root = _roots[_root];\r
-      boolean newds=false;\r
-      for (int _ds=0,_nds=root.getDataSetCount(); _ds<_nds; _ds++) {\r
+      boolean newds = false;\r
+      for (int _ds = 0, _nds = root.getDataSetCount(); _ds < _nds; _ds++) {\r
         // ///////////////////////////////////\r
         // ///LOAD DATASET\r
         DataSet dataset = root.getDataSet(_ds);\r
         int i, iSize = dataset.getSequenceCount();\r
         Vector dsseqs;\r
         Object appsdataset = (Object) getvObj2jv(dataset);\r
-        int jremain=0;\r
-        if (appsdataset==null) {\r
+        int jremain = 0;\r
+        if (appsdataset == null) {\r
           log.debug("Initialising new dataset fields");\r
-          newds=true;\r
-          dsseqs=new Vector();\r
+          newds = true;\r
+          dsseqs = new Vector();\r
         } else {\r
           log.debug("Update dataset from vamsas dataset.");\r
         }\r
-        // etc for annotations, alignments, trees, etc. \r
+        // etc for annotations, alignments, trees, etc.\r
       }\r
     }\r
   }\r
+\r
   /**\r
    * get real bounds of a RangeType's specification. start and end are an\r
-   * inclusive range within which all segments and positions lie.\r
-   * TODO: refactor to vamsas utils\r
+   * inclusive range within which all segments and positions lie. TODO: refactor\r
+   * to vamsas utils\r
+   * \r
    * @param dseta\r
    * @return int[] { start, end}\r
    */\r
   private int[] getBounds(RangeType dseta) {\r
-    if (dseta != null)\r
-    {\r
+    if (dseta != null) {\r
       int[] se = null;\r
-      if (dseta.getSegCount()>0 && dseta.getPosCount()>0)\r
-        throw new Error("Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");\r
-      if (dseta.getSegCount() > 0)\r
-      {\r
-        se = getSegRange(dseta.getSeg(0),true);\r
-        for (int s = 1, sSize = dseta.getSegCount(); s < sSize; s++)\r
-        {\r
+      if (dseta.getSegCount() > 0 && dseta.getPosCount() > 0)\r
+        throw new Error(\r
+            "Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");\r
+      if (dseta.getSegCount() > 0) {\r
+        se = getSegRange(dseta.getSeg(0), true);\r
+        for (int s = 1, sSize = dseta.getSegCount(); s < sSize; s++) {\r
           int nse[] = getSegRange(dseta.getSeg(s), true);\r
           if (se[0] > nse[0])\r
             se[0] = nse[0];\r
@@ -239,13 +235,12 @@ public class VamsasDatastore {
             se[1] = nse[1];\r
         }\r
       }\r
-      if (dseta.getPosCount() > 0)\r
-      {\r
-        // could do a polarity for pos range too. and pass back indication of discontinuities.\r
+      if (dseta.getPosCount() > 0) {\r
+        // could do a polarity for pos range too. and pass back indication of\r
+        // discontinuities.\r
         int pos = dseta.getPos(0).getI();\r
         se = new int[] { pos, pos };\r
-        for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++)\r
-        {\r
+        for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++) {\r
           pos = dseta.getPos(p).getI();\r
           if (se[0] > pos)\r
             se[0] = pos;\r
@@ -257,53 +252,52 @@ public class VamsasDatastore {
     }\r
     return null;\r
   }\r
+\r
   /**\r
-   * map from a rangeType's internal frame to the referenced object's coordinate frame.\r
+   * map from a rangeType's internal frame to the referenced object's coordinate\r
+   * frame.\r
+   * \r
    * @param dseta\r
    * @return int [] { ref(pos)...} for all pos in rangeType's frame.\r
    */\r
   private int[] getMapping(RangeType dseta) {\r
-    Vector posList=new Vector();\r
-    if (dseta != null)\r
-    {\r
+    Vector posList = new Vector();\r
+    if (dseta != null) {\r
       int[] se = null;\r
-      if (dseta.getSegCount()>0 && dseta.getPosCount()>0)\r
-        throw new Error("Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");\r
-      if (dseta.getSegCount() > 0)\r
-      {\r
-        for (int s = 0, sSize = dseta.getSegCount(); s < sSize; s++)\r
-        {\r
+      if (dseta.getSegCount() > 0 && dseta.getPosCount() > 0)\r
+        throw new Error(\r
+            "Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");\r
+      if (dseta.getSegCount() > 0) {\r
+        for (int s = 0, sSize = dseta.getSegCount(); s < sSize; s++) {\r
           se = getSegRange(dseta.getSeg(s), false);\r
-          int se_end=se[1-se[2]]+(se[2]==0 ? 1 : -1);\r
-          for (int p=se[se[2]]; p!=se_end; p+=se[2]==0 ? 1 : -1 ) {\r
+          int se_end = se[1 - se[2]] + (se[2] == 0 ? 1 : -1);\r
+          for (int p = se[se[2]]; p != se_end; p += se[2] == 0 ? 1 : -1) {\r
             posList.add(new Integer(p));\r
           }\r
         }\r
-      } \r
-      else if (dseta.getPosCount() > 0)\r
-      {\r
+      } else if (dseta.getPosCount() > 0) {\r
         int pos = dseta.getPos(0).getI();\r
 \r
-        for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++)\r
-        {\r
+        for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++) {\r
           pos = dseta.getPos(p).getI();\r
           posList.add(new Integer(pos));\r
         }\r
       }\r
     }\r
-    if (posList!=null && posList.size()>0) {\r
-      int[] range=new int[posList.size()];\r
-      for (int i=0; i<range.length; i++)\r
-        range[i] = ((Integer)posList.elementAt(i)).intValue();\r
+    if (posList != null && posList.size() > 0) {\r
+      int[] range = new int[posList.size()];\r
+      for (int i = 0; i < range.length; i++)\r
+        range[i] = ((Integer) posList.elementAt(i)).intValue();\r
       posList.clear();\r
       return range;\r
     }\r
     return null;\r
   }\r
+\r
   /**\r
    * \r
-   * @return default initial provenance list for a VamsasDatastore created vamsas\r
-   *         object.\r
+   * @return default initial provenance list for a VamsasDatastore created\r
+   *         vamsas object.\r
    */\r
   Provenance dummyProvenance() {\r
     return dummyProvenance(null);\r