public virtual AbstractFormFieldType parseFormPropertyType(Element formFieldElement, BpmnParse bpmnParse) { AbstractFormFieldType formType = null; string typeText = formFieldElement.attribute("type"); string datePatternText = formFieldElement.attribute("datePattern"); if (string.ReferenceEquals(typeText, null) && DefaultFormHandler.FORM_FIELD_ELEMENT.Equals(formFieldElement.TagName)) { bpmnParse.addError("form field must have a 'type' attribute", formFieldElement); } if ("date".Equals(typeText) && !string.ReferenceEquals(datePatternText, null)) { formType = new DateFormType(datePatternText); } else if ("enum".Equals(typeText)) { // ACT-1023: Using linked hashmap to preserve the order in which the entries are defined IDictionary <string, string> values = new LinkedHashMap <string, string>(); foreach (Element valueElement in formFieldElement.elementsNS(BpmnParse.CAMUNDA_BPMN_EXTENSIONS_NS, "value")) { string valueId = valueElement.attribute("id"); string valueName = valueElement.attribute("name"); values[valueId] = valueName; } formType = new EnumFormType(values); } else if (!string.ReferenceEquals(typeText, null)) { formType = formTypes[typeText]; if (formType == null) { bpmnParse.addError("unknown type '" + typeText + "'", formFieldElement); } } return(formType); }
public virtual void addFormType(AbstractFormFieldType formType) { formTypes[formType.Name] = formType; }