mmidy 2002/09/09 09:35:13 Modified: java/src/org/apache/xml/utils Tag: xslt20 DateTimeObj.java java/src/org/apache/xpath/objects Tag: xslt20 XDateTime.java java/src/org/apache/xpath/operations Tag: xslt20 Add.java Mult.java Log: Fix add and multiply operations for symetry and timezone Revision Changes Path No revision No revision 1.1.2.1.2.3 +9 -7 xml-xalan/java/src/org/apache/xml/utils/Attic/DateTimeObj.java Index: DateTimeObj.java =================================================================== RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/utils/Attic/DateTimeObj.java,v retrieving revision 1.1.2.1.2.2 retrieving revision 1.1.2.1.2.3 diff -u -r1.1.2.1.2.2 -r1.1.2.1.2.3 --- DateTimeObj.java 6 Sep 2002 20:15:53 -0000 1.1.2.1.2.2 +++ DateTimeObj.java 9 Sep 2002 16:35:13 -0000 1.1.2.1.2.3 @@ -361,21 +361,23 @@ */ private int getZoneStart (String datetime) throws TransformerException { - if (datetime.indexOf("Z") == datetime.length()-1) - return datetime.indexOf("Z"); + int len = datetime.length(); + int index = -1; + if (datetime.indexOf("Z") == len-1) + return datetime.indexOf("Z"); else if ( - (datetime.lastIndexOf("-") == datetime.length()-6 && - datetime.charAt(datetime.length()-3) == ':') + ((index = datetime.lastIndexOf("-")) == len-6 && + datetime.charAt(len-3) == ':') || - (datetime.indexOf("+") == datetime.length() -6) + ((index = datetime.indexOf("+")) >= 0) ) { try { SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); dateFormat.setLenient(false); - Date d = dateFormat.parse(datetime.substring(datetime.length() -5)); - return datetime.length()-6; + Date d = dateFormat.parse(datetime.substring(index+1)); + return index; } catch (ParseException pe) { No revision No revision 1.1.2.1.2.1 +6 -1 xml-xalan/java/src/org/apache/xpath/objects/Attic/XDateTime.java Index: XDateTime.java =================================================================== RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/objects/Attic/XDateTime.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.1.2.1 diff -u -r1.1.2.1 -r1.1.2.1.2.1 --- XDateTime.java 14 Aug 2002 20:07:03 -0000 1.1.2.1 +++ XDateTime.java 9 Sep 2002 16:35:13 -0000 1.1.2.1.2.1 @@ -277,7 +277,12 @@ int t = obj2.getType(); if(XObject.CLASS_DATETIME == t || XObject.CLASS_DATE == t || - XObject.CLASS_TIME == t ) + XObject.CLASS_TIME == t || + XObject.CLASS_GDAY == t || + XObject.CLASS_GMONTH == t || + XObject.CLASS_GMONTHDAY == t || + XObject.CLASS_GYEAR == t || + XObject.CLASS_GYEARMONTH == t) return m_val.equals(((XDateTime)obj2).m_val); else return false; No revision No revision 1.1.2.1.2.1 +4 -4 xml-xalan/java/src/org/apache/xpath/operations/Attic/Add.java Index: Add.java =================================================================== RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/operations/Attic/Add.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.1.2.1 diff -u -r1.1.2.1 -r1.1.2.1.2.1 --- Add.java 14 Aug 2002 20:07:05 -0000 1.1.2.1 +++ Add.java 9 Sep 2002 16:35:13 -0000 1.1.2.1.2.1 @@ -135,13 +135,13 @@ { DateTimeObj dt = rhs.date(); DateTimeObj dateTime = dt.addDTDurationToDate(duration1); - return new XDateTime(dateTime); + return new XDate(dateTime); } if(XType.TIME == rhsVT) { DateTimeObj dt = rhs.time(); DateTimeObj dateTime = dt.addDTDurationToTime(duration1); - return new XDateTime(dateTime); + return new XTime(dateTime); } else { @@ -160,7 +160,7 @@ { Duration duration1 = lhs.duration(); int rhsVT = rhs.getValueType(); - if(XType.DATETIME == rhsVT || XType.DATE == rhsVT) + if(XType.DATETIME == rhsVT) { DateTimeObj dt = rhs.datetime(); DateTimeObj dateTime = dt.addYMDurationToDateTime(duration1); @@ -170,7 +170,7 @@ { DateTimeObj dt = rhs.date(); DateTimeObj dateTime = dt.addYMDurationToDate(duration1); - return new XDateTime(dateTime); + return new XDate(dateTime); } else { 1.5.14.1.2.1 +14 -1 xml-xalan/java/src/org/apache/xpath/operations/Mult.java Index: Mult.java =================================================================== RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/operations/Mult.java,v retrieving revision 1.5.14.1 retrieving revision 1.5.14.1.2.1 diff -u -r1.5.14.1 -r1.5.14.1.2.1 --- Mult.java 14 Aug 2002 20:07:05 -0000 1.5.14.1 +++ Mult.java 9 Sep 2002 16:35:13 -0000 1.5.14.1.2.1 @@ -81,7 +81,20 @@ public XObject operate(XPathContext xctxt, XObject lhs, XObject rhs) throws TransformerException { - return new XDouble(lhs.num() * rhs.num()); + if (rhs.getType() == XType.YEARMONTHDURATION) + { + Duration duration = rhs.duration(); + Duration du = duration.multiplyYMDuration(lhs.num()); + return new XYMDuration(du); + } + else if (rhs.getType() == XType.DAYTIMEDURATION) + { + Duration duration = rhs.duration(); + Duration du = duration.multiplyDTDuration(lhs.num()); + return new XDTDuration(du); + } + else + return new XDouble(lhs.num() * rhs.num()); } }); m_funcs.setFunc(XType.FLOAT, new GenericOpFunc()
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]