X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2Fvamsas%2FRangetype.java;h=ee4fa8306092c72a4db5d85cd237ffdf41531d27;hb=a83adb45bdf9554e270921b4baad94defd314b36;hp=2686e858334d6e348fc1ed3ab8807f53e7b4ddce;hpb=506d60f0e188723ddc91c26824b41ac7034df3fe;p=jalview.git diff --git a/src/jalview/io/vamsas/Rangetype.java b/src/jalview/io/vamsas/Rangetype.java index 2686e85..ee4fa83 100644 --- a/src/jalview/io/vamsas/Rangetype.java +++ b/src/jalview/io/vamsas/Rangetype.java @@ -1,35 +1,46 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4) - * Copyright (C) 2008 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.io.vamsas; +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.Mapping; -import jalview.io.VamsasAppDatastore; -public class Rangetype extends DatastoreItem +/** + * Enhances DatastoreItem objects with additional functions to do with RangeType + * objects + * + * @author JimP + * + */ +public abstract class Rangetype extends DatastoreItem { public Rangetype() @@ -42,6 +53,17 @@ public class Rangetype extends DatastoreItem super(datastore); } + public Rangetype(VamsasAppDatastore datastore, Vobject vobj, + Class jvClass) + { + super(datastore, vobj, jvClass); + } + + public Rangetype(VamsasAppDatastore datastore, Object jvobj, Class vClass) + { + super(datastore, jvobj, vClass); + } + /** * get real bounds of a RangeType's specification. start and end are an * inclusive range within which all segments and positions lie. TODO: refactor @@ -57,8 +79,8 @@ public 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) { @@ -81,8 +103,7 @@ public 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(); @@ -116,8 +137,8 @@ public 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) { @@ -164,8 +185,8 @@ public 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) { @@ -205,15 +226,15 @@ public 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 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); } @@ -222,12 +243,12 @@ public 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, @@ -238,8 +259,9 @@ public 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; @@ -275,17 +297,16 @@ public 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) { if (ml == null) { - throw new Error( - "Implementation error. MapList is null for initMapType."); + throw new Error(MessageManager + .getString("error.implementation_error_maplist_is_null")); } maprange.setLocal(new Local()); maprange.setMapped(new Mapped()); @@ -311,6 +332,10 @@ public 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)) + } }