diff --git a/uk/ac/sanger/artemis/components/genebuilder/cv/GoBox.java b/uk/ac/sanger/artemis/components/genebuilder/cv/GoBox.java index 871a2b5a4962176517ebdb4b107acb18aa7c45cb..1945ea5f32e88ad00e50a0f186f0c4f0c40a66c7 100644 --- a/uk/ac/sanger/artemis/components/genebuilder/cv/GoBox.java +++ b/uk/ac/sanger/artemis/components/genebuilder/cv/GoBox.java @@ -354,6 +354,9 @@ public class GoBox extends AbstractCvBox return value_index; } + /** + * Update the qualifier from the GO form. + */ protected void updateQualifier(final QualifierVector qv) { int index = qv.indexOfQualifierWithName(origQualifier.getName()); @@ -362,19 +365,51 @@ public class GoBox extends AbstractCvBox final String goId = getField("GOid=", origQualifierString); StringVector values = newQualifier.getValues(); - - int value_index = -10; - + Vector values_index = new Vector(); for(int i=0; i<values.size(); i++) { String newGoId = getField("GOid=", (String)values.get(i)); if(newGoId.equals(goId)) + values_index.add(new Integer(i)); + } + + int value_index = -99; + if(values_index.size() > 0) + { + if(values_index.size() == 1) + value_index = ((Integer)values_index.get(0)).intValue(); + else { - value_index = i; - break; + final String with = getField("with=", origQualifierString); + final String evidence = getField("evidence=", origQualifierString); + final String dbxref = getField("dbxref=", origQualifierString); + for(int i=0; i<values_index.size(); i++) + { + int ind = ((Integer)values_index.get(i)).intValue(); + value_index = ind; + String value = (String) values.get(ind); + + String thisEvidence = getField("evidence=", value); + if(thisEvidence.equals(evidence)) + break; + + if(!with.equals("")) + { + String thisWith = getField("with=", value); + if(thisWith.equals(with)) + break; + } + + if(!dbxref.equals("")) + { + String thisDbxref = getField("dbxref=", value); + if(thisDbxref.equals(dbxref)) + break; + } + } } } - + if(value_index > -1) values.remove(value_index);