X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fdatamodel%2FDBRefEntry.java;h=511287bc2da6a2b8649d1cb7bd01b5edc5ccadc6;hb=bed0c230be450b16213e30ee1dcaf3e76ddfc669;hp=54e8379666c51b3dd6b23ce2fd4b36a127d13287;hpb=beff7ac7ab7be2c24ccb179be16b8816d2c18610;p=jalview.git diff --git a/src/jalview/datamodel/DBRefEntry.java b/src/jalview/datamodel/DBRefEntry.java index 54e8379..511287b 100755 --- a/src/jalview/datamodel/DBRefEntry.java +++ b/src/jalview/datamodel/DBRefEntry.java @@ -21,7 +21,6 @@ package jalview.datamodel; import jalview.api.DBRefEntryI; -import jalview.io.vamsas.Dbref; import jalview.util.DBRefUtils; import jalview.util.MapList; @@ -29,16 +28,7 @@ import java.util.List; public class DBRefEntry implements DBRefEntryI { - /* - * the mapping to chromosome (genome) is held as an instance with - * source = speciesId - * version = assemblyId - * accessionId = "chromosome:" + chromosomeId - * map = mapping from sequence to reference assembly - */ - public static final String CHROMOSOME = "chromosome"; - - private String source = ""; + String source = ""; private String version = ""; @@ -49,9 +39,10 @@ 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 */ Mapping map = null; @@ -60,20 +51,37 @@ public class DBRefEntry implements DBRefEntryI { } -/** - * - * @param source may not be null - * @param version may be null - * @param accessionId may be null - */ + + /** + * + * @param source + * may not be null + * @param version + * may be null + * @param accessionId + * may be null + */ 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) @@ -84,13 +92,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(); setVersion(version); this.accessionId = accessionId; this.map = map; + this.isCanonicalAccession=isCanonical; } /** @@ -104,7 +113,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 @@ -163,6 +172,7 @@ public class DBRefEntry implements DBRefEntryI return true; } + boolean improved=false; /* * source must either match or be both null */ @@ -186,6 +196,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 @@ -202,12 +225,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) { @@ -380,16 +406,6 @@ public class DBRefEntry implements DBRefEntryI } /** - * Mappings to chromosome are held with accessionId as "chromosome:id" - * - * @return - */ - public boolean isChromosome() - { - return accessionId != null && accessionId.startsWith(CHROMOSOME + ":"); - } - - /** * stores the upper-case canonical name of the source for use in * Sequence.getPrimaryDBRefs(). * @@ -401,5 +417,21 @@ public class DBRefEntry implements DBRefEntryI 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; + } }