/* * 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.pipeline; import java.awt.Color; import java.util.ArrayList; import java.util.List; import de.osmembrane.model.Identifier; import de.osmembrane.model.ModelProxy; import de.osmembrane.model.xml.XMLFunction; import de.osmembrane.model.xml.XMLFunctionGroup; import de.osmembrane.resources.Constants; import de.osmembrane.tools.I18N; /** * This represents the implementation of a simple FunctionGroup for the * XML-Functions. * * @author jakob_jarosch */ public class FunctionGroup extends AbstractFunctionGroup { private static final long serialVersionUID = 2010123022400001L; private XMLFunctionGroup xmlGroup; private List<Function> functions = new ArrayList<Function>(); private final Identifier identifier; /** * Creates a new FunctionGroup with a given XMLFunctionGroup. * * @param xmlGroup * XMLFunctionGroup belongs to this FunctionGroup */ public FunctionGroup(XMLFunctionGroup xmlGroup) { this.xmlGroup = xmlGroup; /* create identifier */ AbstractFunctionPrototype afp = ModelProxy.getInstance().getFunctions(); identifier = afp.pushFGToMap(this, xmlGroup); for (XMLFunction xmlFunction : xmlGroup.getFunction()) { functions.add(new Function(this, xmlFunction)); } } @Override public String getId() { return xmlGroup.getId(); } @Override public String getFriendlyName() { /* fallback if friendlyName is not available */ if (xmlGroup.getFriendlyName() == null) { return getId(); } return xmlGroup.getFriendlyName(); } @Override public String getDescription() { return I18N.getInstance().getDescription(xmlGroup); } @Override public Color getColor() { String colorString = xmlGroup.getColor(); if (colorString == null) { return Constants.DEFAULT_FUNCTIONGROUP_COLOR; } String[] color = colorString.split(","); if (color.length != 3) { return Constants.DEFAULT_FUNCTIONGROUP_COLOR; } int r, g, b; try { r = Integer.parseInt(color[0].trim()); g = Integer.parseInt(color[1].trim()); b = Integer.parseInt(color[2].trim()); } catch (NumberFormatException e) { return Constants.DEFAULT_FUNCTIONGROUP_COLOR; } if ((r < 0 || r > 255) && (g < 0 || g > 255) && (b < 0 || b > 255)) { return Constants.DEFAULT_FUNCTIONGROUP_COLOR; } return new Color(r, g, b); } @Override public AbstractFunction[] getFunctions() { Function[] returnFunctions = new Function[functions.size()]; returnFunctions = functions.toArray(returnFunctions); return (AbstractFunction[]) returnFunctions; } @Override public boolean same(AbstractFunctionGroup group) { if (group instanceof FunctionGroup) { FunctionGroup oFG = (FunctionGroup) group; return (oFG.getIdentifier().equals(this.getIdentifier())); } return false; } @Override public Identifier getIdentifier() { return identifier; } }