/*
* 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.shared.task;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TaskRef {
private String packageName;
private String processId;
private String processName;
private String taskId;
private List<TaskPropertyRef> inputs = new ArrayList<TaskPropertyRef>();
private List<TaskPropertyRef> outputs = new ArrayList<TaskPropertyRef>();
private Map<String, String> metaData = new HashMap<String, String>();
public List<TaskPropertyRef> getInputs() {
return inputs;
}
public void setInputs(List<TaskPropertyRef> inputs) {
this.inputs = inputs;
}
public List<TaskPropertyRef> getOutputs() {
return outputs;
}
public void setOutputs(List<TaskPropertyRef> outputs) {
this.outputs = outputs;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public boolean addInput(String key, String value) {
if (getInput(key) != null) {
return false;
}
TaskPropertyRef tpRef = new TaskPropertyRef();
tpRef.setName(key);
tpRef.setSourceExpresion(value);
return this.inputs.add(tpRef);
}
public TaskPropertyRef getInput(String key) {
for (TaskPropertyRef ref : inputs) {
if (key != null && key.equals(ref.getName())) {
return ref;
}
}
return null;
}
public Object removeInput(String key) {
return this.inputs.remove(getInput(key));
}
public boolean addOutput(String key, String value) {
if (getOutput(key) != null) {
return false;
}
TaskPropertyRef tpRef = new TaskPropertyRef();
tpRef.setName(key);
tpRef.setSourceExpresion(value);
return this.outputs.add(tpRef);
}
public TaskPropertyRef getOutput(String key) {
for (TaskPropertyRef ref : outputs) {
if (key != null && key.equals(ref.getName())) {
return ref;
}
}
return null;
}
public Object removeOutput(String key) {
return this.outputs.remove(getOutput(key));
}
public String getTaskName() {
return this.taskId;
}
public void setProcessId(String processId) {
this.processId = processId;
}
public String getProcessId() {
return processId;
}
public void setMetaData(Map<String, String> metaData) {
this.metaData = metaData;
}
public Map<String, String> getMetaData() {
return metaData;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getPackageName() {
return packageName;
}
public void setProcessName(String processName) {
this.processName = processName;
}
public String getProcessName() {
return processName;
}
@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (obj == null) return false;
if (!(obj instanceof TaskRef)) return false;
TaskRef other = (TaskRef) obj;
boolean equals = (this.packageName == null && other.packageName == null) ||
(this.packageName != null && this.packageName.equals(other.packageName));
if (!equals) return equals;
equals = (this.processId == null && other.processId == null) ||
(this.processId != null && this.processId.equals(other.processId));
if (!equals) return equals;
equals = (this.processName == null && other.processName == null) ||
(this.processName != null && this.processName.equals(other.processName));
if (!equals) return equals;
equals = (this.taskId == null && other.taskId == null) ||
(this.taskId != null && this.taskId.equals(other.taskId));
if (!equals) return equals;
equals = (this.inputs == null && other.inputs == null) ||
(this.inputs != null && this.inputs.equals(other.inputs));
if (!equals) return equals;
equals = (this.outputs == null && other.outputs == null) ||
(this.outputs != null && this.outputs.equals(other.outputs));
if (!equals) return equals;
equals = (this.metaData == null && other.metaData == null)
|| (this.metaData != null && this.metaData.entrySet().equals(other.metaData.entrySet()));
return equals;
}
@Override
public int hashCode() {
int result = super.hashCode();
int aux = this.packageName == null ? 0 : this.packageName.hashCode();
result = 37 * result + aux;
aux = this.processId == null ? 0 : this.processId.hashCode();
result = 37 * result + aux;
aux = this.processName == null ? 0 : this.processName.hashCode();
result = 37 * result + aux;
aux = this.taskId == null ? 0 : this.taskId.hashCode();
result = 37 * result + aux;
aux = this.inputs == null ? 0 : this.inputs.hashCode();
result = 37 * result + aux;
aux = this.outputs == null ? 0 : this.outputs.hashCode();
result = 37 * result + aux;
aux = this.metaData == null ? 0 : this.metaData.hashCode();
result = 37 * result + aux;
return result;
}
@Override
public String toString() {
return new StringBuilder("TaskRef[package=").append(this.packageName).
append(";processId=").append(this.processId).
append(";processName=").append(this.processName).
append(";taskId=").append(this.taskId).
append(";inputs=").append(this.inputs).
append(";outputs=").append(this.outputs).
append(";metaData=").append(this.metaData).
append("]").toString();
}
}