X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2Fxdb%2Fembl%2FEmblFeatureLocations.java;h=94105ae6f5efec4f292e2c13ea7e8e8b0513d35e;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=0341ec3e2d8edb826ca645255b0d8974b1018a09;hpb=385e63c78d289d4beae9c1ad2b187c0ea311ffbc;p=jalview.git diff --git a/src/jalview/datamodel/xdb/embl/EmblFeatureLocations.java b/src/jalview/datamodel/xdb/embl/EmblFeatureLocations.java index 0341ec3..94105ae 100644 --- a/src/jalview/datamodel/xdb/embl/EmblFeatureLocations.java +++ b/src/jalview/datamodel/xdb/embl/EmblFeatureLocations.java @@ -1,112 +1,175 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors + * + * This file is part of Jalview. + * + * 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 Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.datamodel.xdb.embl; -import java.util.Enumeration; -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 (without accessions) - * TODO: pass back complement and 'less than or more than' range information - * Note: do not use this since it throws away any accessionIds associated with - * each location! - * @return int[] { start1, end1, ... } - */ - public int[] getElementRanges() { - return getElementRanges(null); - } - /** - * Return all location elements concerning given accession as start-end pairs - * TODO: pass back complement and 'less than or more than' range information - * TODO: deal with multiple accessions - * @param accession the accession string for which locations are requested, or null for all locations - * @return null or int[] { start1, end1, ... } - */ - - public int[] getElementRanges(String accession) +/** + * Data model for a <loctaion> child element of a <feature> read + * from an EMBL query reply + * + * @see embl_mapping.xml + */ +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 (without accessions) TODO: + * pass back complement and 'less than or more than' range information Note: + * do not use this since it throws away any accessionIds associated with each + * location! + * + * @return int[] { start1, end1, ... } + */ + public int[] getElementRanges() + { + return getElementRanges(null); + } + + /** + * Return all location elements concerning given accession as start-end pairs + * TODO: pass back complement and 'less than or more than' range information + * TODO: deal with multiple accessions + * + * @param accession + * the accession string for which locations are requested, or null + * for all locations + * @return null or int[] { start1, end1, ... } + */ + + public int[] getElementRanges(String accession) + { + int sepos = 0; + int[] se = new int[locElements.size() * 2]; + if (locationType.equalsIgnoreCase("single")) // TODO: or "simple" ? { - int sepos=0; - int[] se = new int[locElements.size()*2]; - if (locationType.equalsIgnoreCase("single")) { - for (Enumeration le=locElements.elements();le.hasMoreElements();) { - EmblFeatureLocElement loce = (EmblFeatureLocElement) le.nextElement(); - if (accession==null || loce.accession!=null && accession.equals(loce.accession)) - { - BasePosition bp[] = loce.getBasePositions(); - if (bp.length==2) { - se[sepos++] = Integer.parseInt(bp[0].getPos()); - se[sepos++] = Integer.parseInt(bp[1].getPos()); - } - } + for (EmblFeatureLocElement loce : locElements) + { + if (accession == null || loce.accession != null + && accession.equals(loce.accession)) + { + BasePosition bp[] = loce.getBasePositions(); + if (bp.length == 2) + { + se[sepos++] = Integer.parseInt(bp[0].getPos()); + se[sepos++] = Integer.parseInt(bp[1].getPos()); + } } - } else - if (locationType.equalsIgnoreCase("join")) { - for (Enumeration le=locElements.elements();le.hasMoreElements();) { - EmblFeatureLocElement loce = (EmblFeatureLocElement) le.nextElement(); - if (accession==null || loce.accession!=null && accession.equals(loce.accession)) + } + } + else if (locationType.equalsIgnoreCase("join")) + { + for (EmblFeatureLocElement loce : locElements) + { + if (accession == null || loce.accession != null + && accession.equals(loce.accession)) + { + BasePosition bp[] = loce.getBasePositions(); + if (bp.length == 2) { - BasePosition bp[] = loce.getBasePositions(); - if (bp.length==2) { - se[sepos++] = Integer.parseInt(bp[0].getPos()); - se[sepos++] = Integer.parseInt(bp[1].getPos()); - } + se[sepos++] = Integer.parseInt(bp[0].getPos()); + se[sepos++] = Integer.parseInt(bp[1].getPos()); } } - return se; - } else - if (locationType!=null) + } + return se; + } + else if (locationType != null) { - if (jalview.bin.Cache.log!=null) - jalview.bin.Cache.log.error("EmbleFeatureLocations.getElementRanges cannot deal with locationType=='"+locationType+"'"); + if (jalview.bin.Cache.log != null) + { + jalview.bin.Cache.log + .error("EmbleFeatureLocations.getElementRanges cannot deal with locationType=='" + + locationType + "'"); + } else - System.err.println("EmbleFeatureLocations.getElementRanges cannot deal with locationType=='"+locationType+"'"); + { + System.err + .println("EmbleFeatureLocations.getElementRanges cannot deal with locationType=='" + + locationType + "'"); + } } // trim range if necessary. - if (se!=null && sepos!=se.length) + if (se != null && sepos != se.length) { int[] trimmed = new int[sepos]; - System.arraycopy(se,0,trimmed, 0, sepos); + System.arraycopy(se, 0, trimmed, 0, sepos); se = trimmed; } return se; - } -} \ No newline at end of file + } +}