package org.maltparser.core.flow.item; import org.maltparser.core.exception.MaltChainedException; import org.maltparser.core.flow.FlowChartInstance; import org.maltparser.core.flow.spec.ChartItemSpecification; import org.maltparser.core.flow.system.elem.ChartElement; /** * * * @author Johan Hall */ public abstract class ChartItem { protected FlowChartInstance flowChartinstance; protected ChartItemSpecification chartItemSpecification; // Signals public final static int CONTINUE = 1; public final static int TERMINATE = 2; public final static int NEWITERATION = 3; public ChartItem() { } /** * Initialize the chart item * * @param flowChartinstance the flow chart instance that the chart item * belongs to * @param chartItemSpecification a specification of the chart item * @throws MaltChainedException */ public void initialize(FlowChartInstance flowChartinstance, ChartItemSpecification chartItemSpecification) throws MaltChainedException { setFlowChartInstance(flowChartinstance); setChartItemSpecification(chartItemSpecification); } /** * Cause the chart item to perform the preprocess tasks * * @param signal returned by the previous chart item * @return true if every thing is ok, otherwise false * @throws MaltChainedException */ public abstract int preprocess(int signal) throws MaltChainedException; /** * Cause the chart item to perform the process task (for every sentence) * * @param signal returned by the previous chart item * @return true if it is ready to perform the next sentence, otherwise false * @throws MaltChainedException */ public abstract int process(int signal) throws MaltChainedException; /** * Cause the chart item to perform the postprocess tasks * * @param signal returned by the previous chart item * @return true if every thing is ok, otherwise false * @throws MaltChainedException */ public abstract int postprocess(int signal) throws MaltChainedException; /** * Terminates and cleans up the chart item * * @throws MaltChainedException */ public abstract void terminate() throws MaltChainedException; /** * Returns the flow chart instance that the chart item belongs to * * @return the flow chart instance that the chart item belongs to */ public FlowChartInstance getFlowChartInstance() { return flowChartinstance; } /** * Sets the flow chart instance that the chart item belongs to * * @param flowChartinstance a flow chart instance */ protected void setFlowChartInstance(FlowChartInstance flowChartinstance) { this.flowChartinstance = flowChartinstance; } /** * Returns the option container index * * @return the option container index */ public int getOptionContainerIndex() { return flowChartinstance.getOptionContainerIndex(); } /** * Returns the chart element in the flow chart system description * * @param key a chart element key * @return the chart element in the flow chart system description */ public ChartElement getChartElement(String key) { return flowChartinstance.getFlowChartManager().getFlowChartSystem().getChartElement(key); } /** * Returns a chart item specification * * @return a chart item specification */ public ChartItemSpecification getChartItemSpecification() { return chartItemSpecification; } /** * Sets the specification of the chart item * * @param chartItemSpecification a chart item specification */ public void setChartItemSpecification(ChartItemSpecification chartItemSpecification) { this.chartItemSpecification = chartItemSpecification; } }