X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FDBRefEntry.java;h=a641b1bfdd3300ed55c4d8044512dd27efa06448;hb=53e232c25d1956fdcc239b0db8d6b18cecc601a4;hp=0b1fb6ddcac21154465755813c5e33d2fca895a9;hpb=9b6d2ddd33ba5e479953700040e1129847e47a06;p=jalview.git diff --git a/src/jalview/datamodel/DBRefEntry.java b/src/jalview/datamodel/DBRefEntry.java index 0b1fb6d..a641b1b 100755 --- a/src/jalview/datamodel/DBRefEntry.java +++ b/src/jalview/datamodel/DBRefEntry.java @@ -25,8 +25,6 @@ import jalview.api.DBRefEntryI; public class DBRefEntry implements DBRefEntryI { String source = "", version = "", accessionId = ""; - - private int startRes, endRes; /** * maps from associated sequence to the database sequence's coordinate system */ @@ -37,6 +35,7 @@ public class DBRefEntry implements DBRefEntryI } + public DBRefEntry(String source, String version, String accessionId) { this(source, version, accessionId, null); @@ -63,13 +62,14 @@ public class DBRefEntry implements DBRefEntryI this.map = map; } - public DBRefEntry(DBRefEntry entry) + public DBRefEntry(DBRefEntryI entry) { - this( - (entry.source == null ? "" : new String(entry.source)), - (entry.version == null ? "" : new String(entry.version)), - (entry.accessionId == null ? "" : new String(entry.accessionId)), - (entry.map == null ? null : new Mapping(entry.map))); + this((entry.getSource() == null ? "" : new String(entry.getSource())), + (entry.getVersion() == null ? "" : new String( + entry.getVersion())), + (entry.getAccessionId() == null ? "" : new String( + entry.getAccessionId())), + (entry.getMap() == null ? null : new Mapping(entry.getMap()))); } @Override @@ -96,6 +96,85 @@ public class DBRefEntry implements DBRefEntryI } /** + * Answers true if this object is either equivalent to, or can be 'improved' + * by, the given entry. Specifically, answers true if + * + * + * @param other + * @return + */ + @Override + public boolean updateFrom(DBRefEntryI other) + { + if (other == null) + { + return false; + } + if (other == this) + { + return true; + } + + /* + * source must either match or be both null + */ + String otherSource = other.getSource(); + if ((source == null && otherSource != null) + || (source != null && otherSource == null) + || (source != null && !source.equalsIgnoreCase(otherSource))) + { + return false; + } + + /* + * accession id must either match or be both null + */ + String otherAccession = other.getAccessionId(); + if ((accessionId == null && otherAccession != null) + || (accessionId != null && otherAccession == null) + || (accessionId != null && !accessionId.equalsIgnoreCase(otherAccession))) + { + return false; + } + + /* + * if my version is null, "0" or "source:0" then replace with other version, + * otherwise the versions have to match + */ + String otherVersion = other.getVersion(); + + if ((version == null || version.equals("0") || version.endsWith(":0")) + && otherVersion != null) + { + setVersion(otherVersion); + } + else + { + if (version != null + && (otherVersion == null || !version + .equalsIgnoreCase(otherVersion))) + { + return false; + } + } + + /* + * if I have no mapping, take that of the other dbref + */ + if (map == null) + { + setMap(other.getMap()); + } + return true; + } + + /** * test for similar DBRef attributes, except for the map object. * * @param entry @@ -104,6 +183,7 @@ public class DBRefEntry implements DBRefEntryI @Override public boolean equalRef(DBRefEntryI entry) { + // TODO is this method and equals() not needed? if (entry == null) { return false; @@ -165,6 +245,7 @@ public class DBRefEntry implements DBRefEntryI } + @Override public Mapping getMap() { return map; @@ -199,28 +280,4 @@ public class DBRefEntry implements DBRefEntryI { return getSrcAccString(); } - - @Override - public int getStartRes() - { - return startRes; - } - - @Override - public void setStartRes(int startRes) - { - this.startRes = startRes; - } - - @Override - public int getEndRes() - { - return endRes; - } - - @Override - public void setEndRes(int endRes) - { - this.endRes = endRes; - } }