* Treiber, Host, User und Passwort, ueber den der Zugriff auf die
* Datenbank erfolgt.
*
- * @version $Id: Database.java,v 1.44.2.1 2003/05/22 19:45:06 zapata Exp $
+ * @version $Id: Database.java,v 1.44.2.4 2003/06/23 15:24:06 zapata Exp $
* @author rk
*
*/
private String database_url;
private int defaultLimit;
protected DatabaseAdaptor theAdaptor;
- private SimpleDateFormat _dateFormatterOut =
- new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- private SimpleDateFormat _dateFormatterIn =
- new SimpleDateFormat("yyyy-MM-dd HH:mm");
- private Calendar _cal = new GregorianCalendar();
+ TimeZone timezone;
+ SimpleDateFormat internalDateFormat;
+ SimpleDateFormat userInputDateFormat;
+/*
+ private SimpleDateFormat _dateFormatterOut;
+ private SimpleDateFormat _dateFormatterIn;
+ _dateFormatterOut = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ _dateFormatterIn = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+*/
/**
* Kontruktor bekommt den Filenamen des Konfigurationsfiles ?bergeben.
throw new StorageObjectFailure(e);
}
logger = new LoggerWrapper("Database");
+ timezone = TimeZone.getTimeZone(configuration.getString("Mir.DefaultTimezone"));
+ internalDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ internalDateFormat.setTimeZone(timezone);
+
+ userInputDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ userInputDateFormat.setTimeZone(timezone);
+
String theAdaptorName = configuration.getString("Database.Adaptor");
defaultLimit = Integer.parseInt(configuration.getString("Database.Limit"));
if (!rs.wasNull()) {
java.util.Date date = new java.util.Date(timestamp.getTime());
- outValue = _dateFormatterOut.format(date);
- _cal.setTime(date);
-
- int offset =
- _cal.get(Calendar.ZONE_OFFSET) + _cal.get(Calendar.DST_OFFSET);
- String tzOffset =
- StringUtil.zeroPaddingNumber(offset / _millisPerHour, 2, 2);
- outValue = outValue + "+" + tzOffset;
+
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ calendar.setTimeZone(timezone);
+ outValue = internalDateFormat.format(date);
+
+ int offset = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
+ String tzOffset = StringUtil.zeroPaddingNumber(Math.abs(offset) / _millisPerHour, 2, 2);
+
+ if (offset<0)
+ outValue = outValue + "-";
+ else
+ outValue = outValue + "+";
+ outValue = outValue + tzOffset;
}
break;
aValue = null;
// exceptions
- if (aField.equals("webdb_create") ||
- aField.equals("webdb_lastchange")) {
+ if (!theEntity.hasValueForField(aField) && (
+ aField.equals("webdb_create") ||
+ aField.equals("webdb_lastchange"))) {
aValue = "NOW()";
}
else {
if ((streamedInput != null) && streamedInput.contains(aField)) {
aValue = "?";
- } else {
+ }
+ else {
if (theEntity.hasValueForField(aField)) {
aValue =
"'" +
- JDBCStringRoutines.escapeStringLiteral((String) theEntity.getValue(
- aField)) + "'";
+ JDBCStringRoutines.escapeStringLiteral((String) theEntity.getValue(aField)) + "'";
}
}
}
// TimeStamp stuff
try {
- java.util.Date d = _dateFormatterIn.parse(dateString);
- Timestamp tStamp = new Timestamp(d.getTime());
- sql.append(",webdb_create='" + tStamp.toString() + "'");
- } catch (ParseException e) {
+ java.util.Date d = userInputDateFormat.parse(dateString);
+// Timestamp tStamp = new Timestamp(d.getTime());
+ sql.append(",webdb_create='" + JDBCStringRoutines.formatDate(d) + "'");
+ }
+ catch (ParseException e) {
throw new StorageObjectFailure(e);
}
}
return (res > 0) ? true : false;
}
+ /**
+ * Deletes entities based on a where clause
+ *
+ * @param aWhereClause
+ * @return
+ * @throws StorageObjectFailure
+ */
+ public int deleteByWhereClause(String aWhereClause) throws StorageObjectFailure {
+ invalidatePopupCache();
+ if (StoreUtil.implementsStorableObject(theEntityClass)) {
+ StoreContainerType stoc_type = StoreContainerType.valueOf(theEntityClass, StoreContainerType.STOC_TYPE_ENTITYLIST);
+ o_store.invalidate(stoc_type);
+ }
+
+ Statement stmt = null;
+ Connection con = null;
+ int res = 0;
+ String sql =
+ "delete from " + theTable + " where " + aWhereClause;
+
+ //theLog.printInfo("DELETE " + sql);
+ try {
+ con = getPooledCon();
+ stmt = con.createStatement();
+ res = stmt.executeUpdate(sql);
+ }
+ catch (SQLException sqe) {
+ throwSQLException(sqe, "delete");
+ }
+ finally {
+ freeConnection(con, stmt);
+ }
+
+ return res;
+ }
+
/* noch nicht implementiert.
* @return immer false
*/