diff --git a/uk/ac/sanger/artemis/util/DatabaseDocument.java b/uk/ac/sanger/artemis/util/DatabaseDocument.java index f96025548a42d33a4f8cf268088ec0fe0bccb1dc..d3ff19cd895b06430a01936c9fffe0c9a5b1343f 100644 --- a/uk/ac/sanger/artemis/util/DatabaseDocument.java +++ b/uk/ac/sanger/artemis/util/DatabaseDocument.java @@ -1661,10 +1661,10 @@ public class DatabaseDocument extends Document if(showDbId) attr_buff.append("GOid="+dbXRef.getDb().getName() + ":" + dbXRef.getAccession() + "%3B"); - + attr_buff.append("term="+ GFF3Encoder.encode(feature_cvterm.getCvTerm().getName())+"%3B"); - + // PMID int nfound_pub = 0; if(feature_cvterm.getPub() != null && @@ -1672,62 +1672,68 @@ public class DatabaseDocument extends Document !feature_cvterm.getPub().getUniqueName().equalsIgnoreCase("NULL")) { Pub pub = feature_cvterm.getPub(); - attr_buff.append("db_xref="+ - pub.getUniqueName()); + attr_buff.append("db_xref="+pub.getUniqueName()); nfound_pub++; } - - if(featureCvTermPubs != null && - featureCvTermPubs.size() > 0) + + if(featureCvTermPubs != null && featureCvTermPubs.size() > 0) { for(FeatureCvTermPub featureCvTermPub: featureCvTermPubs) { if(feature_cvterm.getFeatureCvTermId() != featureCvTermPub.getFeatureCvTerm().getFeatureCvTermId()) continue; - - if(nfound_pub == 0) - attr_buff.append("db_xref="); - else if(nfound_pub > 0) - attr_buff.append("|"); + attr_buff.append((nfound_pub == 0 ? "db_xref=" : "|")); attr_buff.append(featureCvTermPub.getPub().getUniqueName()); nfound_pub++; } } - + + // GO_REF is stored as a dbxref and displayed in the dbxref column + if(featureCvTermDbXRefs != null && featureCvTermDbXRefs.size() > 0 ) + { + for(FeatureCvTermDbXRef featureCvTermDbXRef: featureCvTermDbXRefs) + { + if(feature_cvterm.getFeatureCvTermId() != + featureCvTermDbXRef.getFeatureCvTerm().getFeatureCvTermId()) + continue; + + DbXRef fc_dbXRef = featureCvTermDbXRef.getDbXRef(); + if(!fc_dbXRef.getDb().getName().equals("GO_REF")) + continue; + attr_buff.append((nfound_pub == 0 ? "db_xref=" : "|")); + attr_buff.append(fc_dbXRef.getDb().getName()+":"); + attr_buff.append(fc_dbXRef.getAccession()); + nfound_pub++; + } + } if(nfound_pub > 0) attr_buff.append("%3B"); - - if(featureCvTermDbXRefs != null && - featureCvTermDbXRefs.size() > 0 ) + + if(featureCvTermDbXRefs != null && featureCvTermDbXRefs.size() > 0 ) { int nfound = 0; for(FeatureCvTermDbXRef featureCvTermDbXRef : featureCvTermDbXRefs) { if(feature_cvterm.getFeatureCvTermId() != featureCvTermDbXRef.getFeatureCvTerm().getFeatureCvTermId()) - { continue; - } - if(nfound == 0) - attr_buff.append("with="); - else if(nfound > 0) - attr_buff.append("|"); - DbXRef fc_dbXRef = featureCvTermDbXRef.getDbXRef(); + if(fc_dbXRef.getDb().getName().equals("GO_REF")) + continue; + attr_buff.append((nfound == 0 ? "with=" : "|")); attr_buff.append(fc_dbXRef.getDb().getName()+":"); attr_buff.append(fc_dbXRef.getAccession()); nfound++; } - if(nfound > 0) attr_buff.append("%3B"); - } - List<FeatureCvTermProp> feature_cvtermprops = (List<FeatureCvTermProp>)feature_cvterm.getFeatureCvTermProps(); + List<FeatureCvTermProp> feature_cvtermprops = + (List<FeatureCvTermProp>)feature_cvterm.getFeatureCvTermProps(); for(int i = 0; i < feature_cvtermprops.size(); i++) { FeatureCvTermProp feature_cvtermprop = feature_cvtermprops.get(i); @@ -1741,7 +1747,6 @@ public class DatabaseDocument extends Document if(i < feature_cvtermprops.size()-1) attr_buff.append("%3B"); } - attr_buff.append(";"); }