/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package org.absmodels.abs.plugin.actions.runconfig; import org.absmodels.abs.plugin.debug.model.Debugger; import org.absmodels.abs.plugin.debug.scheduling.SchedulingStrategy; import abs.backend.java.absunit.ABSTestObserver; import abs.backend.java.debugging.GraphicalDebugger; import abs.backend.java.scheduling.InteractiveScheduler; import abs.backend.java.scheduling.RandomSchedulingStrategy; import abs.backend.java.visualization.UMLSequenceChart; public class RunConfigEnums { /** * Contains all possible observer. * The user can choose one of them in the run configuration. */ public enum DebuggerObserver { ECLIPSE(Debugger.class.getName(),"Eclipse Debugger", true), GRAPHICAL(GraphicalDebugger.class.getName(), "Graphical Debugger", false), UML (UMLSequenceChart.class.getName(), "UML Sequence Diagram", false), ABSUnit (ABSTestObserver.class.getName(), "ABS Unit Testrunner", false); private String className; private String userReadableName; private boolean isSelectedDefault; private DebuggerObserver(String className, String userReadableName, boolean isSelectedDefault) { this.className = className; this.userReadableName = userReadableName; this.isSelectedDefault = isSelectedDefault; } public String getUserReadableName(){ return userReadableName; } public String getClassName(){ return className; } public String getCommand(){ return getEmptyCommand()+this.getClassName(); } public static String getEmptyCommand(){ return "-Dabs.systemobserver="; } public boolean getDefaultSelection(){ return isSelectedDefault; } /** * To show UML diagrams, we have to start SDEdit */ public boolean needsSDEdit() { return this.equals(UML); } /** * Returns Observer with the given userReadableName * or a default value, if no observer was found. * Default is DebuggerObserver.ECLIPSE * * @return DebuggerObserver */ public static DebuggerObserver valueOfUserReadableName(String userReadableName){ DebuggerObserver[] observer = DebuggerObserver.values(); for (int i = 0; i < observer.length; i++) { if(userReadableName.equals(observer[i].getUserReadableName())){ return observer[i]; } } System.err.println("Observer not found: "+userReadableName); return ECLIPSE; //return a default value } /** * Returns Observer with the given class name * or null, if no observer was found. * * @return DebuggerObserver */ public static DebuggerObserver valueOfClassName(String className){ DebuggerObserver[] observer = DebuggerObserver.values(); for (int i = 0; i < observer.length; i++) { if(className.equals(observer[i].getClassName())){ return observer[i]; } } return null; } } /** * Contains all possible scheduler. * The user can choose one of them in the run configuration. */ public enum DebuggerScheduler { ECLIPSE(SchedulingStrategy.class.getName(),"Eclipse Debugger"), INTERACTIVE (InteractiveScheduler.class.getName(), "Interactive Debugger"), RANDOM (RandomSchedulingStrategy.class.getName(), "Random Scheduler"), DEFAULT("", "Default Scheduler"); private String className; private String userReadableName; private DebuggerScheduler(String className, String userReadableName){ this.className = className; this.userReadableName = userReadableName; } public String getUserReadableName(){ return userReadableName; } public String getClassName(){ return className; } public String getCommand(){ if (this.className != null && !this.className.isEmpty()) return "-Dabs.totalscheduler="+this.getClassName(); else return ""; } /** * Returns Scheduler with the given userReadableName * or a default value, if no scheduler was found. * The default value equals DebuggerScheduler.getDefaultScheduler() * * @return DebuggerObserver */ public static DebuggerScheduler valueOfUserReadableName(String userReadableName){ DebuggerScheduler[] scheduler = DebuggerScheduler.values(); for (int i = 0; i < scheduler.length; i++) { if(userReadableName.equals(scheduler[i].getUserReadableName())){ return scheduler[i]; } } System.err.println("Observer not found: "+userReadableName); return DebuggerScheduler.getDefaultScheduler(); } public static DebuggerScheduler getDefaultScheduler(){ return DEFAULT; } } }