X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FDBRefEntry.java;h=738c4dc831caf71090ddf09bd57ff458f468be44;hb=0ebcd487f08f9873987d9a32edce7df47aa27927;hp=142d9965fbed5d376db62c555e04fc83f624ab7f;hpb=a21b84a669a9620f6943b9b5054e8756cb6f0687;p=jalview.git diff --git a/src/jalview/datamodel/DBRefEntry.java b/src/jalview/datamodel/DBRefEntry.java index 142d996..738c4dc 100755 --- a/src/jalview/datamodel/DBRefEntry.java +++ b/src/jalview/datamodel/DBRefEntry.java @@ -37,6 +37,7 @@ public class DBRefEntry implements DBRefEntryI } + public DBRefEntry(String source, String version, String accessionId) { this(source, version, accessionId, null); @@ -63,13 +64,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 +98,82 @@ 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(DBRefEntry 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.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 +182,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; @@ -143,39 +222,29 @@ public class DBRefEntry implements DBRefEntryI return accessionId; } - /** - * @param accessionId - * the accessionId to set - */ + @Override public void setAccessionId(String accessionId) { this.accessionId = accessionId; } - /** - * @param source - * the source to set - */ + @Override public void setSource(String source) { this.source = source; } - /** - * @param version - * the version to set - */ + @Override public void setVersion(String version) { this.version = version; } - /** - * @return the map - */ + + @Override public Mapping getMap() { return map; @@ -211,21 +280,25 @@ 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;