From: <one...@us...> - 2002-12-18 12:50:42
|
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; ! } } |