/* * Copyright 2017 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.forms.adf.engine.shared.test; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.kie.workbench.common.forms.adf.definitions.settings.ColSpan; import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.model.Address; import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.model.Person; import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.model.Weapon; import org.kie.workbench.common.forms.adf.service.building.FieldStatusModifier; import org.kie.workbench.common.forms.adf.service.building.FormGenerationResourcesProvider; import org.kie.workbench.common.forms.adf.service.definitions.FormDefinitionSettings; import org.kie.workbench.common.forms.adf.service.definitions.elements.FieldElement; import org.kie.workbench.common.forms.adf.service.definitions.layout.LayoutColumnDefinition; import org.kie.workbench.common.forms.adf.service.definitions.layout.LayoutDefinition; import org.kie.workbench.common.forms.fields.shared.fieldTypes.basic.slider.type.SliderFieldType; import org.kie.workbench.common.forms.fields.shared.fieldTypes.basic.textArea.type.TextAreaFieldType; import org.kie.workbench.common.forms.model.FieldDataType; public class TestFormGenerationResourcesProvider implements FormGenerationResourcesProvider { private Map<String, FormDefinitionSettings> definitionSettings = new HashMap<>(); private Map<String, FieldStatusModifier> fieldStatusModifiers = new HashMap<>(); private Map<String, String> fieldStatusModifiersReferences = new HashMap<>(); public TestFormGenerationResourcesProvider() { FormDefinitionSettings settings = new FormDefinitionSettings(Person.class.getName()); settings.getI18nSettings(); settings.setLayout(new LayoutDefinition(new LayoutColumnDefinition(ColSpan.AUTO))); FieldElement name = new FieldElement("name", "name", new FieldDataType(String.class.getName())); name.setLabelKey("name.label"); name.setReadOnly(false); name.setRequired(true); name.getParams().put("maxLength", "100"); name.getParams().put("placeHolder", "name.placeHolder"); FieldElement lastName = new FieldElement("lastName", "lastName", new FieldDataType(String.class.getName())); lastName.setPreferredType(TextAreaFieldType.class); lastName.setLabelKey("lastName.label"); lastName.setReadOnly(false); lastName.setRequired(false); lastName.getParams().put("maxLength", "300"); lastName.getParams().put("placeHolder", "lastName.placeHolder"); FieldElement birthDay = new FieldElement("birthDay", "birthDay", new FieldDataType(Date.class.getName())); birthDay.setLabelKey("birthDay.label"); birthDay.setReadOnly(false); birthDay.setRequired(false); birthDay.getParams().put("placeHolder", "birthDay.placeHolder"); FieldElement married = new FieldElement("married", "married", new FieldDataType(Boolean.class.getName())); married.setLabelKey("married.label"); married.setReadOnly(false); married.setRequired(false); FieldElement height = new FieldElement("height", "height.value", new FieldDataType(Double.class.getName())); height.setPreferredType(SliderFieldType.class); height.setLabelKey("height.label"); height.setReadOnly(false); height.setRequired(false); FieldElement weight = new FieldElement("weight", "weight.value", new FieldDataType(Integer.class.getName())); weight.setPreferredType(SliderFieldType.class); weight.setLabelKey("weight.label"); weight.setReadOnly(false); weight.setRequired(false); FieldElement address = new FieldElement("address", "address", new FieldDataType(Address.class.getName())); address.setLabelKey("address.label"); address.setReadOnly(false); address.setRequired(false); FieldElement weapons = new FieldElement("weapons", "weapons", new FieldDataType(Weapon.class.getName(), true, false)); weapons.setLabelKey("weapons.label"); weapons.setReadOnly(false); weapons.setRequired(false); settings.addFormElement(name); settings.addFormElement(lastName); settings.addFormElement(birthDay); settings.addFormElement(married); settings.addFormElement(height); settings.addFormElement(weight); settings.addFormElement(address); settings.addFormElement(weapons); FormDefinitionSettings addressSettings = new FormDefinitionSettings(Address.class.getName()); addressSettings.setLayout(new LayoutDefinition(new LayoutColumnDefinition(ColSpan.AUTO))); FieldElement street = new FieldElement("street", "street", new FieldDataType(String.class.getName())); street.setLabelKey("street.label"); street.setReadOnly(false); street.setRequired(true); street.getParams().put("maxLength", "100"); street.getParams().put("placeHolder", "street.placeHolder"); FieldElement number = new FieldElement("number", "number", new FieldDataType(Integer.class.getName())); number.setLabelKey("number.label"); number.setReadOnly(false); number.setRequired(true); number.getParams().put("maxLength", "3"); number.getParams().put("placeHolder", "number.placeHolder"); FieldElement city = new FieldElement("city", "city", new FieldDataType(String.class.getName())); city.setLabelKey("city.label"); city.setReadOnly(false); city.setRequired(true); city.getParams().put("maxLength", "100"); city.getParams().put("placeHolder", "city.placeHolder"); addressSettings.addFormElement(street); addressSettings.addFormElement(number); addressSettings.addFormElement(city); FormDefinitionSettings weaponSettings = new FormDefinitionSettings(Weapon.class.getName()); weaponSettings.setLayout(new LayoutDefinition(new LayoutColumnDefinition(ColSpan.AUTO))); FieldElement weaponName = new FieldElement("name", "name", new FieldDataType(String.class.getName())); weaponName.setLabelKey("name.label"); weaponName.setReadOnly(false); weaponName.setRequired(true); weaponName.getParams().put("maxLength", "100"); weaponName.getParams().put("placeHolder", "name.placeHolder"); FieldElement damage = new FieldElement("damage", "damage", new FieldDataType(Integer.class.getName())); damage.setLabelKey("damage.label"); damage.setReadOnly(false); damage.setRequired(true); damage.getParams().put("maxLength", "3"); damage.getParams().put("placeHolder", "damage.placeHolder"); weaponSettings.addFormElement(weaponName); weaponSettings.addFormElement(damage); definitionSettings.put(Person.class.getName(), settings); definitionSettings.put(Address.class.getName(), addressSettings); definitionSettings.put(Weapon.class.getName(), weaponSettings); fieldStatusModifiers.put("heightModifier", (field, modelHeight) -> { // do nothing here }); fieldStatusModifiersReferences.put(Person.class.getName() + ".height", "heightModifier"); fieldStatusModifiers.put("weightModifier", (field, modelWeight) -> { // do nothing }); fieldStatusModifiersReferences.put(Person.class.getName() + ".weight", "weightModifier"); } @Override public Map<String, FormDefinitionSettings> getDefinitionSettings() { return definitionSettings; } @Override public Map<String, FieldStatusModifier> getFieldModifiers() { return fieldStatusModifiers; } @Override public Map<String, String> getFieldModifierReferences() { return fieldStatusModifiersReferences; } }