/// <summary> /// Evaluate the function using the arguments passed. /// </summary> /// <param name="args"> /// Result from the expressions evaluation. </param> /// <param name="sc"> /// Result of static context operation. </param> /// <exception cref="DynamicError"> /// Dynamic error. </exception> /// <returns> Result of the fn:dateTime operation. </returns> public static ResultSequence dateTime(ICollection args, StaticContext sc) { ICollection cargs = Function.convert_arguments(args, expected_args()); // get args IEnumerator argiter = cargs.GetEnumerator(); argiter.MoveNext(); ResultSequence arg1 = (ResultSequence)argiter.Current; argiter.MoveNext(); ResultSequence arg2 = (ResultSequence)argiter.Current; // if either of the parameter is an empty sequence, the result // is an empty sequence if (arg1 == null || arg2 == null || arg1.empty() || arg2.empty()) { return(ResultBuffer.EMPTY); } XSDate param1 = (XSDate)arg1.first(); XSTime param2 = (XSTime)arg2.first(); Calendar cal = Calendar.getInstance(); cal.set(param1.year(), param1.month() - 1, param1.day()); cal.set(Calendar.HOUR_OF_DAY, param2.hour()); cal.set(Calendar.MINUTE, param2.minute()); cal.set(Calendar.SECOND, (int)Math.Floor(param2.second())); cal.set(Calendar.MILLISECOND, 0); XSDuration dateTimeZone = param1.tz(); XSDuration timeTimeZone = param2.tz(); if ((dateTimeZone != null && timeTimeZone != null) && !dateTimeZone.StringValue.Equals(timeTimeZone.StringValue)) { // it's an error, if the arguments have different timezones throw DynamicError.inconsistentTimeZone(); } else if (dateTimeZone == null && timeTimeZone != null) { return(new XSDateTime(cal, timeTimeZone)); } else if (dateTimeZone != null && timeTimeZone == null) { return(new XSDateTime(cal, dateTimeZone)); } else if ((dateTimeZone != null && timeTimeZone != null) && dateTimeZone.StringValue.Equals(timeTimeZone.StringValue)) { return(new XSDateTime(cal, dateTimeZone)); } else { return(new XSDateTime(cal, null)); } }
/// <summary> /// Minutes-from-Time operation. /// </summary> /// <param name="args"> /// Result from the expressions evaluation. </param> /// <exception cref="DynamicError"> /// Dynamic error. </exception> /// <returns> Result of fn:minutes-from-time operation. </returns> //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public static org.eclipse.wst.xml.xpath2.api.ResultSequence minutes_from_time(java.util.Collection args) throws org.eclipse.wst.xml.xpath2.processor.DynamicError public static ResultSequence minutes_from_time(ICollection args) { ICollection cargs = Function.convert_arguments(args, expected_args()); var i = cargs.GetEnumerator(); i.MoveNext(); ResultSequence arg1 = (ResultSequence)i.Current; if (arg1.empty()) { return(ResultBuffer.EMPTY); } XSTime dt = (XSTime)arg1.first(); int res = dt.minute(); return(new XSInteger(new System.Numerics.BigInteger(res))); }
/// <summary> /// Evaluate the function using the arguments passed. /// </summary> /// <param name="args"> /// Result from the expressions evaluation. </param> /// <param name="sc"> /// Result of static context operation. </param> /// <exception cref="DynamicError"> /// Dynamic error. </exception> /// <returns> Result of the fn:dateTime operation. </returns> //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public static org.eclipse.wst.xml.xpath2.api.ResultSequence adjustTime(java.util.Collection args, org.eclipse.wst.xml.xpath2.api.DynamicContext dc) throws org.eclipse.wst.xml.xpath2.processor.DynamicError public static ResultSequence adjustTime(ICollection args, DynamicContext dc) { ICollection cargs = Function.convert_arguments(args, expectedArgs()); // get args IEnumerator argiter = cargs.GetEnumerator(); argiter.MoveNext(); ResultSequence arg1 = (ResultSequence)argiter.Current; if (arg1 == null || arg1.empty()) { return(ResultBuffer.EMPTY); } ResultSequence arg2 = ResultBuffer.EMPTY; if (argiter.MoveNext()) { arg2 = (ResultSequence)argiter.Current; } XSTime time = (XSTime)arg1.first(); XSDayTimeDuration timezone = null; if (arg2.empty()) { if (time.timezoned()) { XSTime localized = new XSTime(time.calendar(), null); return(localized); } else { return(arg1); } } XMLGregorianCalendar xmlCalendar = null; if (time.tz() != null) { xmlCalendar = _datatypeFactory.newXMLGregorianCalendar((GregorianCalendar)time.normalizeCalendar(time.calendar(), time.tz())); } else { xmlCalendar = _datatypeFactory.newXMLGregorianCalendarTime(time.hour(), time.minute(), (int)time.second(), 0); } timezone = (XSDayTimeDuration)arg2.first(); if (timezone.lt(minDuration, dc) || timezone.gt(maxDuration, dc)) { throw DynamicError.invalidTimezone(); } if (time.tz() == null) { return(new XSTime(time.calendar(), timezone)); } Duration duration = _datatypeFactory.newDuration(timezone.StringValue); xmlCalendar.add(duration); return(new XSTime(xmlCalendar.toGregorianCalendar(), timezone)); }