/* * Copyright 2011 JBoss Inc * * 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.jbpm.formbuilder.server.xml; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import org.jbpm.formbuilder.shared.task.TaskPropertyRef; import org.jbpm.formbuilder.shared.task.TaskRef; public class TaskRefDTO { private String _processId; private String _taskName; private String _taskId; private List<PropertyDTO> _input = new ArrayList<PropertyDTO>(); private List<PropertyDTO> _output = new ArrayList<PropertyDTO>(); private List<MetaData2DTO> _metaData = new ArrayList<MetaData2DTO>(); public TaskRefDTO() { // jaxb needs a default constructor } public TaskRefDTO(TaskRef task) { this._processId = task.getProcessId(); this._taskName = task.getTaskName(); this._taskId = task.getTaskId(); List<TaskPropertyRef> allInputs = task.getInputs(); List<TaskPropertyRef> uniqueInputs = new ArrayList<TaskPropertyRef>(); List<String> inputNames = new ArrayList<String>(); for (TaskPropertyRef ref : allInputs) { if (!inputNames.contains(ref.getName())) { inputNames.add(ref.getName()); uniqueInputs.add(ref); } } for (TaskPropertyRef ref : uniqueInputs) { _input.add(new PropertyDTO(ref)); } List<TaskPropertyRef> allOutputs = task.getOutputs(); List<TaskPropertyRef> uniqueOutputs = new ArrayList<TaskPropertyRef>(); List<String> outputNames = new ArrayList<String>(); for (TaskPropertyRef ref : allOutputs) { if (!outputNames.contains(ref.getName())) { outputNames.add(ref.getName()); uniqueOutputs.add(ref); } } for (TaskPropertyRef ref : uniqueOutputs) { _output.add(new PropertyDTO(ref)); } for (Map.Entry<String, String> entry : task.getMetaData().entrySet()) { _metaData.add(new MetaData2DTO(entry)); } } @XmlAttribute public String getProcessId() { return _processId; } public void setProcessId(String processId) { this._processId = processId; } @XmlAttribute public String getTaskName() { return _taskName; } public void setTaskName(String taskName) { this._taskName = taskName; } @XmlAttribute public String getTaskId() { return _taskId; } public void setTaskId(String taskId) { this._taskId = taskId; } @XmlElement public List<PropertyDTO> getInput() { return _input; } public void setInput(List<PropertyDTO> input) { this._input = input; } @XmlElement public List<PropertyDTO> getOutput() { return _output; } public void setOutput(List<PropertyDTO> output) { this._output = output; } @XmlElement public List<MetaData2DTO> getMetaData() { return _metaData; } public void setMetaData(List<MetaData2DTO> metaData) { this._metaData = metaData; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((_input == null) ? 0 : _input.hashCode()); result = prime * result + ((_metaData == null) ? 0 : _metaData.hashCode()); result = prime * result + ((_output == null) ? 0 : _output.hashCode()); result = prime * result + ((_processId == null) ? 0 : _processId.hashCode()); result = prime * result + ((_taskId == null) ? 0 : _taskId.hashCode()); result = prime * result + ((_taskName == null) ? 0 : _taskName.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; TaskRefDTO other = (TaskRefDTO) obj; if (_input == null) { if (other._input != null) return false; } else if (!_input.equals(other._input)) return false; if (_metaData == null) { if (other._metaData != null) return false; } else if (!_metaData.equals(other._metaData)) return false; if (_output == null) { if (other._output != null) return false; } else if (!_output.equals(other._output)) return false; if (_processId == null) { if (other._processId != null) return false; } else if (!_processId.equals(other._processId)) return false; if (_taskId == null) { if (other._taskId != null) return false; } else if (!_taskId.equals(other._taskId)) return false; if (_taskName == null) { if (other._taskName != null) return false; } else if (!_taskName.equals(other._taskName)) return false; return true; } }