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
Branches
Tags
No related merge requests found
......@@ -165,8 +165,49 @@ public class ChadoTransaction
}
}
}
// else if(type == INSERT)
// else
else if(type == INSERT)
{
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();
}
......
......@@ -39,7 +39,7 @@ import uk.ac.sanger.artemis.FeatureChangeListener;
import uk.ac.sanger.artemis.FeatureChangeEvent;
import java.util.Vector;
import javax.swing.JOptionPane;
/**
*
......@@ -165,42 +165,97 @@ public class ChadoTransactionManager
++qualifier_index)
{
final Qualifier this_qualifier = (Qualifier)qualifiers_new.elementAt(qualifier_index);
if(!qualifiers_old.contains(this_qualifier))
{
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
{
tsn = new ChadoTransaction(ChadoTransaction.UPDATE,
feature_id, "featureprop");
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,
feature_id, "featureprop");
String qualifier_string = new_qualifier_strings.elementAt(0);
int index = qualifier_string.indexOf("=");
if(index > -1)
qualifier_string = qualifier_string.substring(index+1);
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();
++value_index)
{
tsn = new ChadoTransaction(ChadoTransaction.INSERT,
feature_id, "featureprop");
String qualifier_string = new_qualifier_strings.elementAt(value_index);
int index = qualifier_string.indexOf("=");
if(index > -1)
qualifier_string = qualifier_string.substring(index+1);
tsn.addProperty("value", "'"+qualifier_string+"'");
}
tsn.setConstraint("featureprop.type_id", cvterm_id);
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());
}
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
if(name.equals(cvterm.get(key)))
return key;
}
return new Long("-1.");
return null;
// return new Long("-1.");
}
private String getCvtermName(Connection conn, long id)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment