[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