/*
* 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.net.URL;
import java.util.Observable;
import de.osmembrane.model.Identifier;
import de.osmembrane.model.xml.XMLEnumValue;
import de.osmembrane.model.xml.XMLFunction;
import de.osmembrane.model.xml.XMLFunctionGroup;
import de.osmembrane.model.xml.XMLParameter;
import de.osmembrane.model.xml.XMLPipe;
import de.osmembrane.model.xml.XMLTask;
/**
* This is an Prototype for accessing the XMLFunctions.
*
* @author jakob_jarosch
*/
public abstract class AbstractFunctionPrototype extends Observable {
/**
* Initiates the Prototype with a given compatible XML-file.
*
* @param xmlFilename
* filename of the given XML-file
*/
public abstract void initiate(URL xmlFilename);
/**
* Returns all {@link AbstractFunctionGroup}s.
*
* @return the {@link AbstractFunctionGroup}s
*/
public abstract AbstractFunctionGroup[] getFunctionGroups();
/**
* Returns matching functions for a given String.
*
* @param matching
* string which should match on every function
* @return all matching functions
*/
public abstract AbstractFunction[] getFilteredFunctions(String matching);
/**
* Returns the matching function for a given task-name. The corresponding
* task is set as active
*
* @param taskName
* name of task which should be found
* @return the function for the task
*/
public abstract AbstractFunction getMatchingFunctionForTaskName(
String taskName);
/**
* Adds an Identifier for an {@link AbstractFunctionGroup} to the Map.
*
* @param fg
* {@link AbstractFunctionGroup} which should be mapped
* @param xmlFG
* referring {@link XMLFunctionGroup} for the
* {@link AbstractFunctionGroup}
* @return the {@link Identifier} for the given
* {@link AbstractFunctionGroup}
*/
protected abstract Identifier pushFGToMap(AbstractFunctionGroup fg,
XMLFunctionGroup xmlFG);
/**
* Returns a matching {@link AbstractFunctionGroup} for an
* {@link Identifier}.
*
* @param identifier
* {@link Identifier} which should be found.
* @return the matching {@link AbstractFunctionGroup} or NULL
*/
protected abstract AbstractFunctionGroup getMatchingFunctionGroup(
Identifier identifier);
/**
* Returns a matching {@link Identifier} for an
* {@link AbstractFunctionGroup}.
*
* @param identifier
* {@link AbstractFunctionGroup} which should be found.
* @return the matching {@link Identifier} or NULL
*/
protected abstract Identifier getMatchingFunctionGroupIdentifier(
AbstractFunctionGroup identifier);
/**
* Returns a matching {@link XMLFunction} for an {@link Identifier}.
*
* @param identifier
* {@link Identifier} which should be found.
* @return the matching {@link XMLFunction} or NULL
*/
protected abstract XMLFunction getMatchingXMLFunction(Identifier identifier);
/**
* Returns a matching {@link Identifier} for an {@link XMLFunction}.
*
* @param identifier
* {@link XMLFunction} which should be found.
* @return the matching {@link Identifier} or NULL
*/
protected abstract Identifier getMatchingXMLFunctionIdentifier(
XMLFunction identifier);
/**
* Returns a matching {@link XMLTask} for an {@link Identifier}.
*
* @param identifier
* {@link Identifier} which should be found.
* @return the matching {@link XMLTask} or NULL
*/
protected abstract XMLTask getMatchingXMLTask(Identifier identifier);
/**
* Returns a matching {@link Identifier} for an {@link XMLTask}.
*
* @param identifier
* {@link XMLTask} which should be found.
* @return the matching {@link Identifier} or NULL
*/
protected abstract Identifier getMatchingXMLTaskIdentifier(
XMLTask identifier);
/**
* Returns a matching {@link XMLPipe} for an {@link Identifier}.
*
* @param identifier
* {@link Identifier} which should be found.
* @return the matching {@link XMLPipe} or NULL
*/
protected abstract XMLPipe getMatchingXMLPipe(Identifier identifier);
/**
* Returns a matching {@link Identifier} for an {@link XMLPipe}.
*
* @param identifier
* {@link XMLPipe} which should be found.
* @return the matching {@link Identifier} or NULL
*/
protected abstract Identifier getMatchingXMLPipeIdentifier(
XMLPipe identifier);
/**
* Returns a matching {@link XMLParameter} for an {@link Identifier}.
*
* @param identifier
* {@link Identifier} which should be found.
* @return the matching {@link XMLParameter} or NULL
*/
protected abstract XMLParameter getMatchingXMLParameter(
Identifier identifier);
/**
* Returns a matching {@link Identifier} for an {@link XMLParameter}.
*
* @param identifier
* {@link XMLParameter} which should be found.
* @return the matching {@link Identifier} or NULL
*/
protected abstract Identifier getMatchingXMLParameterIdentifier(
XMLParameter identifier);
/**
* Returns a matching {@link XMLEnumValue} for an {@link Identifier}.
*
* @param identifier
* {@link Identifier} which should be found.
* @return the matching {@link XMLEnumValue} or NULL
*/
protected abstract XMLEnumValue getMatchingXMLEnumValue(
Identifier identifier);
/**
* Returns a matching {@link Identifier} for an {@link XMLEnumValue}.
*
* @param identifier
* {@link XMLEnumValue} which should be found.
* @return the matching {@link Identifier} or NULL
*/
protected abstract Identifier getMatchingXMLEnumValueIdentifier(
XMLEnumValue identifier);
}