/* * This file is part of the OSMembrane project. * More informations under www.osmembrane.de * * The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0. * for more details about the license see http://www.osmembrane.de/license/ * * Source: $HeadURL$ ($Revision$) * Last changed: $Date$ */ package de.osmembrane.model.settings; import de.osmembrane.model.pipeline.AbstractFunction; import de.osmembrane.model.pipeline.CopyType; /** * Implementation of {@link AbstractFunctionPreset}. * * @author jakob_jarosch */ public class FunctionPreset extends AbstractFunctionPreset { private static final long serialVersionUID = 2011020221170001L; private String name; private AbstractFunction function; /** * Creates a new FunctionPreset with given name and function. * * @param name * name of the preset * @param function * which should be saved in the preset */ public FunctionPreset(String name, AbstractFunction function) { this.name = name; this.function = function.copy(CopyType.WITHOUT_POSITION); } @Override public String getName() { return name; } @Override public void loadPreset(AbstractFunction function) { /* iterate over all tasks */ for (int task = 0; task < this.function.getAvailableTasks().length; task++) { /* set the active task */ if (this.function.getAvailableTasks()[task] == this.function .getActiveTask()) { function.setActiveTask(function.getAvailableTasks()[task]); } /* assign all parameters */ for (int param = 0; param < this.function.getAvailableTasks()[task] .getParameters().length; param++) { /* check if parameter values equals */ try { if (this.function.getAvailableTasks()[task].getParameters()[param] .getName().equals( function.getAvailableTasks()[task] .getParameters()[param].getName())) { function.getAvailableTasks()[task].getParameters()[param] .setValue(this.function.getAvailableTasks()[task] .getParameters()[param].getValue()); } } catch (ArrayIndexOutOfBoundsException e) { /* just ignore, not so important */ } } } } @Override protected AbstractFunction getInheritedFunction() { return function; } }