diff --git a/uk/ac/sanger/artemis/components/TransferAnnotationTool.java b/uk/ac/sanger/artemis/components/TransferAnnotationTool.java index 8b785875e284fa19db1c63f555a1a146fc5e068c..fe9193e4d4b4eb3732636bdd9a7948cbbb753b79 100644 --- a/uk/ac/sanger/artemis/components/TransferAnnotationTool.java +++ b/uk/ac/sanger/artemis/components/TransferAnnotationTool.java @@ -750,10 +750,19 @@ public class TransferAnnotationTool extends JFrame { StringVector newValues = qualifier.getValues(); StringVector valuesToAdd = new StringVector(); + for (int k = 0; k < newValues.size(); k++) { if(!values.contains(newValues.get(k))) - valuesToAdd.add(newValues.get(k)); + { + if(qualifier.getName().equals("history")) + { + if(!uk.ac.sanger.artemis.components.genebuilder.cv.HistoryBox.contains(values, (String)newValues.get(k))) + valuesToAdd.add(newValues.get(k)); + } + else + valuesToAdd.add(newValues.get(k)); + } } if(valuesToAdd.size() == 0) diff --git a/uk/ac/sanger/artemis/components/genebuilder/cv/HistoryBox.java b/uk/ac/sanger/artemis/components/genebuilder/cv/HistoryBox.java index 2cecf326ee985d5e1cc7a171713647ac543a47ec..184a0624356967cf109a0e73160651feff1a689b 100644 --- a/uk/ac/sanger/artemis/components/genebuilder/cv/HistoryBox.java +++ b/uk/ac/sanger/artemis/components/genebuilder/cv/HistoryBox.java @@ -44,7 +44,7 @@ import uk.ac.sanger.artemis.io.QualifierVector; import uk.ac.sanger.artemis.util.DatabaseDocument; import uk.ac.sanger.artemis.util.StringVector; -class HistoryBox extends AbstractCvBox +public class HistoryBox extends AbstractCvBox { private Box xBox; private int value_index; @@ -164,6 +164,35 @@ class HistoryBox extends AbstractCvBox return false; } + + public static boolean contains(StringVector oldQualValues, String newQualString) + { + for(int i=0; i<oldQualValues.size(); i++) + { + String oldQualString = (String) oldQualValues.get(i); + String oldStr = getField("term=", oldQualString); + String newStr = getField("term=", newQualString); + if(!oldStr.equals(newStr)) + continue; + + oldStr = getFieldIgnoreSeparator("qualifier", oldQualString); + newStr = getFieldIgnoreSeparator("qualifier", newQualString); + if(!oldStr.equals(newStr)) + continue; + + oldStr = getField("date=", oldQualString); + newStr = getField("date=", newQualString); + if(!oldStr.equals(newStr)) + continue; + + oldStr = getField("curatorName=", oldQualString); + newStr = getField("curatorName=", newQualString); + if(oldStr.equals(newStr)) + return true; + } + + return false; + } protected void updateQualifier(QualifierVector qv) {