fix up the webdb_create update stuff
[mir.git] / source / mir / storage / Database.java
index 2e8f893..c3a6e93 100755 (executable)
@@ -27,10 +27,19 @@ import  mir.misc.*;
  * Treiber, Host, User und Passwort, ueber den der Zugriff auf die
  * Datenbank erfolgt.
  *
- * @version $Revision: 1.18 $ $Date: 2002/06/28 20:42:13 $
+ * @version $Revision: 1.21 $ $Date: 2002/08/04 23:38:22 $
  * @author $Author: mh $
  *
  * $Log: Database.java,v $
+ * Revision 1.21  2002/08/04 23:38:22  mh
+ * fix up the webdb_create update stuff
+ *
+ * Revision 1.20  2002/07/21 22:32:25  mh
+ * on insert, the "webdb_lastchange" field should get a value
+ *
+ * Revision 1.19  2002/06/29 15:44:46  mh
+ * make the webdb_create update be called webdb_create_update. it breaks things otherwise. a fixme case I know..
+ *
  * Revision 1.18  2002/06/28 20:42:13  mh
  * added necessary bits in templates and Database.java to make webdb_create modifiable. make the conversion from sql/Timestamp to String more robust
  *
@@ -63,7 +72,7 @@ public class Database implements StorageObject {
   private SimpleDateFormat _dateFormatterOut = 
                                     new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   private SimpleDateFormat _dateFormatterIn = 
-                                    new SimpleDateFormat("yyyy-MM-dd");
+                                    new SimpleDateFormat("yyyy-MM-dd HH:mm");
   private Calendar _cal = new GregorianCalendar();
 
   private static final int _millisPerHour = 60 * 60 * 1000;
@@ -665,7 +674,8 @@ public class Database implements StorageObject {
                                if (!aField.equals(thePKeyName)) {
                                        aValue = null;
                                        // sonderfaelle
-                                       if (aField.equals("webdb_create")) {
+                                       if (aField.equals("webdb_create") ||
+              aField.equals("webdb_lastchange")) {
                                                aValue = "NOW()";
                                        }
                                        else {
@@ -786,16 +796,25 @@ public class Database implements StorageObject {
                if (metadataFields.contains("webdb_lastchange")) {
                        sql.append(",webdb_lastchange=NOW()");
                }
+    // special case: the webdb_create requires the field in yyyy-mm-dd HH:mm
+    // format so anything extra will be ignored. -mh
                if (metadataFields.contains("webdb_create") &&
         theEntity.hasValueForField("webdb_create")) {
-      // TimeStamp stuff
-      try {
-        java.util.Date d = _dateFormatterIn.parse(
-                                            theEntity.getValue("webdb_create"));
-        Timestamp tStamp = new Timestamp(d.getTime());
-        sql.append(",webdb_create='"+tStamp.toString()+"'");
-      } catch (ParseException e) {
-        throw new StorageObjectException(e.toString());
+      // minimum of 10 (yyyy-mm-dd)...
+      if (theEntity.getValue("webdb_create").length() >= 10) {
+        String dateString = theEntity.getValue("webdb_create");
+        // if only 10, then add 00:00 so it doesn't throw a ParseException
+        if (dateString.length() == 10)
+          dateString=dateString+" 00:00";
+
+        // 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) {
+          throw new StorageObjectException(e.toString());
+        }
       }
                }
                if (streamedInput != null) {