Skip to content
Snippets Groups Projects
Commit a2a599b8 authored by tjc's avatar tjc
Browse files

chado insert & delete featureprop

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@3310 ee4ac58c-ac51-4696-9907-e4b3aa274f04
parent 6cd840e6
No related branches found
No related tags found
No related merge requests found
...@@ -165,9 +165,50 @@ public class ChadoTransaction ...@@ -165,9 +165,50 @@ public class ChadoTransaction
} }
} }
} }
// else if(type == INSERT) else if(type == INSERT)
// else {
sqlBuff.append("INSERT INTO "+chadoTable);
StringBuffer sqlKeys = new StringBuffer();
StringBuffer sqlValues = new StringBuffer();
sqlKeys.append("feature_id , ");
sqlValues.append("(SELECT feature_id FROM feature WHERE uniquename='"+uniquename+"') , ");
String name;
Enumeration enum_prop = properties.keys();
while(enum_prop.hasMoreElements())
{
name = (String)enum_prop.nextElement();
sqlKeys.append(name);
sqlValues.append((String)properties.get(name));
if(enum_prop.hasMoreElements())
{
sqlKeys.append(" , ");
sqlValues.append(" , ");
}
}
sqlBuff.append(" ( "+sqlKeys.toString()+" ) ");
sqlBuff.append(" values ");
sqlBuff.append(" ( "+sqlValues.toString()+" ) ");
}
else if(type == DELETE)
{
sqlBuff.append("DELETE FROM "+chadoTable+" WHERE ");
String name;
String value;
Enumeration enum_constraint = constraint.keys();
while(enum_constraint.hasMoreElements())
{
name = (String)enum_constraint.nextElement();
value = (String)constraint.get(name);
sqlBuff.append(name+"="+value+" AND ");
}
sqlBuff.append("feature_id=(SELECT feature_id FROM feature WHERE uniquename='"+
uniquename+"')");
}
return sqlBuff.toString(); return sqlBuff.toString();
} }
} }
...@@ -39,7 +39,7 @@ import uk.ac.sanger.artemis.FeatureChangeListener; ...@@ -39,7 +39,7 @@ import uk.ac.sanger.artemis.FeatureChangeListener;
import uk.ac.sanger.artemis.FeatureChangeEvent; import uk.ac.sanger.artemis.FeatureChangeEvent;
import java.util.Vector; import java.util.Vector;
import javax.swing.JOptionPane;
/** /**
* *
...@@ -165,42 +165,97 @@ public class ChadoTransactionManager ...@@ -165,42 +165,97 @@ public class ChadoTransactionManager
++qualifier_index) ++qualifier_index)
{ {
final Qualifier this_qualifier = (Qualifier)qualifiers_new.elementAt(qualifier_index); final Qualifier this_qualifier = (Qualifier)qualifiers_new.elementAt(qualifier_index);
if(!qualifiers_old.contains(this_qualifier)) if(!qualifiers_old.contains(this_qualifier))
{ {
String name = this_qualifier.getName(); String name = this_qualifier.getName();
if(qualifiers_old.indexOfQualifierWithName(name) > -1) // update qualifier int old_index = qualifiers_old.indexOfQualifierWithName(name);
Qualifier this_old_qualifier = null;
StringVector old_qualifier_strings = null;
if(old_index> -1) // update qualifier
{
this_old_qualifier = (Qualifier)qualifiers_old.elementAt(old_index);
old_qualifier_strings =
StreamQualifier.toStringVector(null, this_old_qualifier);
}
final StringVector new_qualifier_strings =
StreamQualifier.toStringVector(null, this_qualifier);
String cvterm_id = DatabaseDocument.getCvtermID(name).toString();
if(cvterm_id == null) // chado doesn't recognise this
{
JOptionPane.showMessageDialog(null,
name+" is not a valid qualifier!",
"Invalid Qualifier",
JOptionPane.WARNING_MESSAGE);
continue;
}
if(old_index > -1 &&
new_qualifier_strings.size() == 1 &&
old_qualifier_strings.size() == 1)
{ {
tsn = new ChadoTransaction(ChadoTransaction.UPDATE, tsn = new ChadoTransaction(ChadoTransaction.UPDATE,
feature_id, "featureprop"); feature_id, "featureprop");
final StringVector new_qualifier_strings = String qualifier_string = new_qualifier_strings.elementAt(0);
StreamQualifier.toStringVector(null, this_qualifier); int index = qualifier_string.indexOf("=");
if(index > -1)
qualifier_string = qualifier_string.substring(index+1);
String cvterm_id = DatabaseDocument.getCvtermID(name).toString(); tsn.addProperty("value", "'"+ stripQuotes(qualifier_string) +"'");
tsn.setConstraint("featureprop.type_id", cvterm_id);
sql.add(tsn);
}
else
{
if(old_index > -1) // delete existing featureprops
{
tsn = new ChadoTransaction(ChadoTransaction.DELETE,
feature_id, "featureprop");
tsn.setConstraint("type_id", cvterm_id);
sql.add(tsn);
System.out.println(tsn.getSqlQuery());
}
// insert new featureprops
for(int value_index = 0; value_index < new_qualifier_strings.size(); for(int value_index = 0; value_index < new_qualifier_strings.size();
++value_index) ++value_index)
{ {
tsn = new ChadoTransaction(ChadoTransaction.INSERT,
feature_id, "featureprop");
String qualifier_string = new_qualifier_strings.elementAt(value_index); String qualifier_string = new_qualifier_strings.elementAt(value_index);
int index = qualifier_string.indexOf("="); int index = qualifier_string.indexOf("=");
if(index > -1) if(index > -1)
qualifier_string = qualifier_string.substring(index+1); qualifier_string = qualifier_string.substring(index+1);
tsn.addProperty("value", "'"+qualifier_string+"'"); tsn.addProperty("value", "'"+ stripQuotes(qualifier_string) +"'");
tsn.addProperty("type_id", "'"+cvterm_id+"'");
tsn.addProperty("rank", Integer.toString(value_index));
sql.add(tsn);
System.out.println(tsn.getSqlQuery());
} }
tsn.setConstraint("featureprop.type_id", cvterm_id);
sql.add(tsn);
System.out.println("******** "+DatabaseDocument.getCvtermID(name)); System.out.println("******** "+DatabaseDocument.getCvtermID(name));
System.out.println(tsn.getSqlQuery());
} }
else // insert qualifier
{}
} }
} }
} }
private String stripQuotes(String s)
{
if(s.startsWith("\"") && s.endsWith("\""))
s = s.substring(1,s.length()-1);
return s;
}
/** /**
* *
......
...@@ -304,7 +304,8 @@ public class DatabaseDocument extends Document ...@@ -304,7 +304,8 @@ public class DatabaseDocument extends Document
if(name.equals(cvterm.get(key))) if(name.equals(cvterm.get(key)))
return key; return key;
} }
return new Long("-1."); return null;
// return new Long("-1.");
} }
private String getCvtermName(Connection conn, long id) private String getCvtermName(Connection conn, long id)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment