Author: [log in to unmask]
Date: Thu Nov 13 11:53:11 2014
New Revision: 1508
Log:
Implement insert command for ConditionsRecord.
Modified:
java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsRecord.java
java/trunk/conditions/src/main/java/org/hps/conditions/QueryBuilder.java
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsRecord.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsRecord.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsRecord.java Thu Nov 13 11:53:11 2014
@@ -1,6 +1,7 @@
package org.hps.conditions;
import java.util.Date;
+import java.util.List;
/**
* This class represents a single record from the primary conditions data table,
@@ -9,9 +10,6 @@
*
* @author Jeremy McCormick <[log in to unmask]>
*/
-// TODO: Check behavior of select, delete, update and insert operations.
-// TODO: Override default behavior of methods in super class that don't make
-// sense.
public final class ConditionsRecord extends AbstractConditionsObject {
/**
@@ -26,13 +24,25 @@
public void add(ConditionsRecord record) {
objects.add(record);
}
-
- // FIXME: Should probably override more methods here that don't make
- // sense for
- // this type!
}
- protected ConditionsRecord() {
+ public ConditionsRecord() {
+ }
+
+ public void insert() throws ConditionsObjectException {
+ if (!isNew())
+ throw new ConditionsObjectException("Record already exists in database and cannot be inserted.");
+ if (isReadOnly())
+ throw new ConditionsObjectException("This object is set to read only mode.");
+ if (fieldValues.size() == 0)
+ throw new ConditionsObjectException("There are no field values to insert.");
+ String query = QueryBuilder.buildInsert(getTableMetaData().getTableName(), this.getFieldValues());
+ System.out.println(query);
+ List<Integer> keys = DatabaseConditionsManager.getInstance().updateQuery(query);
+ if (keys.size() != 1) {
+ throw new ConditionsObjectException("SQL insert returned wrong number of keys: " + keys.size());
+ }
+ rowId = keys.get(0);
}
/**
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/QueryBuilder.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/QueryBuilder.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/QueryBuilder.java Thu Nov 13 11:53:11 2014
@@ -1,6 +1,10 @@
package org.hps.conditions;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
+
+import org.hps.conditions.ConditionsObject.FieldValueMap;
/**
* This is a static utility class for building SQL queries for the conditions
@@ -64,6 +68,31 @@
return buff.toString();
}
+ static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
+
+ public static String buildInsert(String tableName, FieldValueMap fieldValues) {
+ if (fieldValues.size() == 0) {
+ throw new IllegalArgumentException("The FieldValueMap has no values.");
+ }
+ StringBuffer buff = new StringBuffer();
+ buff.append("INSERT INTO " + tableName + " (");
+ for (String fieldName : fieldValues.keySet()) {
+ buff.append(" " + fieldName + ",");
+ }
+ buff.setLength(buff.length() - 1);
+ buff.append(" ) VALUES (");
+ for (Object value : fieldValues.values()) {
+ String insertValue = value.toString();
+ if (value instanceof Date) {
+ insertValue = dateFormat.format((Date) value);
+ }
+ buff.append(" '" + insertValue + "',");
+ }
+ buff.setLength(buff.length() - 1);
+ buff.append(")");
+ return buff.toString();
+ }
+
public static String buildInsert(String tableName, int collectionID, List<String> columnNames, List<List<String>> rows) {
StringBuffer buff = new StringBuffer();
buff.append("INSERT INTO " + tableName + " ( collection_id");
|