Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/type
In directory sc8-pr-cvs1:/tmp/cvs-serv4862
Modified Files:
LocaleType.java TimestampType.java
Log Message:
fixed (?) a problem with DB2 + TimestampType
applied Benoit Menendez' patch to LocaleType
Index: LocaleType.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/type/LocaleType.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** LocaleType.java 28 Oct 2002 15:41:53 -0000 1.3
--- LocaleType.java 18 Dec 2002 12:50:39 -0000 1.4
***************
*** 20,33 ****
else {
StringTokenizer tokens = new StringTokenizer(str, "_");
! switch ( tokens.countTokens() ) {
! case 3:
! return new Locale( tokens.nextToken(), tokens.nextToken(), tokens.nextToken() );
! case 2:
! return new Locale( tokens.nextToken(), tokens.nextToken() );
! /*case 1: //JDK1.4 only
! return new Locale( tokens.nextToken() );*/
! default:
! throw new HibernateException("Locale name wrong format: " + str);
! }
}
}
--- 20,27 ----
else {
StringTokenizer tokens = new StringTokenizer(str, "_");
! String language = tokens.hasMoreTokens() ? tokens.nextToken() : "";
! String country = tokens.hasMoreTokens() ? tokens.nextToken() : "";
! String variant = tokens.hasMoreTokens() ? tokens.nextToken() : "";
! return new Locale(language, country, variant);
}
}
Index: TimestampType.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/type/TimestampType.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -C2 -d -r1.30 -r1.31
*** TimestampType.java 20 Nov 2002 14:20:10 -0000 1.30
--- TimestampType.java 18 Dec 2002 12:50:39 -0000 1.31
***************
*** 46,69 ****
if (x==null || y==null) return false;
! if (
! x instanceof Timestamp &&
! y instanceof Timestamp &&
! ( (Timestamp) x ).getNanos() != ( (Timestamp) y ).getNanos()
! ) return false;
!
! return ( (java.util.Date) x ).getTime()==( (java.util.Date) y ).getTime();
- /*Calendar calendar1 = java.util.Calendar.getInstance();
- Calendar calendar2 = java.util.Calendar.getInstance();
- calendar1.setTime( (java.util.Date) x );
- calendar2.setTime( (java.util.Date) y );
-
- return calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH)
- && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH)
- && calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR)
- && calendar1.get(Calendar.HOUR_OF_DAY) == calendar2.get(Calendar.HOUR_OF_DAY)
- && calendar1.get(Calendar.MINUTE) == calendar2.get(Calendar.MINUTE)
- && calendar1.get(Calendar.SECOND) == calendar2.get(Calendar.SECOND)
- && calendar1.get(Calendar.MILLISECOND) == calendar2.get(Calendar.MILLISECOND);*/
}
--- 46,69 ----
if (x==null || y==null) return false;
! int xTime = ( (java.util.Date) x ).getTime();
! int yTime = ( (java.util.Date) y ).getTime();
! boolean xts = x instanceof Timestamp;
! boolean yts = y instanceof Timestamp;
! int xNanos = xts ? ( (Timestamp) x ).getNanos() : 0;
! int yNanos = yts ? ( (Timestamp) y ).getNanos() : 0;
! xTime += xNanos / 1000000;
! yTime += yNanos / 1000000;
! if ( xTime!=yTime ) return false;
! if (xts && yts) {
! // both are Timestamps
! int xn = xNanos % 1000000;
! int yn = yNanos % 1000000;
! return xn==yn;
! }
! else {
! // at least one is a plain old Date
! return true;
! }
}
|