/* 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.activiti.workflow.simple.definition.form; import java.util.ArrayList; import java.util.List; import org.activiti.workflow.simple.exception.SimpleWorkflowException; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; /** * A group of {@link FormPropertyDefinition}s which belong together. * * @author Frederik Heremans */ public class FormPropertyGroup implements FormPropertyDefinitionContainer { protected String title; protected String id; protected String type; protected List<FormPropertyDefinition> formPropertyDefinitions = new ArrayList<FormPropertyDefinition>(); public FormPropertyGroup() { } public FormPropertyGroup(String id, String type, String title) { this.id = id; this.type = type; this.title = title; } @JsonDeserialize(contentAs = FormPropertyDefinition.class) @JsonProperty(value = "formProperties") public List<FormPropertyDefinition> getFormPropertyDefinitions() { return formPropertyDefinitions; } @Override public void addFormProperty(FormPropertyDefinition definition) { formPropertyDefinitions.add(definition); } @Override public boolean removeFormProperty(FormPropertyDefinition definition) { return formPropertyDefinitions.remove(definition); } public void setFormPropertyDefinitions(List<FormPropertyDefinition> formPropertyDefinitions) { this.formPropertyDefinitions = formPropertyDefinitions; } public FormPropertyGroup addFormPropertyDefinition(FormPropertyDefinition definition) { if (definition == null) { throw new SimpleWorkflowException("Definition to add cannot be null"); } formPropertyDefinitions.add(definition); return this; } public String getType() { return type; } public void setType(String type) { this.type = type; } public void setTitle(String title) { this.title = title; } public String getTitle() { return title; } public String getId() { return id; } public void setId(String id) { this.id = id; } public FormPropertyGroup clone() { FormPropertyGroup clone = new FormPropertyGroup(); clone.setValues(this); return clone; } public void setValues(FormPropertyGroup otherGroup) { if (!(otherGroup instanceof FormPropertyGroup)) { throw new SimpleWorkflowException("An instance of FormPropertyGroup is required to set values"); } FormPropertyGroup formGroup = (FormPropertyGroup) otherGroup; setId(formGroup.getId()); setTitle(formGroup.getTitle()); setType(formGroup.getType()); List<FormPropertyDefinition> definitionList = new ArrayList<FormPropertyDefinition>(); if (formGroup.getFormPropertyDefinitions() != null && !formGroup.getFormPropertyDefinitions().isEmpty()) { for (FormPropertyDefinition propertyDefinition : formGroup.getFormPropertyDefinitions()) { definitionList.add(propertyDefinition.clone()); } } setFormPropertyDefinitions(definitionList); } }