From 22771652ffa56517565d5ea2833823a9e5a1d645 Mon Sep 17 00:00:00 2001 From: tcarver <tjc> Date: Tue, 26 Jul 2011 14:28:40 +0100 Subject: [PATCH] extra check in getQualifierWithoutDuplicateValues() for history qualifiers --- .../components/TransferAnnotationTool.java | 11 ++++++- .../components/genebuilder/cv/HistoryBox.java | 31 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/uk/ac/sanger/artemis/components/TransferAnnotationTool.java b/uk/ac/sanger/artemis/components/TransferAnnotationTool.java index 8b785875e..fe9193e4d 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 2cecf326e..184a06243 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) { -- GitLab