blob: 44db6781266815beb941d32cc439b95519f24b15 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are 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:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*/
package org.eclipse.osbp.xtext.action.common;
import java.util.HashMap;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.osbp.bpm.api.BPMStatus;
import org.eclipse.osbp.bpm.api.BPMTaskSummary;
import org.eclipse.osbp.ui.api.user.IUser;
public class TaskHelper {
private TaskHelper() {
}
private static final String ADMINISTRATOR = "Administrator";
public static final class Context extends HashMap<String, Object> {
private static final long serialVersionUID = -2810090198332954979L;
public static final String USER = "user";
public static final String TABLEVIEW = "table";
public static final String TASKSUMMARY = "taskSummary";
}
public static long getTaskId(IEclipseContext context) {
BPMTaskSummary task = context.get(BPMTaskSummary.class);
if(task != null) {
return task.getId();
}
return 0;
}
public static boolean isTask(IEclipseContext context, BPMStatus status) {
BPMTaskSummary task = context.get(BPMTaskSummary.class);
return (task != null && task.getStatus() != null && task.getStatus().equals(status));
}
public static BPMStatus getStatusType(int code) {
for (BPMStatus type : BPMStatus.values()) {
if (type.ordinal() == code) {
return type;
}
}
return null;
}
private static String getUserName(IEclipseContext context) {
IUser user = context.get(IUser.class);
if(user != null) {
return user.getUserName();
}
return ADMINISTRATOR;
}
public static final boolean claimCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
return TaskHelper.isTask(context, BPMStatus.Created);
}
public static final boolean startCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
return TaskHelper.isTask(context, BPMStatus.Ready);
}
public static final boolean resumeCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
boolean suspended = TaskHelper.isTask(context, BPMStatus.Suspended);
boolean progress = TaskHelper.isTask(context, BPMStatus.InProgress);
return (suspended || progress);
}
public static final boolean stopCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
public static final boolean skipCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
public static final boolean delegateCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
public static final boolean forwardCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
public static final boolean registerCanExecute(final IEclipseContext context) {
return TaskHelper.isTask(context, BPMStatus.Ready);
}
public static final boolean removeCanExecute(final IEclipseContext context) {
return TaskHelper.isTask(context, BPMStatus.Ready);
}
public static final boolean completeCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
public static final boolean suspendCanExecute(final IEclipseContext context) {
if (ADMINISTRATOR.equals(getUserName(context))) {
return false;
}
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
public static final boolean releaseCanExecute(final IEclipseContext context) {
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
public static final boolean activateCanExecute(final IEclipseContext context) {
return TaskHelper.isTask(context, BPMStatus.Created);
}
public static final boolean failCanExecute(final IEclipseContext context) {
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
public static final boolean exitCanExecute(final IEclipseContext context) {
return TaskHelper.isTask(context, BPMStatus.InProgress);
}
}