Search in sources :

Example 1 with Column

use of org.kie.workbench.common.forms.adf.definitions.annotations.layout.Column in project kie-wb-common by kiegroup.

the class FormDefinitionsProcessor method processFormDefinition.

protected void processFormDefinition(TypeElement formElement) throws Exception {
    final Messager messager = processingEnv.getMessager();
    messager.printMessage(Diagnostic.Kind.NOTE, "Discovered FormDefintion class [" + formElement.getSimpleName() + "]");
    boolean checkInheritance = false;
    FormDefinition defintion = formElement.getAnnotation(FormDefinition.class);
    checkInheritance = defintion.allowInheritance();
    List<Map<String, String>> formElements = new ArrayList<>();
    if (checkInheritance) {
        TypeElement parent = getParent(formElement);
        formElements.addAll(extractParentFormFields(parent, defintion.policy(), defintion.i18n()));
    }
    formElements.addAll(extracFormFields(formElement, defintion.policy(), defintion.i18n()));
    FormGenerationUtils.sort(defintion.startElement(), formElements);
    messager.printMessage(Diagnostic.Kind.NOTE, "Discovered " + formElements.size() + " elements for form [" + formElement.getQualifiedName().toString() + "]");
    String modelClassName = formElement.getQualifiedName().toString();
    String builderClassName = fixClassName(formElement.getQualifiedName().toString()) + "FormBuilder";
    Map<String, Object> templateContext = new HashMap<>();
    templateContext.put("modelClass", modelClassName);
    templateContext.put("builderClassName", builderClassName);
    templateContext.put("startElement", defintion.startElement());
    templateContext.put("i18n_bundle", StringUtils.isEmpty(defintion.i18n().bundle()) ? formElement.asType().toString() : defintion.i18n().bundle());
    Column[] columns = defintion.layout().value();
    List<String> layoutColumns = new ArrayList<>();
    if (columns.length == 0) {
        layoutColumns.add(ColSpan.SPAN_12.getName());
    } else {
        for (Column column : columns) {
            layoutColumns.add(column.value().getName());
        }
    }
    templateContext.put("layout_columns", layoutColumns);
    templateContext.put("elements", formElements);
    StringBuffer builder = writeTemplate("templates/FormDefinitionSettingsBuilder.ftl", templateContext);
    Map<String, String> form = new HashMap<>();
    form.put("package", ((PackageElement) formElement.getEnclosingElement()).getQualifiedName().toString());
    form.put("modelClass", modelClassName);
    form.put("builderClass", builderClassName);
    form.put("builderCode", builder.toString());
    context.getForms().add(form);
}
Also used : Messager(javax.annotation.processing.Messager) HashMap(java.util.HashMap) TypeElement(javax.lang.model.element.TypeElement) ArrayList(java.util.ArrayList) Column(org.kie.workbench.common.forms.adf.definitions.annotations.layout.Column) PackageElement(javax.lang.model.element.PackageElement) FormDefinition(org.kie.workbench.common.forms.adf.definitions.annotations.FormDefinition) Map(java.util.Map) HashMap(java.util.HashMap)

Example 2 with Column

use of org.kie.workbench.common.forms.adf.definitions.annotations.layout.Column in project kie-wb-common by kiegroup.

the class FormDefinitionGenerator method processFormDefinition.

protected void processFormDefinition(TypeElement formElement) throws Exception {
    final Messager messager = context.getMessager();
    messager.printMessage(Diagnostic.Kind.NOTE, "Discovered FormDefintion class [" + formElement.getSimpleName() + "]");
    boolean checkInheritance = false;
    FormDefinition definition = formElement.getAnnotation(FormDefinition.class);
    String modelClassName = formElement.getQualifiedName().toString();
    String builderClassName = FormGenerationUtils.fixClassName(formElement.getQualifiedName().toString()) + FORM_BUILDER_SUFFIX;
    FormDefinitionData form = new FormDefinitionData(modelClassName, builderClassName);
    form.setStartElement(definition.startElement());
    form.setI18nBundle(StringUtils.isEmpty(definition.i18n().bundle()) ? formElement.asType().toString() : definition.i18n().bundle());
    Column[] columns = definition.layout().value();
    List<String> layoutColumns = new ArrayList<>();
    if (columns.length == 0) {
        layoutColumns.add(ColSpan.SPAN_12.getName());
    } else {
        for (Column column : columns) {
            layoutColumns.add(column.value().getName());
        }
    }
    form.setLayoutColumns(layoutColumns);
    checkInheritance = definition.allowInheritance();
    Map<String, String> defaultFieldSettings = new HashMap<>();
    for (FieldParam param : definition.defaultFieldSettings()) {
        defaultFieldSettings.put(param.name(), param.value());
    }
    List<FormDefinitionFieldData> formElements = new ArrayList<>();
    if (checkInheritance) {
        TypeElement parent = getParent(formElement);
        formElements.addAll(extractParentFormFields(parent, definition.policy(), definition.i18n(), defaultFieldSettings));
    }
    formElements.addAll(extracFormFields(formElement, definition.policy(), definition.i18n(), defaultFieldSettings));
    FormGenerationUtils.sort(definition.startElement(), formElements);
    messager.printMessage(Diagnostic.Kind.NOTE, "Discovered " + formElements.size() + " elements for form [" + formElement.getQualifiedName().toString() + "]");
    form.getElements().addAll(formElements);
    context.getForms().add(form);
}
Also used : Messager(javax.annotation.processing.Messager) FieldParam(org.kie.workbench.common.forms.adf.definitions.annotations.FieldParam) HashMap(java.util.HashMap) TypeElement(javax.lang.model.element.TypeElement) ArrayList(java.util.ArrayList) Column(org.kie.workbench.common.forms.adf.definitions.annotations.layout.Column) FormDefinition(org.kie.workbench.common.forms.adf.definitions.annotations.FormDefinition)

Aggregations

ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 Messager (javax.annotation.processing.Messager)2 TypeElement (javax.lang.model.element.TypeElement)2 FormDefinition (org.kie.workbench.common.forms.adf.definitions.annotations.FormDefinition)2 Column (org.kie.workbench.common.forms.adf.definitions.annotations.layout.Column)2 Map (java.util.Map)1 PackageElement (javax.lang.model.element.PackageElement)1 FieldParam (org.kie.workbench.common.forms.adf.definitions.annotations.FieldParam)1