Print

Print


Author: [log in to unmask]
Date: Thu Dec 11 11:32:57 2014
New Revision: 1691

Log:
Simplify conditions object API.  Database operations will go through the collection interface instead.

Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObject.java
    java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObject.java

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObject.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObject.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObject.java	Thu Dec 11 11:32:57 2014
@@ -1,14 +1,6 @@
 package org.hps.conditions.api;
 
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.List;
-
-import org.hps.conditions.database.DatabaseConditionsManager;
-import org.hps.conditions.database.DatabaseUtilities;
-import org.hps.conditions.database.QueryBuilder;
-import org.hps.conditions.database.TableMetaData;
+import java.util.Map.Entry;
 
 /**
  * The abstract implementation of {@link ConditionsObject}.
@@ -16,88 +8,25 @@
  */
 public abstract class AbstractConditionsObject implements ConditionsObject {
 
-    private TableMetaData tableMetaData = null;
     protected int rowId = -1;
-    protected int collectionId = -1;
     protected FieldValueMap fieldValues;
 
-    /**
+    /** 
      * Constructor for sub-classing.
      */
     protected AbstractConditionsObject() {
         fieldValues = new FieldValueMap();
     }
 
-    public TableMetaData getTableMetaData() {
-        return tableMetaData;
-    }
-
     public int getRowId() {
         return rowId;
-    }
-
-    public int getCollectionId() {
-        return collectionId;
     }
 
     public boolean isNew() {
         return rowId == -1;
     }
 
-    public void delete() throws ConditionsObjectException {
-        String query = QueryBuilder.buildDelete(tableMetaData.getTableName(), rowId);
-        // TODO: Replace this with a method that takes a conditions object.
-        DatabaseConditionsManager.getInstance().updateQuery(query);
-        rowId = -1;
-    }
-
-    public void insert() throws ConditionsObjectException {
-        if (fieldValues.size() == 0)
-            throw new ConditionsObjectException("There are no field values to insert.");
-        if (collectionId == -1)
-            throw new ConditionsObjectException("The object's collection ID is not valid.");
-        // TODO: Replace this with a method that takes a conditions object.
-        String query = QueryBuilder.buildInsert(getTableMetaData().getTableName(), getCollectionId(), getTableMetaData().getFieldNames(), fieldValues.valuesToArray());
-        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);
-    }
-
-    public void select() throws ConditionsObjectException {
-        if (isNew()) {
-            throw new ConditionsObjectException("Record has not been inserted into the database yet.");
-        }
-        // TODO: Replace this with method that takes a conditions object.
-        String query = QueryBuilder.buildSelect(getTableMetaData().getTableName(), collectionId, fieldValues.fieldsToArray(), "id ASC");
-        DatabaseConditionsManager manager = DatabaseConditionsManager.getInstance();
-        ResultSet resultSet = manager.selectQuery(query);
-        try {
-            ResultSetMetaData metadata = resultSet.getMetaData();
-            int ncolumns = metadata.getColumnCount();
-            if (resultSet.next()) {
-                for (int i = 1; i <= ncolumns; i++) {
-                    fieldValues.put(metadata.getColumnName(i), resultSet.getObject(i));
-                }
-            }
-        } catch (SQLException e) {
-            throw new ConditionsObjectException(e.getMessage(), this);
-        }
-        DatabaseUtilities.close(resultSet);
-        resultSet = null;
-    }
-
-    public void update() throws ConditionsObjectException {
-        if (fieldValues.size() == 0) {
-            throw new ConditionsObjectException("No field values to update.", this);
-        }
-        // TODO: Replace this with method that takes a conditions object.
-        String query = QueryBuilder.buildUpdate(tableMetaData.getTableName(), rowId, fieldValues.fieldsToArray(), fieldValues.valuesToArray());
-        DatabaseConditionsManager.getInstance().updateQuery(query);
-    }
-
+   
     public void setFieldValue(String key, Object value) {
         fieldValues.put(key, value);
     }
@@ -119,18 +48,6 @@
         return (T) fieldValues.get(field);
     }
 
-    public void setTableMetaData(TableMetaData tableMetaData) throws ConditionsObjectException {
-        if (this.tableMetaData != null)
-            throw new ConditionsObjectException("The table meta data cannot be reset on an object.", this);
-        this.tableMetaData = tableMetaData;
-    }
-
-    public void setCollectionId(int collectionId) throws ConditionsObjectException {
-        if (this.collectionId != -1)
-            throw new ConditionsObjectException("The collection ID cannot be reassigned once set.", this);
-        this.collectionId = collectionId;
-    }
-
     public void setRowId(int rowId) throws ConditionsObjectException {
         if (!isNew()) {
             throw new ConditionsObjectException("The row ID cannot be reassigned on an existing object.");
@@ -142,8 +59,8 @@
         StringBuffer sb = new StringBuffer();
         sb.append(this.getRowId());
         sb.append('\t');
-        for (String fieldName : getTableMetaData().getFieldNames()) {
-            sb.append(getFieldValue(fieldName));
+        for (Entry<String, Object> entries : this.getFieldValues().entrySet()) {
+            sb.append(entries.getValue());
             sb.append('\t');
         }
         return sb.toString();

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObject.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObject.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObject.java	Thu Dec 11 11:32:57 2014
@@ -8,47 +8,19 @@
  * -1 which indicates they are not in the database yet.
  * @author Jeremy McCormick <[log in to unmask]>
  */
-// TODO: The collection ID should be a regular field in the FieldValueMap.
 public interface ConditionsObject {
 
     /**
      * Get the database table meta data associated to this object.
      * @return The database table meta data associated to this object.
      */
-    TableMetaData getTableMetaData();
+    //TableMetaData getTableMetaData();
 
     /**
      * Get the row ID of this object.
      * @return The database row ID.
      */
     int getRowId();
-
-    /**
-     * Get the collection ID of this object identifying its unique collection.
-     * @return The collection ID.
-     */
-    int getCollectionId();
-
-    /**
-     * Update this row in the database using a SQL UPDATE statement.
-     */
-    void update() throws ConditionsObjectException;
-
-    /**
-     * Delete this object's row in the database using a SQL DELETE statement.
-     */
-    void delete() throws ConditionsObjectException;
-
-    /**
-     * Insert this object into the database using a SQL INSERT statement.
-     */
-    void insert() throws ConditionsObjectException;
-
-    /**
-     * Select data into this object from the database using a SQL SELECT
-     * statement.
-     */
-    void select() throws ConditionsObjectException;
 
     /**
      * Generic set method for field values. This will set the object to the
@@ -86,22 +58,6 @@
     public <T> T getFieldValue(String field);
 
     /**
-     * Set the ConditionsTableMetaData of this object. This cannot be reset once
-     * set.
-     * @param tableMetaData The ConditionsTableMetaData.
-     * @throws ConditionsObjectException if already set
-     */
-    void setTableMetaData(TableMetaData tableMetaData) throws ConditionsObjectException;
-
-    /**
-     * Set the collection ID of this object. This cannot be reset once set to a
-     * valid ID (e.g. not -1).
-     * @param collectionId The collection ID.
-     * @throws ConditionsObjectException if already set
-     */
-    void setCollectionId(int collectionId) throws ConditionsObjectException;
-
-    /**
      * Set the row ID of this object. This cannot be reset once set to a valid
      * ID (e.g. not -1).
      * @param rowId The object's row ID.