diff --git a/src/main/java/li/strolch/model/xml/OrderToSaxWriterVisitor.java b/src/main/java/li/strolch/model/xml/OrderToSaxWriterVisitor.java index cf4f089d4..f3e4c7cef 100644 --- a/src/main/java/li/strolch/model/xml/OrderToSaxWriterVisitor.java +++ b/src/main/java/li/strolch/model/xml/OrderToSaxWriterVisitor.java @@ -38,6 +38,7 @@ public class OrderToSaxWriterVisitor extends AbstractToSaxWriterVisitor implemen public void visit(Order order) { try { writeElement(Tags.ORDER, order); + this.writer.flush(); } catch (XMLStreamException e) { String msg = "Failed to write Order {0} due to {1}"; //$NON-NLS-1$ msg = MessageFormat.format(msg, order.getLocator(), e.getMessage()); diff --git a/src/main/java/li/strolch/model/xml/ResourceToSaxWriterVisitor.java b/src/main/java/li/strolch/model/xml/ResourceToSaxWriterVisitor.java index 8f6783802..c73f5c3f7 100644 --- a/src/main/java/li/strolch/model/xml/ResourceToSaxWriterVisitor.java +++ b/src/main/java/li/strolch/model/xml/ResourceToSaxWriterVisitor.java @@ -38,6 +38,7 @@ public class ResourceToSaxWriterVisitor extends AbstractToSaxWriterVisitor imple public void visit(Resource resource) { try { writeElement(Tags.RESOURCE, resource); + this.writer.flush(); } catch (XMLStreamException e) { String msg = "Failed to write Resource {0} due to {1}"; //$NON-NLS-1$ msg = MessageFormat.format(msg, resource.getLocator(), e.getMessage()); diff --git a/src/main/java/li/strolch/model/xml/XmlModelSaxReader.java b/src/main/java/li/strolch/model/xml/XmlModelSaxReader.java index 48cc6d6fa..e1acc9df9 100644 --- a/src/main/java/li/strolch/model/xml/XmlModelSaxReader.java +++ b/src/main/java/li/strolch/model/xml/XmlModelSaxReader.java @@ -76,98 +76,98 @@ public class XmlModelSaxReader extends DefaultHandler { // TODO split each root object into its own file switch (qName) { - case Tags.STROLCH_MODEL: - break; + case Tags.STROLCH_MODEL: + break; - case Tags.RESOURCE: + case Tags.RESOURCE: - String resId = attributes.getValue(Tags.ID); - String resName = attributes.getValue(Tags.NAME); - String resType = attributes.getValue(Tags.TYPE); - Resource resource = new Resource(resId, resName, resType); - this.parameterizedElement = resource; - break; + String resId = attributes.getValue(Tags.ID); + String resName = attributes.getValue(Tags.NAME); + String resType = attributes.getValue(Tags.TYPE); + Resource resource = new Resource(resId, resName, resType); + this.parameterizedElement = resource; + break; - case Tags.ORDER: - String orderId = attributes.getValue(Tags.ID); - String orderName = attributes.getValue(Tags.NAME); - String orderType = attributes.getValue(Tags.TYPE); - String orderDateS = attributes.getValue(Tags.DATE); - String orderStateS = attributes.getValue(Tags.STATE); - Order order = new Order(orderId, orderName, orderType); - if (orderDateS != null) { - Date orderDate = ISO8601FormatFactory.getInstance().getDateFormat().parse(orderDateS); - order.setDate(orderDate); + case Tags.ORDER: + String orderId = attributes.getValue(Tags.ID); + String orderName = attributes.getValue(Tags.NAME); + String orderType = attributes.getValue(Tags.TYPE); + String orderDateS = attributes.getValue(Tags.DATE); + String orderStateS = attributes.getValue(Tags.STATE); + Order order = new Order(orderId, orderName, orderType); + if (orderDateS != null) { + Date orderDate = ISO8601FormatFactory.getInstance().getDateFormat().parse(orderDateS); + order.setDate(orderDate); + } + if (orderStateS != null) { + State orderState = State.valueOf(orderStateS); + order.setState(orderState); + } + this.parameterizedElement = order; + break; + + case Tags.PARAMETER_BAG: + String pBagId = attributes.getValue(Tags.ID); + String pBagName = attributes.getValue(Tags.NAME); + String pBagType = attributes.getValue(Tags.TYPE); + ParameterBag pBag = new ParameterBag(pBagId, pBagName, pBagType); + this.pBag = pBag; + this.parameterizedElement.addParameterBag(pBag); + break; + + case Tags.PARAMETER: + String paramId = attributes.getValue(Tags.ID); + String paramName = attributes.getValue(Tags.NAME); + String paramType = attributes.getValue(Tags.TYPE); + String paramValue = attributes.getValue(Tags.VALUE); + String paramHiddenS = attributes.getValue(Tags.HIDDEN); + String paramIndexS = attributes.getValue(Tags.INDEX); + try { + int index = StringHelper.isEmpty(paramIndexS) ? 0 : Integer.valueOf(paramIndexS); + boolean paramHidden = StringHelper.isEmpty(paramHiddenS) ? false : StringHelper + .parseBoolean(paramHiddenS); + String paramUom = attributes.getValue(Tags.UOM); + String paramInterpretation = attributes.getValue(Tags.INTERPRETATION); + Parameter param; + switch (paramType) { + case StringParameter.TYPE: + param = new StringParameter(paramId, paramName, paramValue); + break; + case IntegerParameter.TYPE: + param = new IntegerParameter(paramId, paramName, IntegerParameter.parseFromString(paramValue)); + break; + case BooleanParameter.TYPE: + param = new BooleanParameter(paramId, paramName, BooleanParameter.parseFromString(paramValue)); + break; + case LongParameter.TYPE: + param = new LongParameter(paramId, paramName, LongParameter.parseFromString(paramValue)); + break; + case DateParameter.TYPE: + param = new DateParameter(paramId, paramName, DateParameter.parseFromString(paramValue)); + break; + case StringListParameter.TYPE: + param = new StringListParameter(paramId, paramName, StringListParameter.parseFromString(paramValue)); + break; + case FloatParameter.TYPE: + param = new FloatParameter(paramId, paramName, FloatParameter.parseFromString(paramValue)); + break; + default: + throw new UnsupportedOperationException(MessageFormat.format( + "Parameters of type {0} are not supported!", paramType)); //$NON-NLS-1$ } - if (orderStateS != null) { - State orderState = State.valueOf(orderStateS); - order.setState(orderState); - } - this.parameterizedElement = order; - break; + param.setHidden(paramHidden); + param.setUom(paramUom); + param.setInterpretation(paramInterpretation); + param.setIndex(index); + this.pBag.addParameter(param); + } catch (Exception e) { + throw new StrolchException("Failed to instantiate parameter " + paramId + " for bag " + + this.pBag.getLocator() + " due to " + e.getMessage(), e); + } + break; - case Tags.PARAMETER_BAG: - String pBagId = attributes.getValue(Tags.ID); - String pBagName = attributes.getValue(Tags.NAME); - String pBagType = attributes.getValue(Tags.TYPE); - ParameterBag pBag = new ParameterBag(pBagId, pBagName, pBagType); - this.pBag = pBag; - this.parameterizedElement.addParameterBag(pBag); - break; - - case Tags.PARAMETER: - String paramId = attributes.getValue(Tags.ID); - String paramName = attributes.getValue(Tags.NAME); - String paramType = attributes.getValue(Tags.TYPE); - String paramValue = attributes.getValue(Tags.VALUE); - String paramHiddenS = attributes.getValue(Tags.HIDDEN); - String paramIndexS = attributes.getValue(Tags.INDEX); - try { - int index = StringHelper.isEmpty(paramIndexS) ? 0 : Integer.valueOf(paramIndexS); - boolean paramHidden = StringHelper.isEmpty(paramHiddenS) ? false : StringHelper - .parseBoolean(paramHiddenS); - String paramUom = attributes.getValue(Tags.UOM); - String paramInterpretation = attributes.getValue(Tags.INTERPRETATION); - Parameter param; - switch (paramType) { - case StringParameter.TYPE: - param = new StringParameter(paramId, paramName, paramValue); - break; - case IntegerParameter.TYPE: - param = new IntegerParameter(paramId, paramName, IntegerParameter.parseFromString(paramValue)); - break; - case BooleanParameter.TYPE: - param = new BooleanParameter(paramId, paramName, BooleanParameter.parseFromString(paramValue)); - break; - case LongParameter.TYPE: - param = new LongParameter(paramId, paramName, LongParameter.parseFromString(paramValue)); - break; - case DateParameter.TYPE: - param = new DateParameter(paramId, paramName, DateParameter.parseFromString(paramValue)); - break; - case StringListParameter.TYPE: - param = new StringListParameter(paramId, paramName, StringListParameter.parseFromString(paramValue)); - break; - case FloatParameter.TYPE: - param = new FloatParameter(paramId, paramName, FloatParameter.parseFromString(paramValue)); - break; - default: - throw new UnsupportedOperationException(MessageFormat.format( - "Parameters of type {0} are not supported!", paramType)); //$NON-NLS-1$ - } - param.setHidden(paramHidden); - param.setUom(paramUom); - param.setInterpretation(paramInterpretation); - param.setIndex(index); - this.pBag.addParameter(param); - } catch (Exception e) { - throw new StrolchException("Failed to instantiate parameter " + paramId + " for bag " - + this.pBag.getLocator() + " due to " + e.getMessage(), e); - } - break; - - default: - throw new IllegalArgumentException(MessageFormat.format("The element ''{0}'' is unhandled!", qName)); //$NON-NLS-1$ + default: + throw new IllegalArgumentException(MessageFormat.format("The element ''{0}'' is unhandled!", qName)); //$NON-NLS-1$ } } @@ -175,27 +175,27 @@ public class XmlModelSaxReader extends DefaultHandler { public void endElement(String uri, String localName, String qName) throws SAXException { switch (qName) { - case Tags.STROLCH_MODEL: - break; - case Tags.RESOURCE: - this.listener.notifyResource((Resource) this.parameterizedElement); - this.statistics.nrOfResources++; - this.parameterizedElement = null; - break; - case Tags.ORDER: - this.listener.notifyOrder((Order) this.parameterizedElement); - this.statistics.nrOfOrders++; - this.parameterizedElement = null; - break; - case Tags.PARAMETER_BAG: - this.pBag = null; - break; - case Tags.PARAMETER: - break; - case Tags.INCLUDE_FILE: - break; - default: - throw new IllegalArgumentException(MessageFormat.format("The element ''{0}'' is unhandled!", qName)); //$NON-NLS-1$ + case Tags.STROLCH_MODEL: + break; + case Tags.RESOURCE: + this.listener.notifyResource((Resource) this.parameterizedElement); + this.statistics.nrOfResources++; + this.parameterizedElement = null; + break; + case Tags.ORDER: + this.listener.notifyOrder((Order) this.parameterizedElement); + this.statistics.nrOfOrders++; + this.parameterizedElement = null; + break; + case Tags.PARAMETER_BAG: + this.pBag = null; + break; + case Tags.PARAMETER: + break; + case Tags.INCLUDE_FILE: + break; + default: + throw new IllegalArgumentException(MessageFormat.format("The element ''{0}'' is unhandled!", qName)); //$NON-NLS-1$ } } @@ -206,6 +206,24 @@ public class XmlModelSaxReader extends DefaultHandler { public int nrOfResources; public int nrOfOrders; + /** + * @return the nrOfOrders + */ + public int getNrOfOrders() { + return this.nrOfOrders; + } + + /** + * @return the nrOfResources + */ + public int getNrOfResources() { + return this.nrOfResources; + } + + public long getNrOfElements() { + return this.nrOfOrders + this.nrOfResources; + } + @Override public String toString() { StringBuilder builder = new StringBuilder();