From 7e66e77d507555899946ad9f0ee08ae6cbf2268c Mon Sep 17 00:00:00 2001 From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04> Date: Thu, 17 Jul 2008 14:51:24 +0000 Subject: [PATCH] allow for removing duplicate qualifiers git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@8266 ee4ac58c-ac51-4696-9907-e4b3aa274f04 --- .../chado/ChadoTransactionManager.java | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java index c05bc8abb..3137f7290 100644 --- a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java +++ b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java @@ -1437,7 +1437,8 @@ public class ChadoTransactionManager String qualifierString = (String)old_qualifier_strings.elementAt(i); if( new_qualifier_strings == null || - !new_qualifier_strings.contains(qualifierString) ) + !new_qualifier_strings.contains(qualifierString) || + isRemovingDuplicateQualifiers(i, new_qualifier_strings, old_qualifier_strings, qualifierString)) { int index = qualifierString.indexOf("="); qualifierString = qualifierString.substring(index+1); @@ -1569,8 +1570,40 @@ public class ChadoTransactionManager addReservedTag(qualifierString, qualifierName, uniquename, feature, old_qualifier_strings, new_qualifier_strings, false); } - } + } + } + + /** + * Check to see if the qualifier appears in the old qualifiers more than + * the new qualifiers + * @param index + * @param newValues + * @param oldValues + * @param qualifier_string + * @return + */ + private boolean isRemovingDuplicateQualifiers(final int index, + final StringVector newValues, + final StringVector oldValues, + final String qualifier_string) + { + if(index > oldValues.indexOf(qualifier_string)) + return false; + + int n_new = 0; + int n_old = 0; + + for(int i=0; i<newValues.size(); i++) + if(((String)newValues.get(i)).equals(qualifier_string)) + n_new++; + for(int i=0; i<oldValues.size(); i++) + if(((String)oldValues.get(i)).equals(qualifier_string)) + n_old++; + + if(n_new < n_old) + return true; + return false; } /** -- GitLab