-/*
- * put your module comment here
- * formatted with JxBeauty (c) johann.langhofer@nextra.at
- */
-
-
package mircoders.storage;
import java.lang.*;
super();
//this.cache = new HashMap();
this.hasTimestamp = false;
- this.theTable = "linksimcs";
+ this.theTable = "links_imcs";
try {
this.theEntityClass = Class.forName("mircoders.entity.EntityLinksImcs");
} catch (Exception e) {
}
}
+ 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();
+ String aField, aValue;
+ boolean firstField = true;
+ // make sql-string
+ for (int i = 0; i < getFields().size(); i++) {
+ aField = (String)getFields().get(i);
+ if (!aField.equals(thePKeyName)) {
+ aValue = null;
+ // sonderfaelle
+ if (aField.equals("webdb_create")) {
+ aValue = "NOW()";
+ }
+ else {
+ if (streamedInput != null && streamedInput.contains(aField)) {
+ aValue = "?";
+ }
+ else {
+ 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)) + "'";
+ }
+ }
+ }
+ }
+ // wenn Wert gegeben, dann einbauen
+ if (aValue != null) {
+ if (firstField == false) {
+ f.append(",");
+ v.append(",");
+ }
+ else {
+ firstField = false;
+ }
+ f.append(aField);
+ v.append(aValue);
+ }
+ }
+ } // end for
+ // insert into db
+ StringBuffer sqlBuf = new StringBuffer("insert into ").append(theTable).append("(").append(f).append(") values (").append(v).append(")");
+ String sql = sqlBuf.toString();
+ theLog.printInfo("INSERT: " + sql);
+ con = getPooledCon();
+ con.setAutoCommit(false);
+ pstmt = con.prepareStatement(sql);
+ 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.execute();
+ pstmt = con.prepareStatement(theAdaptor.getLastInsertSQL((Database)myselfDatabase));
+ ResultSet rs = pstmt.executeQuery();
+ rs.next();
+ returnId = rs.getString(1);
+ theEntity.setId(returnId);
+ } catch (SQLException sqe) {
+ throwSQLException(sqe, "insert");
+ } finally {
+ try {
+ con.setAutoCommit(true);
+ } catch (Exception e) {
+ ;
+ }
+ freeConnection(con, pstmt);
+ }
+ return returnId;
+ }
+
+ 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);
+ }
+ }
+
/**
* put your documentation comment here
* @return
return getHashData();
}
- public SimpleList getPopupData () {
+ public SimpleList getPopupData () throws StorageObjectException {
return getPopupData();
}
}