package com.thinkbiganalytics.policy.rest.model; /*- * #%L * thinkbig-ui-annotation-rest-model * %% * Copyright (C) 2017 ThinkBig Analytics * %% * 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. * #L% */ import com.thinkbiganalytics.policy.PolicyPropertyTypes; import com.thinkbiganalytics.rest.model.LabelValue; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; /** * Builder for the {@link FieldRuleProperty} */ public class FieldRulePropertyBuilder { private String name; private String displayName; private String value; private String placeholder; private String type; private String hint; private String objectProperty; private List<LabelValue> selectableValues; private boolean required; private String group; private Integer groupOrder; private String layout; private boolean hidden; private String pattern; private String patternInvalidMessage; public FieldRulePropertyBuilder(String name) { this.name = name; this.displayName = name; this.type = PolicyPropertyTypes.PROPERTY_TYPE.string.name(); this.placeholder = ""; this.hint = ""; } public FieldRulePropertyBuilder displayName(String displayName) { this.displayName = displayName; return this; } public FieldRulePropertyBuilder value(String value) { this.value = value; return this; } public FieldRulePropertyBuilder placeholder(String placeholder) { this.placeholder = placeholder; return this; } public FieldRulePropertyBuilder pattern(String pattern) { this.pattern = pattern; return this; } public FieldRulePropertyBuilder patternInvalidMessage(String patternInvalidMessage) { this.patternInvalidMessage = patternInvalidMessage; return this; } public FieldRulePropertyBuilder type(PolicyPropertyTypes.PROPERTY_TYPE type) { this.type = type.name(); return this; } public FieldRulePropertyBuilder hint(String hint) { this.hint = hint; return this; } public FieldRulePropertyBuilder objectProperty(String objectProperty) { this.objectProperty = objectProperty; return this; } public FieldRulePropertyBuilder addSelectableValues(List<LabelValue> labelValues) { if (selectableValues == null) { selectableValues = new ArrayList<>(); } if (labelValues != null) { selectableValues.addAll(labelValues); } return this; } public FieldRulePropertyBuilder required(boolean required) { this.required = required; return this; } public FieldRulePropertyBuilder group(String group) { this.group = group; return this; } public FieldRulePropertyBuilder groupOrder(Integer order) { this.groupOrder = order; return this; } public FieldRulePropertyBuilder hidden(boolean hidden) { this.hidden = hidden; return this; } public FieldRulePropertyBuilder layout(String layout) { this.layout = layout; return this; } public FieldRulePropertyBuilder addSelectableValue(LabelValue labelValue) { if (selectableValues == null) { selectableValues = new ArrayList<>(); } if (labelValue != null) { selectableValues.add(labelValue); } return this; } public FieldRulePropertyBuilder addSelectableValue(String label, String value) { if (selectableValues == null) { selectableValues = new ArrayList<>(); } selectableValues.add(new LabelValue(label, value)); return this; } public FieldRuleProperty build() { FieldRuleProperty property = new FieldRuleProperty(); property.setName(this.name); property.setDisplayName(this.displayName); property.setType(this.type); property.setHint(this.hint); property.setPlaceholder(this.placeholder); property.setSelectableValues(this.selectableValues); property.setObjectProperty(this.objectProperty); property.setValue(this.value); property.setRequired(this.required); property.setGroup(this.group); property.setGroupOrder(this.groupOrder); property.setHidden(this.hidden); property.setPattern(pattern); String invalidPatternMessage = StringUtils.isNotBlank(patternInvalidMessage) ? patternInvalidMessage : "Invalid Input"; property.setPatternInvalidMessage(invalidPatternMessage); return property; } }