diff --git a/artemis_sqlmap/Feature.xml b/artemis_sqlmap/Feature.xml index 28d6b8cda8e0ec92996daf9c54846b730bb06d8b..76d0d876860efbe72bcec7427a7d41fa1c620359 100644 --- a/artemis_sqlmap/Feature.xml +++ b/artemis_sqlmap/Feature.xml @@ -472,6 +472,7 @@ parameterClass="Feature"> UPDATE feature SET uniquename=#uniqueName#, is_obsolete=#obsolete# + <isNotEqual property="name" compareValue="0"> , name=#name# </isNotEqual> <isNotNull property="cvTerm.cvTermId"> , type_id=$cvTerm.cvTermId$ </isNotNull> <isNotNull property="timeLastModified"> , timelastmodified=#timeLastModified# </isNotNull> WHERE feature_id=$featureId$ diff --git a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java index 1a67d782ebadf57881b49980830bcce6a64d816d..53d0a31e36fb912aa8d01a2adf68bcef8ff3489d 100644 --- a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java +++ b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java @@ -625,10 +625,11 @@ public class ChadoTransactionManager private void insertFeature(final Feature feature) { String feature_uniquename = null; + Qualifier qualifier_name = null; try { final Qualifier qualifier_uniquename = feature.getQualifierByName("ID"); - + qualifier_name = feature.getQualifierByName("Name"); if(qualifier_uniquename != null) { feature_uniquename = (String)(qualifier_uniquename.getValues()).elementAt(0); @@ -741,7 +742,8 @@ public class ChadoTransactionManager catch(InvalidRelationException ire){} chado_feature.setUniqueName(feature_uniquename); - chado_feature.setName(feature_uniquename); + if(qualifier_name != null) + chado_feature.setName((String)(qualifier_name.getValues()).elementAt(0)); String key = feature.getKey().toString(); if(key.equals(DatabaseDocument.EXONMODEL)) @@ -1426,7 +1428,9 @@ public class ChadoTransactionManager else qualifierName = new_qualifier.getName(); - if(qualifierName.equals("ID") || qualifierName.equals("isObsolete")) + if(qualifierName.equals("ID") || + qualifierName.equals("isObsolete") || + qualifierName.equals("Name")) { updateFeature(feature, qualifierName, new_qualifier, old_qualifier); return; @@ -1764,7 +1768,7 @@ public class ChadoTransactionManager } /** - * Update feature - uniquename and is_obsolete + * Update feature - uniquename, name and is_obsolete * @param feature * @param qualifierName * @param new_qualifier @@ -1774,13 +1778,11 @@ public class ChadoTransactionManager final String qualifierName, final Qualifier new_qualifier, final Qualifier old_qualifier) - { -// this shouldn't be possible - if(new_qualifier.getValues() == null) - return; - + { final String uniqueName[]; final String isObsolete; + String name = null; + final String log; if(qualifierName.equals("ID")) { @@ -1812,25 +1814,44 @@ public class ChadoTransactionManager uniqueName = new String[1]; uniqueName[0] = (String) feature.getQualifierByName("ID").getValues().get(0); } - isObsolete = (String)new_qualifier.getValues().get(0); - log = "IS_OBSOLETE:"; + if(qualifierName.equals("Name")) + { + if(feature.getQualifierByName("isObsolete") != null) + isObsolete = (String) feature.getQualifierByName("isObsolete").getValues().get(0); + else + isObsolete = "false"; + if(new_qualifier != null) + name = (String)new_qualifier.getValues().get(0); + log = "PRIMARY NAME:"; + } + else + { + isObsolete = (String)new_qualifier.getValues().get(0); + log = "IS_OBSOLETE:"; + } } for(int i = 0; i < uniqueName.length; i++) { org.gmod.schema.sequence.Feature chadoFeature = new org.gmod.schema.sequence.Feature(); chadoFeature.setUniqueName(uniqueName[i]); + + if(qualifierName.equals("Name")) + chadoFeature.setName(name); + else + chadoFeature.setName("0"); + chadoFeature.setObsolete(Boolean.parseBoolean(isObsolete)); - logger4j.debug(uniqueName[i] + " " + log - + (String) new_qualifier.getValues().get(0) + " OLD=" - + (String) old_qualifier.getValues().get(0)); + String logVal = uniqueName[i] + " " + log + + (new_qualifier !=null ? (String) new_qualifier.getValues().get(0) : "NULL") + + " OLD=" + + (old_qualifier != null ? (String) old_qualifier.getValues().get(0) : "NULL"); + logger4j.debug(logVal); ChadoTransaction tsn = new ChadoTransaction(ChadoTransaction.UPDATE, chadoFeature, feature.getLastModified(), feature, - feature.getKey().getKeyString(), "ID="+uniqueName[i] + " " + - log + (String) new_qualifier.getValues().get(0) - + " OLD=" + (String) old_qualifier.getValues().get(0)); + feature.getKey().getKeyString(), "ID="+logVal); if(qualifierName.equals("ID")) tsn.setOldUniquename((String) old_qualifier.getValues().get(0)); diff --git a/uk/ac/sanger/artemis/util/DatabaseDocument.java b/uk/ac/sanger/artemis/util/DatabaseDocument.java index 4d2bfe9695ed53380850d3acae2be2dd3ab11ec2..5d033ac5864f7e5880bc9b71525fde099e6b02a9 100644 --- a/uk/ac/sanger/artemis/util/DatabaseDocument.java +++ b/uk/ac/sanger/artemis/util/DatabaseDocument.java @@ -2681,6 +2681,7 @@ public class DatabaseDocument extends Document if(feature != null) { feature.setTimeLastModified(ts); + feature.setName("0"); // do not change name dao.merge(feature); } }