Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public virtual void addFormType(AbstractFormFieldType formType)
 {
     formTypes[formType.Name] = formType;
 }