package jalview.datamodel.xdb.embl; import java.util.Iterator; import java.util.Vector; public class EmblFeatureLocations { Vector locElements; String locationType; boolean locationComplement; /** * @return the locationComplement */ public boolean isLocationComplement() { return locationComplement; } /** * @param locationComplement the locationComplement to set */ public void setLocationComplement(boolean locationComplement) { this.locationComplement = locationComplement; } /** * @return the locationType */ public String getLocationType() { return locationType; } /** * @param locationType the locationType to set */ public void setLocationType(String locationType) { this.locationType = locationType; } /** * @return the locElements */ public Vector getLocElements() { return locElements; } /** * @param locElements the locElements to set */ public void setLocElements(Vector locElements) { this.locElements = locElements; } /** * Return all location elements as start-end pairs on referenced sequence * TODO: pass back complement and 'less than or more than' range information * @return int[] { start1, end1, ... } */ public int[] getElementRanges() { if (locationType.equalsIgnoreCase("single")) { int[] se = new int[locElements.size()*2]; int sepos=0; for (Iterator le=locElements.iterator();le.hasNext();) { EmblFeatureLocElement loce = (EmblFeatureLocElement) le.next(); BasePosition bp[] = loce.getBasePositions(); if (bp.length==2) { se[sepos++] = Integer.parseInt(bp[0].getPos()); se[sepos++] = Integer.parseInt(bp[1].getPos()); } } return se; } if (locationType.equalsIgnoreCase("join")) { int[] se = new int[locElements.size()*2]; int sepos=0; for (Iterator le=locElements.iterator();le.hasNext();) { EmblFeatureLocElement loce = (EmblFeatureLocElement) le.next(); BasePosition bp[] = loce.getBasePositions(); if (bp.length==2) { se[sepos++] = Integer.parseInt(bp[0].getPos()); se[sepos++] = Integer.parseInt(bp[1].getPos()); } } return se; } if (locationType!=null) { jalview.bin.Cache.log.error("EmbleFeatureLocations.getElementRanges cannot deal with locationType=='"+locationType+"'"); } return null; } }