[cvs] expresso commit by yves: Yves Amaizo new Fixes about Time columns

JCorporate Ltd jcorp at jcorporate.com
Wed Nov 23 22:46:57 UTC 2005


Log Message:
-----------
Yves Amaizo new Fixes about Time columns handling commit today 2005/11/23 23:45 french time.
Bug corning JDBCExecutor - JDBCDataObject - DBObject - MultiDBObject, fix. PB submitted by M TRAUM

Modified Files:
--------------
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc:
        JDBCExecutor.java
        JDBCDataObject.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj:
        MultiDBObject.java
        DBObject.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/misc:
        DateTimeForThread.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj:
        RowGroupPerms.java

Revision Data
-------------
Index: DBObject.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/DBObject.java,v
retrieving revision 1.257
retrieving revision 1.258
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/DBObject.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/DBObject.java -u -r1.257 -r1.258
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/DBObject.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/DBObject.java
@@ -2419,7 +2419,7 @@
 //   * @author	  Yves Henri AMAIZO
 //   Handle correctly date from resultSet data retrieve from Database
                         try {
-                            if (oneField.isDateType() || oneField.isTimeType()) {
+                            if (oneField.isDateType() || oneField.isTimeType() || oneField.isDateTimeType()) {
                                 oneFieldValue = getCustomStringFieldValue(myConnection, oneField.getName());
                             } else {
 //								if (!oneField.isLongBinaryType() && !oneField.isLongCharacterType()) {
Index: MultiDBObject.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/MultiDBObject.java,v
retrieving revision 1.76
retrieving revision 1.77
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/MultiDBObject.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/MultiDBObject.java -u -r1.76 -r1.77
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/MultiDBObject.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/MultiDBObject.java
@@ -1334,7 +1334,6 @@
             throw new DBException(myName + ":No such object as '"
                     + shortName + "'");
         }
-
         return oneObj;
     }
 
@@ -1648,8 +1647,6 @@
             int rowStringIndex = 1;
             for (Enumeration eachObj = myDBObjects.elements(); eachObj.hasMoreElements();) {
                 oneObj = (DBObject) eachObj.nextElement();
-	        // just like DBObject, any fetch from DB marks this object as current (important for filtering)
-        	oneObj.setStatus(BaseDataObject.STATUS_CURRENT);
 
                 ArrayList retrievedFieldList = (ArrayList) rtrvListByTable.get(getTableName(oneObj));
                 // The following should never happen .... but CYA
@@ -1668,10 +1665,11 @@
 							//   Handle correctly date from resultSet data retrieve from Database
 							//   17/05/2005 at 16:00 
                             
-							if (metaData.isDateType() || metaData.isTimeType()) {
+							if (metaData.isDateType() || metaData.isTimeType() || metaData.isDateTimeType()) {
 								tmpData = oneObj.getCustomStringFieldValue(myConnection, metaData.getName());
 							} else {
-								if (!metaData.isLongBinaryType() && !DBField.CLOB_TYPE.equals(metaData.getTypeString())) {
+//								if (!metaData.isLongBinaryType() && !DBField.CLOB_TYPE.equals(metaData.getTypeString())) {
+								if (!metaData.isLongBinaryType()) {
 									if (myConnection.isStringNotTrim()) {
 										tmpData = myConnection.getStringNoTrim(rowStringIndex);
 									} else {
Index: DateTimeForThread.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/misc/DateTimeForThread.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/misc/DateTimeForThread.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/misc/DateTimeForThread.java -u -r1.2 -r1.3
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/misc/DateTimeForThread.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/misc/DateTimeForThread.java
@@ -96,13 +96,15 @@
 
     private static final Logger log = Logger.getLogger(DateTimeForThread.class);
     public static final String DATE_TIME_FORMAT_FOR_DB = "yyyy-MM-dd HH:mm:ss ";
+	public static final String DATE_FORMAT_FOR_DB = "yyyy-MM-dd ";
+	public static final String TIME_FORMAT_FOR_DB = "HH:mm:ss ";
     
 	private String dataContext = null;
 	
 	private ThreadLocal formattersDateTime = new ThreadLocal() {
 		protected synchronized Object initialValue() {
 			try {
-				String convertFormat = null;
+				String convertFormat = DATE_TIME_FORMAT_FOR_DB;
 				ConfigJdbc myConfig = null;
 				try {
 					myConfig = ConfigManager.getJdbcRequired(getDataContext());
@@ -122,7 +124,7 @@
 	private ThreadLocal formattersDate = new ThreadLocal() {
 		protected synchronized Object initialValue() {
 			try {
-				String convertFormat = null;
+				String convertFormat = DATE_FORMAT_FOR_DB;
 				ConfigJdbc myConfig = null;
 				try {
 					myConfig = ConfigManager.getJdbcRequired(getDataContext());
@@ -142,7 +144,7 @@
 	private ThreadLocal formattersTime = new ThreadLocal() {
 		protected synchronized Object initialValue() {
 			try {
-				String convertFormat = null;
+				String convertFormat = TIME_FORMAT_FOR_DB;
 				ConfigJdbc myConfig = null;
 				try {
 					myConfig = ConfigManager.getJdbcRequired(getDataContext());
Index: JDBCExecutor.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCExecutor.java,v
retrieving revision 1.71
retrieving revision 1.72
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCExecutor.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCExecutor.java -u -r1.71 -r1.72
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCExecutor.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCExecutor.java
@@ -1142,7 +1142,8 @@
                                     if (oneField.isDateType() || oneField.isTimeType() || oneField.isTimeType()) {
                                         tmpData = theObject.getCustomStringFieldValue(myConnection, oneField.getName());
                                     } else {
-                                        if (!oneField.isLongBinaryType() && !DBField.CLOB_TYPE.equals(oneField.getTypeString())) {
+//                                        if (!oneField.isLongBinaryType() && !DBField.CLOB_TYPE.equals(oneField.getTypeString())) {
+                                        if (!oneField.isLongBinaryType()) {
                                             if (myConnection.isStringNotTrim()) {
                                                 tmpData = myConnection.getStringNoTrim(i);
                                             } else {
Index: JDBCDataObject.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCDataObject.java,v
retrieving revision 1.52
retrieving revision 1.53
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCDataObject.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCDataObject.java -u -r1.52 -r1.53
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCDataObject.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JDBCDataObject.java
@@ -1242,10 +1242,11 @@
                 //   Handle correctly date from resultSet data retrieve from Database
                 //   Fix for retrieve time datatye and other specials type like CLOB
                 //   Modified today 09/11/2005 12:10 french time
-                if (oneDBField.isDateType() || oneDBField.isTimeType()) {
+                if (oneDBField.isDateType() || oneDBField.isTimeType() || oneDBField.isDateTimeType()) {
                     tmpData = getCustomStringFieldValue(myConnection, oneDBField.getName());
                 } else {
-                    if (!oneDBField.isLongBinaryType() && !DBField.CLOB_TYPE.equals(oneDBField.getTypeString())) {
+//					if (!oneDBField.isLongBinaryType() && !DBField.CLOB_TYPE.equals(oneDBField.getTypeString())) {
+                    if (!oneDBField.isLongBinaryType()) {
                         if (myConnection.isStringNotTrim()) {
                             tmpData = myConnection.getStringNoTrim(i);
                         } else {
@@ -1507,38 +1508,42 @@
         } catch (ConfigurationException ce) {
             throw new DBException(ce);
         }
-        if (!this.getDef().isReturningValue()) 
-            tempValue = connection.getTimestamp(oneFieldName);
-        else 
-            tempValue = connection.getCStmtTimestamp(Integer.parseInt(oneFieldName));
             
         if (fieldMetadata.isDateTimeType()) {
-            if (StringUtil.notNull(myConfig.getDateTimeSelectFormat()).length() > 0) {
+			if (!this.getDef().isReturningValue()) 
+				tempValue = connection.getTimestamp(oneFieldName);
+			else 
+				tempValue = connection.getCStmtTimestamp(Integer.parseInt(oneFieldName));
+//            if (StringUtil.notNull(myConfig.getDateTimeSelectFormat()).length() > 0) {
 //                oneFieldValue = dateInstance.getDateTimeForDB(connection.getTimestamp(oneFieldName), dbKey);
                 oneFieldValue = dateInstance.getDateTimeForDB(tempValue, dbKey);
-            } else {
-                oneFieldValue = connection.getString(oneFieldName);
-            }
+//            } else {
+//                oneFieldValue = connection.getString(oneFieldName);
+//            }
         }
         if (fieldMetadata.isTimeType()) {
-            if (!StringUtil.notNull(myConfig.getTimeSelectFormat()).equals("")) {
+			if (!this.getDef().isReturningValue()) 
+				tempValue = connection.getTime(oneFieldName);
+			else 
+				tempValue = connection.getCStmtTime(Integer.parseInt(oneFieldName));
+//            if (!StringUtil.notNull(myConfig.getTimeSelectFormat()).equals("")) {
 //                oneFieldValue = dateInstance.getTimeForDB(connection.getTime(oneFieldName), dbKey);
                 oneFieldValue = dateInstance.getTimeForDB(tempValue, dbKey);
-            } else {
-                oneFieldValue = connection.getString(oneFieldName);
-            }
+//            } else {
+//                oneFieldValue = connection.getString(oneFieldName);
+//            }
         }
         if (fieldMetadata.isDateOnlyType()) {
-            if (!StringUtil.notNull(myConfig.getDateSelectFormat()).equals("")) {
+			if (!this.getDef().isReturningValue()) 
+				tempValue = connection.getDate(oneFieldName);
+			else 
+				tempValue = connection.getCStmtDate(Integer.parseInt(oneFieldName));
+//            if (!StringUtil.notNull(myConfig.getDateSelectFormat()).equals("")) {
 //                oneFieldValue = dateInstance.getDateForDB(connection.getDate(oneFieldName), dbKey);
                 oneFieldValue = dateInstance.getDateForDB(tempValue, dbKey);
-            } else {
+//            } else {
 //                oneFieldValue = connection.getString(oneFieldName);
-                if (this.getDef().isReturningValue()) 
-                    oneFieldValue = connection.getCStmtString(Integer.parseInt(oneFieldName));
-                else 
-                    oneFieldValue = connection.getString(oneFieldName);
-            }
+//            }
         }
         return oneFieldValue;
     } /* getCustomStringFieldValue() */
Index: RowGroupPerms.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/RowGroupPerms.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/RowGroupPerms.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/RowGroupPerms.java -u -r1.15 -r1.16
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/RowGroupPerms.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/RowGroupPerms.java
@@ -81,6 +81,7 @@
  * @see com.jcorporate.expresso.services.dbobj.RowPermissions
  */
 public class RowGroupPerms extends DBObject /* ironically, we do not subclass SecuredDBObject because anybody must be able to write their own permissions */ {
+
     public static final String GROUP_PERMISSIONS_TABLE_NAME = "ROW_GRP_PERMS";
     /**
      * field name for name of table
@@ -127,7 +128,7 @@
 
         if ((rowKey.length() + table.length()) > RowPermissions.sMaxKeyLen) {
             throw new DBException("Cannot create row permissions for table: "
-                    + this.getJDBCMetaData().getTargetTable() + " row: " + rowKey
+                    + this.getJDBCMetaData().getTargetSQLTable(this.getDataContext()) + " row: " + rowKey
                     + " because table name + row's ID (PK) exceeds maximum of " + RowPermissions.sMaxKeyLen);
         }
 
@@ -142,12 +143,26 @@
      * @param grp name of group
      */
     public RowGroupPerms(String table, String rowKey, String grp) throws DBException {
-        this(table, rowKey);
+        // test for key length being too large
+        if (rowKey == null) {
+            throw new DBException("null row key");
+        }
+        if (table == null) {
+            throw new DBException("null table name");
+        }
 
         if (grp == null) {
             throw new DBException("null grp name");
         }
 
+        if ((rowKey.length() + table.length() + grp.length()) > RowPermissions.sMaxKeyLen) {
+            throw new DBException("Cannot create row permissions for table: "
+                    + this.getJDBCMetaData().getTargetSQLTable(this.getDataContext()) + " row: " + rowKey
+                    + " because table name + row's ID (PK) exceeds maximum of " + RowPermissions.sMaxKeyLen);
+        }
+
+        setField(TABLE_NAME, table);
+        setField(ROW_KEY, rowKey);
         setField(GROUP, grp);
     }
 
@@ -166,7 +181,7 @@
      * @param obj an object from which attributes will be copied (table, key)
      */
     public RowGroupPerms(RowSecuredDBObject obj, String group) throws DBException {
-        this(obj.getJDBCMetaData().getTargetTable(), obj.getKey(), group);
+        this(obj.getJDBCMetaData().getTargetSQLTable(obj.getDataContext()), obj.getKey(), group);
     }
 
     /**


More information about the cvs mailing list