X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FDBRefEntry.java;fp=src%2Fjalview%2Fdatamodel%2FDBRefEntry.java;h=4a5c888330710c073d9fd635f43ba54907a999c9;hb=304e64fb34b32659be1bbfd39fb4e15b2f79586e;hp=f557ff865aeebf4faf93e5b77f3483c99cb449af;hpb=cfb79b69d9fa44595560659bd95d1d1cd27677ad;p=jalview.git diff --git a/src/jalview/datamodel/DBRefEntry.java b/src/jalview/datamodel/DBRefEntry.java index f557ff8..4a5c888 100755 --- a/src/jalview/datamodel/DBRefEntry.java +++ b/src/jalview/datamodel/DBRefEntry.java @@ -20,6 +20,8 @@ */ package jalview.datamodel; +import java.util.Locale; + import jalview.api.DBRefEntryI; import jalview.util.DBRefUtils; import jalview.util.MapList; @@ -39,6 +41,8 @@ public class DBRefEntry implements DBRefEntryI int sourceKey = Integer.MIN_VALUE; String canonicalSourceName; + + boolean isCanonicalAccession; /* * maps from associated sequence to the database sequence's coordinate system @@ -61,12 +65,25 @@ public class DBRefEntry implements DBRefEntryI */ public DBRefEntry(String source, String version, String accessionId) { - this(source, version, accessionId, null); + this(source, version, accessionId, null,false); } /** * * @param source + * may not be null + * @param version + * may be null + * @param accessionId + * may be null + */ + public DBRefEntry(String source, String version, String accessionId, Mapping map) + { + this(source, version, accessionId, map,false); + } + /** + * + * @param source * canonical source (turned to uppercase; cannot be null) * @param version * (source dependent version string or null) @@ -77,13 +94,14 @@ public class DBRefEntry implements DBRefEntryI * numbering or null) */ public DBRefEntry(String source, String version, String accessionId, - Mapping map) + Mapping map,boolean isCanonical) { - this.source = source.toUpperCase(); + this.source = source.toUpperCase(Locale.ROOT); setVersion(version); this.accessionId = accessionId; this.map = map; + this.isCanonicalAccession=isCanonical; } /** @@ -97,7 +115,7 @@ public class DBRefEntry implements DBRefEntryI : new String(entry.getVersion())), (entry.getAccessionId() == null ? "" : new String(entry.getAccessionId())), - (entry.getMap() == null ? null : new Mapping(entry.getMap()))); + (entry.getMap() == null ? null : new Mapping(entry.getMap())),entry.isCanonical()); } @Override @@ -156,6 +174,7 @@ public class DBRefEntry implements DBRefEntryI return true; } + boolean improved=false; /* * source must either match or be both null */ @@ -179,6 +198,19 @@ public class DBRefEntry implements DBRefEntryI return false; } + if (!isCanonicalAccession && other.isCanonical()) + { + isCanonicalAccession = true; + improved = true; + } + else + { + if (isCanonicalAccession && !other.isCanonical()) + { + // other is not an authoritative source of canonical accessions + return false; + } + } /* * if my version is null, "0" or "source:0" then replace with other version, * otherwise the versions have to match @@ -195,12 +227,15 @@ public class DBRefEntry implements DBRefEntryI if (version != null && (otherVersion == null || !version.equalsIgnoreCase(otherVersion))) { - return false; + // FIXME: there may be a problem with old version strings not allowing + // updating of dbrefentries + return improved; } } /* - * if I have no mapping, take that of the other dbref + * if I have no mapping, take that of the other dbref + * - providing it had a version and so do I */ if (map == null) { @@ -273,7 +308,7 @@ public class DBRefEntry implements DBRefEntryI public void setAccessionId(String accessionId) { this.accessionId = accessionId; -// this.accessionId = (accessionId == null ? "" : accessionId).toUpperCase(); +// this.accessionId = (accessionId == null ? "" : accessionId).toUpperCase(Locale.ROOT); } /** @@ -284,7 +319,7 @@ public class DBRefEntry implements DBRefEntryI { this.source = source; -// this.source = (source == null ? "" : source).toUpperCase(); +// this.source = (source == null ? "" : source).toUpperCase(Locale.ROOT); // this.canonicalSourceName = DBRefUtils.getCanonicalName(this.source); // this.sourceKey = DBRefSource.getSourceKey(this.canonicalSourceName); } @@ -293,7 +328,7 @@ public class DBRefEntry implements DBRefEntryI public void setVersion(String version) { this.version = version; - this.ucversion = (version == null ? null : version.toUpperCase()); + this.ucversion = (version == null ? null : version.toUpperCase(Locale.ROOT)); } @Override @@ -383,4 +418,22 @@ public class DBRefEntry implements DBRefEntryI public String getCanonicalSourceName() { return (canonicalSourceName == null ? (canonicalSourceName = DBRefUtils.getCanonicalName(this.source)) : canonicalSourceName); } + + /** + * + * @param canonical + */ + public void setCanonical(boolean canonical) + { + isCanonicalAccession = canonical; + } + /** + * + * @return true if this is the primary canonical accession for the database source + */ + public boolean isCanonical() + { + // TODO Auto-generated method stub + return isCanonicalAccession; + } }