X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequenceFeature.java;h=9c4087e96709ff4c2733e4114e5f63a948129d69;hb=f5e0f36fc8da4fd18f255bf3cc82005a2b94e245;hp=4df57ef5fd2588ff7d5810a1e635d568255eb7b2;hpb=ce4840757da155836d19edb70821fce6d2258d88;p=jalview.git diff --git a/src/jalview/datamodel/SequenceFeature.java b/src/jalview/datamodel/SequenceFeature.java index 4df57ef..9c4087e 100755 --- a/src/jalview/datamodel/SequenceFeature.java +++ b/src/jalview/datamodel/SequenceFeature.java @@ -58,9 +58,9 @@ public class SequenceFeature implements FeatureLocationI private static final String ATTRIBUTES = "ATTRIBUTES"; /* - * type, begin, end, featureGroup are final to ensure that - * the integrity of SequenceFeatures data store can't be - * broken by direct update of these fields + * type, begin, end, featureGroup, score and contactFeature are final + * to ensure that the integrity of SequenceFeatures data store + * can't be broken by direct update of these fields */ public final String type; @@ -70,7 +70,9 @@ public class SequenceFeature implements FeatureLocationI public final String featureGroup; - public float score; + public final float score; + + private final boolean contactFeature; public String description; @@ -91,7 +93,8 @@ public class SequenceFeature implements FeatureLocationI */ public SequenceFeature(SequenceFeature cpy) { - this(cpy, cpy.getBegin(), cpy.getEnd(), cpy.getFeatureGroup()); + this(cpy, cpy.getBegin(), cpy.getEnd(), cpy.getFeatureGroup(), cpy + .getScore()); } /** @@ -106,12 +109,7 @@ public class SequenceFeature implements FeatureLocationI public SequenceFeature(String theType, String theDesc, int theBegin, int theEnd, String group) { - this.type = theType; - this.description = theDesc; - this.begin = theBegin; - this.end = theEnd; - this.featureGroup = group; - this.score = NO_SCORE; + this(theType, theDesc, theBegin, theEnd, NO_SCORE, group); } /** @@ -127,25 +125,36 @@ public class SequenceFeature implements FeatureLocationI public SequenceFeature(String theType, String theDesc, int theBegin, int theEnd, float theScore, String group) { - this(theType, theDesc, theBegin, theEnd, group); + this.type = theType; + this.description = theDesc; + this.begin = theBegin; + this.end = theEnd; + this.featureGroup = group; this.score = theScore; + + /* + * for now, only "Disulfide/disulphide bond" is treated as a contact feature + */ + this.contactFeature = "disulfide bond".equalsIgnoreCase(type) + || "disulphide bond".equalsIgnoreCase(type); } /** - * A copy constructor that allows the begin and end positions and group to be - * modified + * A copy constructor that allows the value of final fields to be 'modified' * * @param sf + * @param newType * @param newBegin * @param newEnd * @param newGroup + * @param newScore */ - public SequenceFeature(SequenceFeature sf, int newBegin, int newEnd, - String newGroup) + public SequenceFeature(SequenceFeature sf, String newType, int newBegin, + int newEnd, String newGroup, float newScore) { - this(sf.getType(), newBegin, newEnd, newGroup); - score = sf.score; - description = sf.description; + this(newType, sf.getDescription(), newBegin, newEnd, newScore, + newGroup); + if (sf.otherDetails != null) { otherDetails = new HashMap(); @@ -165,20 +174,18 @@ public class SequenceFeature implements FeatureLocationI } /** - * Constructor that sets the final fields type, begin, end, group + * A copy constructor that allows the value of final fields to be 'modified' * - * @param theType - * @param theBegin - * @param theEnd - * @param theGroup + * @param sf + * @param newBegin + * @param newEnd + * @param newGroup + * @param newScore */ - private SequenceFeature(String theType, int theBegin, int theEnd, - String theGroup) + public SequenceFeature(SequenceFeature sf, int newBegin, int newEnd, + String newGroup, float newScore) { - type = theType; - begin = theBegin; - end = theEnd; - featureGroup = theGroup; + this(sf, sf.getType(), newBegin, newEnd, newGroup, newScore); } /** @@ -226,8 +233,8 @@ public class SequenceFeature implements FeatureLocationI return false; } - if (!(type + description + featureGroup + getPhase()).equals(sf.type - + sf.description + sf.featureGroup + sf.getPhase())) + if (!(type + description + featureGroup + getPhase()).equals( + sf.type + sf.description + sf.featureGroup + sf.getPhase())) { return false; } @@ -339,11 +346,6 @@ public class SequenceFeature implements FeatureLocationI return score; } - public void setScore(float value) - { - score = value; - } - /** * Used for getting values which are not in the basic set. eg STRAND, PHASE * for GFF file @@ -521,13 +523,7 @@ public class SequenceFeature implements FeatureLocationI @Override public boolean isContactFeature() { - // TODO abstract one day to a FeatureType class - if ("disulfide bond".equalsIgnoreCase(type) - || "disulphide bond".equalsIgnoreCase(type)) - { - return true; - } - return false; + return contactFeature; } /**