/******************************************************************************* * Copyright (c) 2011 The University of York. * 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: * Louis Rose - initial API and implementation ******************************************************************************/ package simulator.test.util; import java.util.Arrays; import simulator.scl.Action; import simulator.scl.Button; import simulator.scl.ChangeDisplay; import simulator.scl.ChangeIndicator; import simulator.scl.ConfigFactory; import simulator.scl.Configuration; import simulator.scl.DisplayMatchesCondition; import simulator.scl.Displayable; import simulator.scl.Expression; import simulator.scl.IncrementTimeVariable; import simulator.scl.Mode; import simulator.scl.NextMode; import simulator.scl.StringConstant; import simulator.scl.TimeConstant; import simulator.scl.UnitOfTime; import simulator.scl.Variable; public class ConfigurationFactory { public static Configuration createConfiguration(Variable... variables) { final Configuration configuration = ConfigFactory.eINSTANCE.createConfiguration(); configuration.getModes().add(createMode("default")); configuration.getVariables().addAll(Arrays.asList(variables)); return configuration; } public static Mode createMode(String name, Button... buttons) { final Mode mode = ConfigFactory.eINSTANCE.createMode(); mode.setName(name); mode.getButtons().addAll(Arrays.asList(buttons)); return mode; } public static Button createButton(String name, Action... behaviour) { final Button button = ConfigFactory.eINSTANCE.createButton(); button.setName(name); button.getBehaviour().addAll(Arrays.asList(behaviour)); return button; } public static NextMode createNextModeAction() { return ConfigFactory.eINSTANCE.createNextMode(); } public static ChangeDisplay createChangeDisplayAction(Displayable newValue) { final ChangeDisplay changeDisplayAction = ConfigFactory.eINSTANCE.createChangeDisplay(); changeDisplayAction.setNewValue(newValue); return changeDisplayAction; } public static ChangeIndicator createChangeIndicatorAction(Displayable newValue) { final ChangeIndicator changeIndicatorAction = ConfigFactory.eINSTANCE.createChangeIndicator(); changeIndicatorAction.setNewValue(newValue); return changeIndicatorAction; } public static Expression createIncrementTimeVariableExpression(Variable variable, UnitOfTime increment) { final IncrementTimeVariable expression = ConfigFactory.eINSTANCE.createIncrementTimeVariable(); expression.setUnit(increment); expression.setVariable(variable); return expression; } public static StringConstant createStringConstant(String value) { final StringConstant constant = ConfigFactory.eINSTANCE.createStringConstant(); constant.setValue(value); return constant; } public static TimeConstant createTimeConstant(String time) { final int hours = Integer.parseInt(time.split(":")[0]); final int minutes = Integer.parseInt(time.split(":")[1]); return createTimeConstant(hours, minutes); } public static TimeConstant createTimeConstant(int hours, int minutes) { final TimeConstant constant = ConfigFactory.eINSTANCE.createTimeConstant(); constant.setHours(hours); constant.setMinutes(minutes); return constant; } public static Variable createVariable(String variableName) { final Variable variable = ConfigFactory.eINSTANCE.createVariable(); variable.setName(variableName); return variable; } public static DisplayMatchesCondition createDisplayMatchesCondition(Displayable displayable) { final DisplayMatchesCondition guard = ConfigFactory.eINSTANCE.createDisplayMatchesCondition(); guard.setValueToMatch(displayable); return guard; } }