modified castor-1.1 library and refactored uk.ac.vamsas
[jalview.git] / src / jalview / io / VamsasDatastore.java
index 2632b2a..aca86c6 100755 (executable)
@@ -36,30 +36,30 @@ import java.util.Hashtable;
 import java.util.IdentityHashMap;
 import java.util.Vector;
 
-import org.vamsas.client.Vobject;
-import org.vamsas.client.VorbaId;
-import org.vamsas.objects.core.Alignment;
-import org.vamsas.objects.core.AlignmentSequence;
-import org.vamsas.objects.core.AlignmentSequenceAnnotation;
-import org.vamsas.objects.core.AnnotationElement;
-import org.vamsas.objects.core.DataSet;
-import org.vamsas.objects.core.DataSetAnnotations;
-import org.vamsas.objects.core.DbRef;
-import org.vamsas.objects.core.Entry;
-import org.vamsas.objects.core.Glyph;
-import org.vamsas.objects.core.Input;
-import org.vamsas.objects.core.Link;
-import org.vamsas.objects.core.Newick;
-import org.vamsas.objects.core.Param;
-import org.vamsas.objects.core.Property;
-import org.vamsas.objects.core.Provenance;
-import org.vamsas.objects.core.RangeAnnotation;
-import org.vamsas.objects.core.RangeType;
-import org.vamsas.objects.core.Seg;
-import org.vamsas.objects.core.Sequence;
-import org.vamsas.objects.core.Tree;
-import org.vamsas.objects.core.VAMSAS;
-import org.vamsas.test.simpleclient.ClientDoc;
+import uk.ac.vamsas.client.Vobject;
+import uk.ac.vamsas.client.VorbaId;
+import uk.ac.vamsas.objects.core.Alignment;
+import uk.ac.vamsas.objects.core.AlignmentSequence;
+import uk.ac.vamsas.objects.core.AlignmentSequenceAnnotation;
+import uk.ac.vamsas.objects.core.AnnotationElement;
+import uk.ac.vamsas.objects.core.DataSet;
+import uk.ac.vamsas.objects.core.DataSetAnnotations;
+import uk.ac.vamsas.objects.core.DbRef;
+import uk.ac.vamsas.objects.core.Entry;
+import uk.ac.vamsas.objects.core.Glyph;
+import uk.ac.vamsas.objects.core.Input;
+import uk.ac.vamsas.objects.core.Link;
+import uk.ac.vamsas.objects.core.Newick;
+import uk.ac.vamsas.objects.core.Param;
+import uk.ac.vamsas.objects.core.Property;
+import uk.ac.vamsas.objects.core.Provenance;
+import uk.ac.vamsas.objects.core.RangeAnnotation;
+import uk.ac.vamsas.objects.core.RangeType;
+import uk.ac.vamsas.objects.core.Seg;
+import uk.ac.vamsas.objects.core.Sequence;
+import uk.ac.vamsas.objects.core.Tree;
+import uk.ac.vamsas.objects.core.VAMSAS;
+import uk.ac.vamsas.test.simpleclient.ClientDoc;
 
 /*
  *
@@ -126,7 +126,7 @@ public class VamsasDatastore
    * @param vobj
    * @return Jalview datamodel object bound to the vamsas document object
    */
-  protected Object getvObj2jv(org.vamsas.client.Vobject vobj)
+  protected Object getvObj2jv(uk.ac.vamsas.client.Vobject vobj)
   {
     VorbaId id = vobj.getVorbaId();
     if (id == null)
@@ -143,7 +143,7 @@ public class VamsasDatastore
     return null;
   }
 
-  protected void bindjvvobj(Object jvobj, org.vamsas.client.Vobject vobj)
+  protected void bindjvvobj(Object jvobj, uk.ac.vamsas.client.Vobject vobj)
   {
     VorbaId id = vobj.getVorbaId();
     if (id == null)
@@ -222,8 +222,8 @@ public class VamsasDatastore
       // this *will* break when alignment contains both nucleotide and amino
       // acid sequences.
       String dict = jal.isNucleotide() ?
-          org.vamsas.objects.utils.SymbolDictionary.STANDARD_NA
-          : org.vamsas.objects.utils.SymbolDictionary.STANDARD_AA;
+          uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA
+          : uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_AA;
       for (int i = 0; i < jal.getHeight(); i++)
       {
         SequenceI sq = jal.getSequenceAt(i).getDatasetSequence(); // only insert
@@ -360,7 +360,7 @@ public class VamsasDatastore
       else
       {
         // todo: verify and update mutable alignment props.
-        if (alignment.getModifiable())
+        if (alignment.getModifiable()==null) // TODO: USE VAMSAS LIBRARY OBJECT LOCK METHODS
         {
           System.out.println("update alignment in document.");
         }
@@ -427,9 +427,9 @@ public class VamsasDatastore
           }
           if (aa[i].sequenceRef != null)
           {
-            org.vamsas.objects.core.AlignmentSequence alsref = (org.vamsas.
+            uk.ac.vamsas.objects.core.AlignmentSequence alsref = (uk.ac.vamsas.
                 objects.core.AlignmentSequence) getjv2vObj(aa[i].sequenceRef);
-            org.vamsas.objects.core.AlignmentSequenceAnnotation an = (org.
+            uk.ac.vamsas.objects.core.AlignmentSequenceAnnotation an = (uk.ac.
                 vamsas.objects.core.AlignmentSequenceAnnotation) getjv2vObj(aa[
                 i]);
             int[] gapMap = null;
@@ -449,7 +449,7 @@ public class VamsasDatastore
             }
             if (an == null)
             {
-              an = new org.vamsas.objects.core.AlignmentSequenceAnnotation();
+              an = new uk.ac.vamsas.objects.core.AlignmentSequenceAnnotation();
               Seg vSeg = new Seg();
               vSeg.setStart(1);
               vSeg.setInclusive(true);
@@ -513,7 +513,7 @@ public class VamsasDatastore
                   // we only write an annotation where it really exists.
                   Glyph ss = new Glyph();
                   ss
-                      .setDict(org.vamsas.objects.utils.GlyphDictionary.
+                      .setDict(uk.ac.vamsas.objects.utils.GlyphDictionary.
                                PROTEIN_SS_3STATE);
                   ss.setContent(String
                                 .valueOf(aa[i].annotations[a].
@@ -526,7 +526,7 @@ public class VamsasDatastore
             else
             {
               // update reference sequence Annotation
-              if (an.getModifiable())
+              if (an.getModifiable()==null) // TODO: USE VAMSAS LIBRARY OBJECT LOCK METHODS)
               {
                 // verify existing alignment sequence annotation is up to date
                 System.out.println("update alignment sequence annotation.");
@@ -543,11 +543,11 @@ public class VamsasDatastore
           else
           {
             // add Alignment Annotation
-            org.vamsas.objects.core.AlignmentAnnotation an = (org.vamsas.
+            uk.ac.vamsas.objects.core.AlignmentAnnotation an = (uk.ac.vamsas.
                 objects.core.AlignmentAnnotation) getjv2vObj(aa[i]);
             if (an == null)
             {
-              an = new org.vamsas.objects.core.AlignmentAnnotation();
+              an = new uk.ac.vamsas.objects.core.AlignmentAnnotation();
               an.setType("jalview:AnnotationRow");
               an.setDescription(aa[i].description);
               alignment.addAlignmentAnnotation(an);
@@ -604,7 +604,7 @@ public class VamsasDatastore
                 {
                   Glyph ss = new Glyph();
                   ss
-                      .setDict(org.vamsas.objects.utils.GlyphDictionary.
+                      .setDict(uk.ac.vamsas.objects.utils.GlyphDictionary.
                                PROTEIN_SS_3STATE);
                   ss.setContent(String
                                 .valueOf(aa[i].annotations[a].
@@ -616,7 +616,7 @@ public class VamsasDatastore
               if (aa[i].editable)
               {
                 //an.addProperty(newProperty("jalview:editable", null, "true"));
-                an.setModifiable(true);
+                // an.setModifiable(""); // TODO: This is not the way the modifiable flag is supposed to be used.
               }
               if (aa[i].graph != jalview.datamodel.AlignmentAnnotation.NO_GRAPH)
               {
@@ -638,7 +638,7 @@ public class VamsasDatastore
             }
             else
             {
-              if (an.getModifiable())
+              if (an.getModifiable()==null) // TODO: USE VAMSAS LIBRARY OBJECT LOCK METHODS)
               {
                 // verify annotation - update (perhaps)
                 Cache.log.info(
@@ -688,7 +688,7 @@ public class VamsasDatastore
               }
               else
               {
-                if (tree.getModifiable())
+                if (tree.getModifiable()==null) // TODO: USE VAMSAS LIBRARY OBJECT LOCK METHODS)
                 {
                   // verify any changes.
                   System.out.println("Update tree in document.");
@@ -842,10 +842,10 @@ public class VamsasDatastore
         }
         // LATER: deal sensibly with multiple inputs.
         Input vInput = tp.getEntry(pe).getInput(0);
-        if (vInput.getObjRef() instanceof org.vamsas.objects.core.Alignment)
+        if (vInput.getObjRef() instanceof uk.ac.vamsas.objects.core.Alignment)
         {
           // recover an AlignmentView for the input data
-          AlignViewport javport = (AlignViewport) getvObj2jv( (org.vamsas.
+          AlignViewport javport = (AlignViewport) getvObj2jv( (uk.ac.vamsas.
               client.Vobject) vInput
               .getObjRef());
           jalview.datamodel.AlignmentI jal = javport.getAlignment();
@@ -1005,8 +1005,8 @@ public class VamsasDatastore
             dsseq = new jalview.datamodel.Sequence(
                 dataset.getSequence(i).getName(),
                 dataset.getSequence(i).getSequence(),
-                dataset.getSequence(i).getStart(),
-                dataset.getSequence(i).getEnd());
+                (int)dataset.getSequence(i).getStart(),
+                (int)dataset.getSequence(i).getEnd());
             dsseq.setDescription(dataset.getSequence(i).getDescription());
             bindjvvobj(dsseq, dataset.getSequence(i));
             dsseq.setVamsasId(dataset.getSequence(i).getVorbaId().getId());
@@ -1091,7 +1091,7 @@ public class VamsasDatastore
 
           for (int al = 0, nal = dataset.getAlignmentCount(); al < nal; al++)
           {
-            org.vamsas.objects.core.Alignment alignment = dataset.getAlignment(
+            uk.ac.vamsas.objects.core.Alignment alignment = dataset.getAlignment(
                 al);
             AlignViewport av = (AlignViewport) getvObj2jv(alignment);
             jalview.datamodel.AlignmentI jal = null;
@@ -1137,8 +1137,8 @@ public class VamsasDatastore
                 alseq = new jalview.datamodel.Sequence(
                     valseq.getName(),
                     valseq.getSequence().replace(valGapchar, gapChar),
-                    valseq.getStart(),
-                    valseq.getEnd());
+                    (int)valseq.getStart(),
+                    (int)valseq.getEnd());
 
                 Vobject datsetseq = (Vobject) valseq.getRefid();
                 if (datsetseq != null)
@@ -1175,7 +1175,7 @@ public class VamsasDatastore
                   else
                   {
                     // update existing annotation - can do this in place
-                    if (vasannot[a].getModifiable())
+                    if (vasannot[a].getModifiable()==null) // TODO: USE VAMSAS LIBRARY OBJECT LOCK METHODS)
                     {
                       Cache.log.info(
                           "UNIMPLEMENTED: not recovering user modifiable sequence alignment annotation");
@@ -1220,7 +1220,7 @@ public class VamsasDatastore
             // ////////////////////////////////////
             if (alignment.getAlignmentAnnotationCount() > 0)
             {
-              org.vamsas.objects.core.AlignmentAnnotation[] an = alignment.
+              uk.ac.vamsas.objects.core.AlignmentAnnotation[] an = alignment.
                   getAlignmentAnnotation();
 
               for (int j = 0; j < an.length; j++)
@@ -1235,7 +1235,7 @@ public class VamsasDatastore
                   // jan.update(getjAlignmentAnnotation(jal, an[a])); //  update from another annotation object in place.
 
                   Cache.log.debug("update from vamsas alignment annotation to existing jalview alignment annotation.");
-                  if (an[j].getModifiable())
+                  if (an[j].getModifiable()==null) // TODO: USE VAMSAS LIBRARY OBJECT LOCK METHODS)
                   {
                     // TODO: user defined annotation is totally mutable... - so load it up or throw away if locally edited.
                     Cache.log.info(
@@ -1349,7 +1349,7 @@ public class VamsasDatastore
    * @param annotation
    * @return { boolean[static int constants ], int[ae.length] - map to annotated object frame, jalview.datamodel.Annotation[], jalview.datamodel.Annotation[] (after)}
    */
-  private Object[] parseRangeAnnotation(org.vamsas.objects.core.RangeAnnotation
+  private Object[] parseRangeAnnotation(uk.ac.vamsas.objects.core.RangeAnnotation
                                         annotation)
   {
     // set these attributes by looking in the annotation to decide what kind of alignment annotation rows will be made
@@ -1372,7 +1372,7 @@ public class VamsasDatastore
       AnnotationElement ae[] = annotation.getAnnotationElement();
       for (int aa = 0; aa < ae.length; aa++)
       {
-        int pos = ae[aa].getPosition() - 1; // pos counts from 1 to (|seg.start-seg.end|+1)
+        int pos = (int) ae[aa].getPosition() - 1; // pos counts from 1 to (|seg.start-seg.end|+1)
         if (pos >= 0 && pos < rangeMap.length)
         {
           int row = ae[aa].getAfter() ? 1 : 0;
@@ -1404,13 +1404,13 @@ public class VamsasDatastore
             Glyph[] glyphs = ae[aa].getGlyph();
             for (int g = 0; g < glyphs.length; g++)
             {
-              if (glyphs[g].getDict().equals(org.vamsas.objects.utils.
+              if (glyphs[g].getDict().equals(uk.ac.vamsas.objects.utils.
                                              GlyphDictionary.PROTEIN_SS_3STATE))
               {
                 ss = glyphs[g].getContent();
                 AeContent[HASSECSTR] = true;
               }
-              else if (glyphs[g].getDict().equals(org.vamsas.objects.utils.
+              else if (glyphs[g].getDict().equals(uk.ac.vamsas.objects.utils.
                                                   GlyphDictionary.
                                                   PROTEIN_HD_HYDRO))
               {
@@ -1423,7 +1423,7 @@ public class VamsasDatastore
                                             c == '-' ? 255 : 0);
 
               }
-              else if (glyphs[g].getDict().equals(org.vamsas.objects.utils.
+              else if (glyphs[g].getDict().equals(uk.ac.vamsas.objects.utils.
                                                   GlyphDictionary.DEFAULT))
               {
                 dc = glyphs[g].getContent();
@@ -1508,15 +1508,15 @@ public class VamsasDatastore
    */
   private jalview.datamodel.AlignmentAnnotation getjAlignmentAnnotation(jalview.
       datamodel.AlignmentI jal,
-      org.vamsas.objects.core.RangeAnnotation annotation)
+      uk.ac.vamsas.objects.core.RangeAnnotation annotation)
   {
     jalview.datamodel.AlignmentAnnotation jan = null;
     if (annotation == null)
     {
       return null;
     }
-    // boolean hasSequenceRef=annotation.getClass().equals(org.vamsas.objects.core.AlignmentSequenceAnnotation.class);
-    //boolean hasProvenance=hasSequenceRef || (annotation.getClass().equals(org.vamsas.objects.core.AlignmentAnnotation.class));
+    // boolean hasSequenceRef=annotation.getClass().equals(uk.ac.vamsas.objects.core.AlignmentSequenceAnnotation.class);
+    //boolean hasProvenance=hasSequenceRef || (annotation.getClass().equals(uk.ac.vamsas.objects.core.AlignmentAnnotation.class));
     /*int se[] = getBounds(annotation);
          if (se==null)
       se=new int[] {0,jal.getWidth()-1};
@@ -1553,8 +1553,8 @@ public class VamsasDatastore
           parsedRangeAnnotation[2];
       boolean[] has = (boolean[]) parsedRangeAnnotation[0];
       // VAMSAS: getGraph is only on derived annotation for alignments - in this way its 'odd' - there is already an existing TODO about removing this flag as being redundant
-      /*if ((annotation.getClass().equals(org.vamsas.objects.core.AlignmentAnnotation.class) && ((org.vamsas.objects.core.AlignmentAnnotation)annotation).getGraph())
-          || (hasSequenceRef=true && ((org.vamsas.objects.core.AlignmentSequenceAnnotation)annotation).getGraph())) {
+      /*if ((annotation.getClass().equals(uk.ac.vamsas.objects.core.AlignmentAnnotation.class) && ((uk.ac.vamsas.objects.core.AlignmentAnnotation)annotation).getGraph())
+          || (hasSequenceRef=true && ((uk.ac.vamsas.objects.core.AlignmentSequenceAnnotation)annotation).getGraph())) {
        */
       if (has[HASVALS])
       {
@@ -1629,7 +1629,7 @@ public class VamsasDatastore
         Cache.log.warn("Ignoring " + annotation.getLinkCount() +
                        "links added to AlignmentAnnotation.");
       }
-      if (annotation.getModifiable())
+      if (annotation.getModifiable()==null) // TODO: USE VAMSAS LIBRARY OBJECT LOCK METHODS)
       {
         jan.editable = true;
       }
@@ -1637,7 +1637,7 @@ public class VamsasDatastore
       if (annotation.getPropertyCount() > 0)
       {
         // look for special jalview properties
-        org.vamsas.objects.core.Property[] props = annotation.getProperty();
+        uk.ac.vamsas.objects.core.Property[] props = annotation.getProperty();
         for (int p = 0; p < props.length; p++)
         {
           if (props[p].getName().equalsIgnoreCase("jalview:graphType"))