JAL-3949 Complete new abstracted logging framework in jalview.log. Updated log calls...
[jalview.git] / src / jalview / io / vamsas / Rangetype.java
index 169eae1..786a46b 100644 (file)
@@ -1,39 +1,45 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
- * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This file is part of Jalview.
  * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.io.vamsas;
 
+import jalview.bin.Cache;
+import jalview.io.VamsasAppDatastore;
+import jalview.util.MessageManager;
+
+import java.util.List;
 import java.util.Vector;
 
 import uk.ac.vamsas.client.Vobject;
 import uk.ac.vamsas.objects.core.Local;
-import uk.ac.vamsas.objects.core.Map;
 import uk.ac.vamsas.objects.core.MapType;
 import uk.ac.vamsas.objects.core.Mapped;
 import uk.ac.vamsas.objects.core.RangeType;
 import uk.ac.vamsas.objects.core.Seg;
-import jalview.datamodel.DBRefEntry;
-import jalview.datamodel.Mapping;
-import jalview.io.VamsasAppDatastore;
+
 /**
- * Enhances DatastoreItem objects with additional functions to do with RangeType objects
+ * Enhances DatastoreItem objects with additional functions to do with RangeType
+ * objects
+ * 
  * @author JimP
- *
+ * 
  */
 public abstract class Rangetype extends DatastoreItem
 {
@@ -47,11 +53,13 @@ public abstract class Rangetype extends DatastoreItem
   {
     super(datastore);
   }
-  
-  public Rangetype(VamsasAppDatastore datastore, Vobject vobj, Class jvClass)
+
+  public Rangetype(VamsasAppDatastore datastore, Vobject vobj,
+          Class jvClass)
   {
     super(datastore, vobj, jvClass);
   }
+
   public Rangetype(VamsasAppDatastore datastore, Object jvobj, Class vClass)
   {
     super(datastore, jvobj, vClass);
@@ -72,8 +80,8 @@ public abstract class Rangetype extends DatastoreItem
       int[] se = null;
       if (dseta.getSegCount() > 0 && dseta.getPosCount() > 0)
       {
-        throw new Error(
-                "Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
+        throw new Error(MessageManager.getString(
+                "error.invalid_vamsas_rangetype_cannot_resolve_lists"));
       }
       if (dseta.getSegCount() > 0)
       {
@@ -96,8 +104,7 @@ public abstract class Rangetype extends DatastoreItem
         // could do a polarity for pos range too. and pass back indication of
         // discontinuities.
         int pos = dseta.getPos(0).getI();
-        se = new int[]
-        { pos, pos };
+        se = new int[] { pos, pos };
         for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++)
         {
           pos = dseta.getPos(p).getI();
@@ -131,8 +138,8 @@ public abstract class Rangetype extends DatastoreItem
       int[] se = null;
       if (dseta.getSegCount() > 0 && dseta.getPosCount() > 0)
       {
-        throw new Error(
-                "Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
+        throw new Error(MessageManager.getString(
+                "error.invalid_vamsas_rangetype_cannot_resolve_lists"));
       }
       if (dseta.getSegCount() > 0)
       {
@@ -142,7 +149,7 @@ public abstract class Rangetype extends DatastoreItem
           int se_end = se[1 - se[2]] + (se[2] == 0 ? 1 : -1);
           for (int p = se[se[2]]; p != se_end; p += se[2] == 0 ? 1 : -1)
           {
-            posList.add(new Integer(p));
+            posList.add(Integer.valueOf(p));
           }
         }
       }
@@ -153,7 +160,7 @@ public abstract class Rangetype extends DatastoreItem
         for (int p = 0, pSize = dseta.getPosCount(); p < pSize; p++)
         {
           pos = dseta.getPos(p).getI();
-          posList.add(new Integer(pos));
+          posList.add(Integer.valueOf(pos));
         }
       }
     }
@@ -179,16 +186,16 @@ public abstract class Rangetype extends DatastoreItem
       int[] se = null;
       if (range.getSegCount() > 0 && range.getPosCount() > 0)
       {
-        throw new Error(
-                "Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!");
+        throw new Error(MessageManager.getString(
+                "error.invalid_vamsas_rangetype_cannot_resolve_lists"));
       }
       if (range.getSegCount() > 0)
       {
         for (int s = 0, sSize = range.getSegCount(); s < sSize; s++)
         {
           se = getSegRange(range.getSeg(s), false);
-          posList.addElement(new Integer(se[0]));
-          posList.addElement(new Integer(se[1]));
+          posList.addElement(Integer.valueOf(se[0]));
+          posList.addElement(Integer.valueOf(se[1]));
         }
       }
       else if (range.getPosCount() > 0)
@@ -198,8 +205,8 @@ public abstract class Rangetype extends DatastoreItem
         for (int p = 0, pSize = range.getPosCount(); p < pSize; p++)
         {
           pos = range.getPos(p).getI();
-          posList.add(new Integer(pos));
-          posList.add(new Integer(pos));
+          posList.add(Integer.valueOf(pos));
+          posList.add(Integer.valueOf(pos));
         }
       }
     }
@@ -220,15 +227,15 @@ public abstract class Rangetype extends DatastoreItem
    * initialise a range type object from a set of start/end inclusive intervals
    * 
    * @param mrt
-   * @param range
+   * @param ranges
    */
-  protected void initRangeType(RangeType mrt, int[] range)
+  protected void initRangeType(RangeType mrt, List<int[]> ranges)
   {
-    for (int i = 0; i < range.length; i += 2)
+    for (int[] range : ranges)
     {
       Seg vSeg = new Seg();
-      vSeg.setStart(range[i]);
-      vSeg.setEnd(range[i + 1]);
+      vSeg.setStart(range[0]);
+      vSeg.setEnd(range[1]);
       vSeg.setInclusive(true);
       mrt.addSeg(vSeg);
     }
@@ -237,12 +244,12 @@ public abstract class Rangetype extends DatastoreItem
   /**
    * 
    * @param maprange
-   *                where the from range is the local mapped range, and the to
-   *                range is the 'mapped' range in the MapRangeType
+   *          where the from range is the local mapped range, and the to range
+   *          is the 'mapped' range in the MapRangeType
    * @param default
-   *                unit for local
+   *          unit for local
    * @param default
-   *                unit for mapped
+   *          unit for mapped
    * @return MapList
    */
   protected jalview.util.MapList parsemapType(MapType maprange, int localu,
@@ -253,8 +260,9 @@ public abstract class Rangetype extends DatastoreItem
     int[] mappedRange = getIntervals(maprange.getMapped());
     long lu = maprange.getLocal().hasUnit() ? maprange.getLocal().getUnit()
             : localu;
-    long mu = maprange.getMapped().hasUnit() ? maprange.getMapped()
-            .getUnit() : mappedu;
+    long mu = maprange.getMapped().hasUnit()
+            ? maprange.getMapped().getUnit()
+            : mappedu;
     ml = new jalview.util.MapList(localRange, mappedRange, (int) lu,
             (int) mu);
     return ml;
@@ -264,8 +272,7 @@ public abstract class Rangetype extends DatastoreItem
   {
     if (!map.getLocal().hasUnit() || map.getMapped().hasUnit())
     {
-      jalview.bin.Cache.log
-              .warn("using default mapping length of 1:1 for map "
+      Cache.warn("using default mapping length of 1:1 for map "
                       + (map.isRegistered() ? map.getVorbaId().toString()
                               : ("<no Id registered> " + map.toString())));
     }
@@ -290,9 +297,8 @@ public abstract class Rangetype extends DatastoreItem
    * @param maprange
    * @param ml
    * @param setUnits
-   * @param reverse -
-   *                reverse MapList mapping for Local and Mapped ranges and
-   *                units
+   * @param reverse
+   *          - reverse MapList mapping for Local and Mapped ranges and units
    */
   protected void initMapType(MapType maprange, jalview.util.MapList ml,
           boolean setUnits, boolean reverse)
@@ -326,6 +332,10 @@ public abstract class Rangetype extends DatastoreItem
         maprange.getLocal().setUnit(ml.getToRatio());
         maprange.getMapped().setUnit(ml.getFromRatio());
       }
+      // TODO: and verify - raise an implementation fault notice if local/mapped
+      // range % Local/Mapped Ratio != 0
+      // if (uk.ac.vamsas.objects.utils.Range.getIntervals(range))
+
     }
   }