/*******************************************************************************
* Copyright (c) 2008 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.smooks.graphical.actions;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.jboss.tools.smooks.configuration.editors.utils.SmooksUIUtils;
import org.jboss.tools.smooks.graphical.editors.TaskTypeManager;
import org.jboss.tools.smooks.graphical.editors.process.ProcessType;
import org.jboss.tools.smooks.graphical.editors.process.TaskType;
/**
* @author Dart
*
*/
public class TaskTypeRules {
public boolean isNextTask(TaskType currentTask, TaskType testTask) {
TaskType parentTask = testTask;
String parentID = parentTask.getId();
Object parent = currentTask;
while (!(parent instanceof ProcessType) && parent != null) {
if (parent instanceof TaskType) {
parent = ((TaskType) parent).getParent();
}
}
if(parent == null) return false;
List<TaskType> currentList = ((ProcessType) parent).getTask();
List<TaskType> taskList = new ArrayList<TaskType>();
for (Iterator<?> iterator = currentList.iterator(); iterator.hasNext();) {
TaskType taskType = (TaskType) iterator.next();
SmooksUIUtils.fillAllTask(taskType, taskList);
}
if (parentID.equals(TaskTypeManager.TASK_ID_INPUT)) {
// if (!SmooksConstants.TASK_ID_JAVA_MAPPING.equals(taskID))
return false;
}
if (parentID.equals(TaskTypeManager.TASK_ID_FREEMARKER_XML_TEMPLATE) || parentID.equals(TaskTypeManager.TASK_ID_FREEMARKER_CSV_TEMPLATE)) {
if (TaskTypeManager.TASK_ID_INPUT.equals(currentTask.getId())) {
return true;
} else if (TaskTypeManager.TASK_ID_JAVA_MAPPING.equals(currentTask.getId())) {
return true;
}else{
for (Iterator<?> iterator = taskList.iterator(); iterator.hasNext();) {
TaskType taskType = (TaskType) iterator.next();
if (parentID.equals(taskType.getId())) {
return false;
}
}
return true;
}
}
if (parentID.equals(TaskTypeManager.TASK_ID_JAVA_MAPPING)) {
if (!TaskTypeManager.TASK_ID_INPUT.equals(currentTask.getId())) {
return false;
} else {
for (Iterator<?> iterator = taskList.iterator(); iterator.hasNext();) {
TaskType taskType = (TaskType) iterator.next();
if (TaskTypeManager.TASK_ID_JAVA_MAPPING.equals(taskType.getId())) {
return false;
}
}
return true;
}
}
return false;
}
public boolean isPreTask(TaskType currentTask, TaskType testTask) {
TaskType parentTask = testTask;
String currentTaskID = parentTask.getId();
if (currentTaskID.equals(TaskTypeManager.TASK_ID_INPUT)) {
if (!TaskTypeManager.TASK_ID_JAVA_MAPPING.equals(currentTask.getId())) {
return false;
} else {
List<?> taskList = parentTask.getTask();
for (Iterator<?> iterator = taskList.iterator(); iterator.hasNext();) {
TaskType object = (TaskType) iterator.next();
if (TaskTypeManager.TASK_ID_JAVA_MAPPING.equals(object.getId())) {
return false;
}
}
}
}
if (currentTaskID.equals(TaskTypeManager.TASK_ID_JAVA_MAPPING)) {
// if (!SmooksConstants.TASK_ID_JAVA_MAPPING.equals(taskID))
return false;
}
return true;
}
}