first cut of merge of STABLE-pre1_0 into HEAD. I won't even guarantee that it
[mir.git] / source / mircoders / storage / DatabaseLinksImcs.java
index 6618251..eba935e 100755 (executable)
@@ -16,45 +16,48 @@ import  mir.misc.*;
  *
  */
 public class DatabaseLinksImcs extends Database
-    implements StorageObject {
-  private static DatabaseLinksImcs instance;
+               implements StorageObject {
+       private static DatabaseLinksImcs instance;
 
-  /**
-   * put your documentation comment here
-   * @return
-   * @exception StorageObjectException
-   */
-  public static DatabaseLinksImcs getInstance () throws StorageObjectException {
-    if (instance == null) {
-      instance = new DatabaseLinksImcs();
-      instance.myselfDatabase = instance;
-    }
-    return  instance;
-  }
+       /**
+        * put your documentation comment here
+        * @return
+        * @exception StorageObjectException
+        */
+       public static DatabaseLinksImcs getInstance () throws StorageObjectException {
+               if (instance == null) {
+                       instance = new DatabaseLinksImcs();
+                       instance.myselfDatabase = instance;
+               }
+               return  instance;
+       }
+
+       /**
+        * put your documentation comment here
+        */
+       private DatabaseLinksImcs () throws StorageObjectException
+       {
+               super();
+               ////this.cache = new HashMap();
+               this.hasTimestamp = false;
+               this.theTable = "links_imcs";
+               try {
+                       this.theEntityClass = Class.forName("mircoders.entity.EntityLinksImcs");
+               } catch (Exception e) {
+                       throw  new StorageObjectException(e.toString());
+               }
+       }
 
-  /**
-   * put your documentation comment here
-   */
-  private DatabaseLinksImcs () throws StorageObjectException
-  {
-    super();
-    //this.cache = new HashMap();
-    this.hasTimestamp = false;
-    this.theTable = "links_imcs";
-    try {
-      this.theEntityClass = Class.forName("mircoders.entity.EntityLinksImcs");
-    } catch (Exception e) {
-      throw  new StorageObjectException(e.toString());
-    }
-  }
+       /** @todo toooo much copy/paste in this class //rk  */
 
-  public String insert (Entity theEntity) throws StorageObjectException {
+       public String insert (Entity theEntity) throws StorageObjectException {
                String returnId = "0";
                Connection con = null;
                PreparedStatement pstmt = null;
                //cache
                invalidatePopupCache();
                try {
+                       HashMap theEntityValues = theEntity.getValues();
                        ArrayList streamedInput = theEntity.streamedInput();
                        StringBuffer f = new StringBuffer();
                        StringBuffer v = new StringBuffer();
@@ -74,12 +77,12 @@ public class DatabaseLinksImcs extends Database
                                                        aValue = "?";
                                                }
                                                else {
-                                                       if (theEntity.hasValueForField(aField)) {
-                if (aField.equals("to_parent_id")) {
-                  aValue = StringUtil.quote((String)theEntity.getValue(aField));
-                } else {
-                                                                 aValue = "'" + StringUtil.quote((String)theEntity.getValue(aField)) + "'";
-                }
+                                                       if (theEntityValues.containsKey(aField)) {
+                                                               if (aField.equals("to_parent_id")) {
+                                                                       aValue = StringUtil.quote((String)theEntityValues.get(aField));
+                                                               } else {
+                                                                       aValue = "'" + StringUtil.quote((String)theEntityValues.get(aField)) + "'";
+                                                               }
                                                        }
                                                }
                                        }
@@ -106,7 +109,7 @@ public class DatabaseLinksImcs extends Database
                        pstmt = con.prepareStatement(sql);
                        if (streamedInput != null) {
                                for (int i = 0; i < streamedInput.size(); i++) {
-                                       String inputString = (String)theEntity.getValue((String)streamedInput.get(i));
+                                       String inputString = (String)theEntityValues.get(streamedInput.get(i));
                                        pstmt.setBytes(i + 1, inputString.getBytes());
                                }
                        }
@@ -129,84 +132,74 @@ public class DatabaseLinksImcs extends Database
                return  returnId;
        }
 
-  public void update (Entity theEntity) throws StorageObjectException {
-    Connection con = null;
-    PreparedStatement pstmt = null;
-    ArrayList streamedInput = theEntity.streamedInput();
-    String id = theEntity.getId();
-    String aField;
-    StringBuffer fv = new StringBuffer();
-    boolean firstField = true;
-    //cache
-    invalidatePopupCache();
-    // build sql statement
-    for (int i = 0; i < getFields().size(); i++) {
-      aField = (String)metadataFields.get(i);
-      // only normal cases
-      if (!(aField.equals(thePKeyName) || aField.equals("webdb_create") ||
-          aField.equals("webdb_lastchange") || (streamedInput != null && streamedInput.contains(aField)))) {
-        if (theEntity.hasValueForField(aField)) {
-          if (firstField == false) {
-            fv.append(", ");
-          }
-          else {
-            firstField = false;
-          }
-          if (aField.equals("to_parent_id")) {
-            fv.append(aField).append("=").append(StringUtil.quote(theEntity.getValue(aField)));
-          } else {
-            fv.append(aField).append("='").append(StringUtil.quote((String)theEntity.getValue(aField))).append("'");
-          }
-        }
-      }
-    }
-    StringBuffer sql = new StringBuffer("update ").append(theTable).append(" set ").append(fv);
-    // exceptions
-    if (metadataFields.contains("webdb_lastchange")) {
-      sql.append(",webdb_lastchange=NOW()");
-    }
-    if (streamedInput != null) {
-      for (int i = 0; i < streamedInput.size(); i++) {
-        sql.append(",").append(streamedInput.get(i)).append("=?");
-      }
-    }
-    sql.append(" where id=").append(id);
-    theLog.printInfo("UPDATE: " + sql);
-    // execute sql
-    try {
-      con = getPooledCon();
-      con.setAutoCommit(false);
-      pstmt = con.prepareStatement(sql.toString());
-      if (streamedInput != null) {
-        for (int i = 0; i < streamedInput.size(); i++) {
-          String inputString = (String)theEntity.getValue((String)streamedInput.get(i));
-          pstmt.setBytes(i + 1, inputString.getBytes());
-        }
-      }
-      pstmt.executeUpdate();
-    } catch (SQLException sqe) {
-      throwSQLException(sqe, "update");
-    } finally {
-      try {
-        con.setAutoCommit(true);
-      } catch (Exception e) {
-        ;
-      }
-      freeConnection(con, pstmt);
-    }
-  }
-
-  /**
-   * put your documentation comment here
-   * @return
-   */
-  public SimpleHash getHashData () {
-    return  getHashData();
-  }
+       public void update (Entity theEntity) throws StorageObjectException {
+               Connection con = null;
+               PreparedStatement pstmt = null;
+               ArrayList streamedInput = theEntity.streamedInput();
+               HashMap theEntityValues = theEntity.getValues();
+               String id = theEntity.getId();
+               String aField;
+               StringBuffer fv = new StringBuffer();
+               boolean firstField = true;
+               //cache
+               invalidatePopupCache();
+               // build sql statement
+               for (int i = 0; i < getFields().size(); i++) {
+                       aField = (String)metadataFields.get(i);
+                       // only normal cases
+                       if (!(aField.equals(thePKeyName) || aField.equals("webdb_create") ||
+                                       aField.equals("webdb_lastchange") || (streamedInput != null && streamedInput.contains(aField)))) {
+                               if (theEntityValues.containsKey(aField)) {
+                                       if (firstField == false) {
+                                               fv.append(", ");
+                                       }
+                                       else {
+                                               firstField = false;
+                                       }
+                                       if (aField.equals("to_parent_id")) {
+                                               fv.append(aField).append("=").append(StringUtil.quote((String)theEntityValues.get(aField)));
+                                       } else {
+                                               fv.append(aField).append("='").append(StringUtil.quote((String)theEntityValues.get(aField))).append("'");
+                                       }
+                               }
+                       }
+               }
+               StringBuffer sql = new StringBuffer("update ").append(theTable).append(" set ").append(fv);
+               // exceptions
+               if (metadataFields.contains("webdb_lastchange")) {
+                       sql.append(",webdb_lastchange=NOW()");
+               }
+               if (streamedInput != null) {
+                       for (int i = 0; i < streamedInput.size(); i++) {
+                               sql.append(",").append(streamedInput.get(i)).append("=?");
+                       }
+               }
+               sql.append(" where id=").append(id);
+               theLog.printInfo("UPDATE: " + sql);
+               // execute sql
+               try {
+                       con = getPooledCon();
+                       con.setAutoCommit(false);
+                       pstmt = con.prepareStatement(sql.toString());
+                       if (streamedInput != null) {
+                               for (int i = 0; i < streamedInput.size(); i++) {
+                                       String inputString = (String)theEntityValues.get(streamedInput.get(i));
+                                       pstmt.setBytes(i + 1, inputString.getBytes());
+                               }
+                       }
+                       pstmt.executeUpdate();
+               } catch (SQLException sqe) {
+                       throwSQLException(sqe, "update");
+               } finally {
+                       try {
+                               con.setAutoCommit(true);
+                       } catch (Exception e) {
+                               ;
+                       }
+                       freeConnection(con, pstmt);
+               }
+       }
 
-  public SimpleList getPopupData () {
-    return  getPopupData();
-  }
 }