package gw.rating.worksheet.domain uses gw.xml.parser2.PLXMLNode /** * We don't save the element value, as we generally expect these to be complex objects. */ class WorksheetIterableElement extends WorksheetOperand { var _iterableName: String as IterableName var _iterableTypeName: String as IterableTypeName var _index : int as Index var _elementName: String as ElementName var _elementTypeName: String as ElementTypeName // Also ValueType override property get ValueType(): String { return _elementTypeName } override property set ValueType(valueType: String) { _elementTypeName = valueType } override function toXml() : PLXMLNode { var node = new PLXMLNode(WorksheetClass) node.setAttributeValue(WorksheetLoop.ITERABLE_NAME_LABEL, _iterableName) node.setAttributeValue(WorksheetLoop.ITERABLE_TYPE_LABEL, _iterableTypeName) node.setAttributeValue(WorksheetLoop.LOOP_INDEX_VARIABLE_VALUE_LABEL, Integer.toString(_index)) node.setAttributeValue(WorksheetLoop.ITERABLE_ELEMENT_NAME_LABEL, _elementName) node.setAttributeValue(WorksheetLoop.ITERABLE_ELEMENT_TYPE_LABEL, ElementTypeName) writeXml(node) return node } override function fromXml(node : PLXMLNode) { _iterableName = node.getAttributeValue(WorksheetLoop.ITERABLE_NAME_LABEL) _iterableTypeName = node.getAttributeValue(WorksheetLoop.ITERABLE_TYPE_LABEL) _index = Integer.parseInt(node.getAttributeValue(WorksheetLoop.LOOP_INDEX_VARIABLE_VALUE_LABEL)) _elementName = node.getAttributeValue(WorksheetLoop.ITERABLE_ELEMENT_NAME_LABEL) _elementTypeName = node.getAttributeValue(WorksheetLoop.ITERABLE_ELEMENT_TYPE_LABEL) readXml(node) } override function pseudoCode(buffer : StringBuilder, includeValues : boolean) { super.buildStringStart(buffer, includeValues) buffer.append(_elementName) if (includeValues and Value != null) { buffer.append("<${Value}>") } super.buildStringEnd(buffer, includeValues) } override property get WorksheetClass() : String { return WorksheetLoop.LOOP_ITERABLE_ELEMENT_LABEL } }