package server.mcsv1002.context; import ru.codeinside.gws.api.ReceiptContext; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeConstants; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; import java.util.Date; import java.util.GregorianCalendar; public class TypedContext { private ReceiptContext context; private String prefix_var_name; public TypedContext(ReceiptContext context, String prefix_var_name) { this.context = context; this.prefix_var_name = prefix_var_name; } public String getString(String varName) { return (String) getVariable(varName); } private Object getVariable(String varName) { return context.getVariable(prefix_var_name + varName); } public Long getLong(String varName) { final Object value = getVariable(varName); return value != null ? (Long) value : Long.valueOf(0l); } public XMLGregorianCalendar getCalendar(String varName) { Object result = getVariable(varName); if (result != null) { return date((Date) result); } else { return null; } } private XMLGregorianCalendar date(Date date) { if (date == null) { return null; } try { final GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(date); final XMLGregorianCalendar xml = DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar); xml.setMillisecond(DatatypeConstants.FIELD_UNDEFINED); xml.setSecond(DatatypeConstants.FIELD_UNDEFINED); xml.setMinute(DatatypeConstants.FIELD_UNDEFINED); xml.setHour(DatatypeConstants.FIELD_UNDEFINED); xml.setTimezone(DatatypeConstants.FIELD_UNDEFINED); return xml; } catch (final DatatypeConfigurationException e) { throw new RuntimeException(e); } } public boolean getBoolean(String varName) { Object result = getVariable(varName); if (result == null) { return false; } else { return (Boolean)result; } } public boolean hasVariableInContext(String varName) { return getVariable(varName) != null; } }