/*
* 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.task;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jbpm.formbuilder.shared.task.TaskPropertyRef;
import org.jbpm.formbuilder.shared.task.TaskRef;
public class TaskRepoHelper {
Map<String, TaskRef> tasksMap = new HashMap<String, TaskRef>();
List<TaskRef> tasks = new ArrayList<TaskRef>();
String procId = null;
String procName = null;
String pkgName = null;
public void clear() {
tasks.clear();
tasksMap.clear();
procId = null;
procName = null;
pkgName = null;
}
public void addTask(TaskRef task) {
TaskRef oldTask = tasksMap.get(task.getTaskName());
if (oldTask != null) {
tasks.remove(oldTask);
for (TaskPropertyRef input : task.getInputs()) {
oldTask.addInput(input.getName(), input.getSourceExpresion());
}
for (TaskPropertyRef output : task.getOutputs()) {
oldTask.addOutput(output.getName(), output.getSourceExpresion());
}
Map<String, String> metaData = oldTask.getMetaData();
metaData.putAll(task.getMetaData());
oldTask.setMetaData(metaData);
task = oldTask;
}
task.setProcessId(this.procId);
task.setPackageName(this.pkgName);
tasks.add(task);
tasksMap.put(task.getTaskName(), task);
}
public List<TaskRef> getTasks() {
return tasks;
}
public void addOutput(String processInputName, String id) {
for (TaskRef task : tasks) {
if (task.getTaskName().equals(processInputName)) {
TaskPropertyRef prop = new TaskPropertyRef();
prop.setName(id);
prop.setSourceExpresion("${" + id + "}");
if (!task.getOutputs().contains(prop)) {
task.addOutput(id, "${" + id + "}");
}
return;
}
}
TaskRef ref = new TaskRef();
ref.setTaskId(processInputName);
ref.setPackageName(this.pkgName);
ref.setProcessId(this.procId);
ref.addOutput(id, "${" + id + "}");
tasks.add(ref);
tasksMap.put(ref.getTaskName(), ref);
}
public void setDefaultProcessId(String processId) {
this.procId = processId;
for (TaskRef task : tasks) {
task.setProcessId(this.procId);
}
}
public void setDefaultProcessName(String processName) {
this.procName = processName;
for (TaskRef task : tasks) {
task.setProcessName(this.procName);
}
}
public void setDefaultPackageName(String packageName) {
this.pkgName = packageName;
for (TaskRef task : tasks) {
task.setPackageName(this.pkgName);
}
}
}