package tundra; // -----( IS Java Code Template v1.2 // -----( CREATED: 2017-05-06 16:26:52 EST // -----( ON-HOST: 192.168.66.129 import com.wm.data.*; import com.wm.util.Values; import com.wm.app.b2b.server.Service; import com.wm.app.b2b.server.ServiceException; // --- <<IS-START-IMPORTS>> --- import java.math.BigDecimal; import permafrost.tundra.data.IDataHelper; import permafrost.tundra.data.IDataMap; import permafrost.tundra.lang.BooleanHelper; import permafrost.tundra.math.BigDecimalHelper; import permafrost.tundra.time.DurationHelper; // --- <<IS-END-IMPORTS>> --- public final class duration { // ---( internal utility methods )--- final static duration _instance = new duration(); static duration _newInstance() { return new duration(); } static duration _cast(Object o) { return (duration)o; } // ---( server methods )--- public static final void add (IData pipeline) throws ServiceException { // --- <<IS-START(add)>> --- // @subtype unknown // @sigtype java 3.5 // [i] record:0:optional $operands // [i] field:0:optional $pattern.input {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [i] field:0:optional $pattern.output {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [o] field:0:required $duration IDataCursor cursor = pipeline.getCursor(); try { IData operands = IDataHelper.get(cursor, "$operands", IData.class); String inPattern = IDataHelper.get(cursor, "$pattern.input", String.class); String outPattern = IDataHelper.get(cursor, "$pattern.output", String.class); // support $duration.x and $duration.y inputs for backwards-compatibility if (operands == null) { String dx = IDataHelper.get(cursor, "$duration.x", String.class); String dy = IDataHelper.get(cursor, "$duration.y", String.class); IDataMap map = new IDataMap(); if (dx != null) map.put("$duration.x", dx); if (dy != null) map.put("$duration.y", dy); operands = map; } String result = DurationHelper.emit(DurationHelper.add(DurationHelper.normalize(IDataHelper.getLeafValues(operands), inPattern)), outPattern); IDataHelper.put(cursor, "$duration", result, false); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void compare (IData pipeline) throws ServiceException { // --- <<IS-START(compare)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:optional $duration.x // [i] field:0:optional $duration.y // [i] field:0:optional $pattern {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [o] field:0:required $lesser? // [o] field:0:required $equal? // [o] field:0:required $greater? // [o] field:0:required $indeterminate? IDataCursor cursor = pipeline.getCursor(); try { String x = IDataHelper.get(cursor, "$duration.x", String.class); String y = IDataHelper.get(cursor, "$duration.y", String.class); String pattern = IDataHelper.get(cursor, "$pattern", String.class); int comparison = DurationHelper.compare(DurationHelper.parse(x, pattern), DurationHelper.parse(y, pattern)); boolean lesser = comparison == javax.xml.datatype.DatatypeConstants.LESSER; boolean equal = comparison == javax.xml.datatype.DatatypeConstants.EQUAL; boolean greater = comparison == javax.xml.datatype.DatatypeConstants.GREATER; boolean indeterminate = comparison == javax.xml.datatype.DatatypeConstants.INDETERMINATE; IDataHelper.put(cursor, "$lesser?", lesser, String.class); IDataHelper.put(cursor, "$equal?", equal, String.class); IDataHelper.put(cursor, "$greater?", greater, String.class); IDataHelper.put(cursor, "$indeterminate?", indeterminate, String.class); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void format (IData pipeline) throws ServiceException { // --- <<IS-START(format)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:optional $duration // [i] field:0:optional $pattern.input {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [i] field:0:optional $pattern.output {"xml","milliseconds","seconds","minutes","hours","days","weeks"} // [i] field:0:optional $datetime // [i] field:0:optional $datetime.pattern {"datetime","datetime.jdbc","date","date.jdbc","time","time.jdbc","milliseconds"} // [o] field:0:optional $duration IDataCursor cursor = pipeline.getCursor(); try { String duration = IDataHelper.get(cursor, "$duration", String.class); String datetime = IDataHelper.get(cursor, "$datetime", String.class); String inPattern = IDataHelper.get(cursor, "$pattern.input", String.class); String outPattern = IDataHelper.get(cursor, "$pattern.output", String.class); String datetimePattern = IDataHelper.get(cursor, "$datetime.pattern", String.class); duration = DurationHelper.format(duration, inPattern, outPattern, datetime, datetimePattern); IDataHelper.put(cursor, "$duration", duration, false); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void multiply (IData pipeline) throws ServiceException { // --- <<IS-START(multiply)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:optional $duration // [i] field:0:optional $pattern.input {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [i] field:0:optional $pattern.output {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [i] field:0:optional $datetime // [i] field:0:optional $datetime.pattern {"datetime","datetime.jdbc","date","date.jdbc","time","time.jdbc","milliseconds"} // [i] field:0:optional $factor // [o] field:0:optional $duration IDataCursor cursor = pipeline.getCursor(); try { String duration = IDataHelper.get(cursor, "$duration", String.class); String inPattern = IDataHelper.get(cursor, "$pattern.input", String.class); String outPattern = IDataHelper.get(cursor, "$pattern.output", String.class); String datetime = IDataHelper.get(cursor, "$datetime", String.class); String datetimePattern = IDataHelper.get(cursor, "$datetime.pattern", String.class); BigDecimal factor = IDataHelper.get(cursor, "$factor", BigDecimal.class); duration = DurationHelper.emit(DurationHelper.multiply(DurationHelper.parse(duration, inPattern), factor, datetime, datetimePattern)); IDataHelper.put(cursor, "$duration", duration, false); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void negate (IData pipeline) throws ServiceException { // --- <<IS-START(negate)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:optional $duration // [i] field:0:optional $pattern.input {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [i] field:0:optional $pattern.output {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [o] field:0:optional $duration IDataCursor cursor = pipeline.getCursor(); try { String duration = IDataHelper.get(cursor, "$duration", String.class); String inPattern = IDataHelper.get(cursor, "$pattern.input", String.class); String outPattern = IDataHelper.get(cursor, "$pattern.output", String.class); duration = DurationHelper.emit(DurationHelper.negate(DurationHelper.parse(duration, inPattern)), outPattern); IDataHelper.put(cursor, "$duration", duration, false); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void subtract (IData pipeline) throws ServiceException { // --- <<IS-START(subtract)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:optional $duration.x // [i] field:0:optional $duration.y // [i] field:0:optional $pattern.input {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [i] field:0:optional $pattern.output {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [o] field:0:optional $duration IDataCursor cursor = pipeline.getCursor(); try { String x = IDataHelper.get(cursor, "$duration.x", String.class); String y = IDataHelper.get(cursor, "$duration.y", String.class); String inPattern = IDataHelper.get(cursor, "$pattern.input", String.class); String outPattern = IDataHelper.get(cursor, "$pattern.output", String.class); String result = DurationHelper.emit(DurationHelper.subtract(DurationHelper.parse(x, inPattern), DurationHelper.parse(y, inPattern)), outPattern); IDataHelper.put(cursor, "$duration", result, false); } finally { cursor.destroy(); } // --- <<IS-END>> --- } }