    001    package org.maltparser.core.flow.item;
    002
    003    import org.maltparser.core.exception.MaltChainedException;
    004    import org.maltparser.core.flow.FlowChartInstance;
    005    import org.maltparser.core.flow.spec.ChartItemSpecification;
    006    import org.maltparser.core.flow.system.elem.ChartElement;
    007    /**
    008    *
    009    *
    010    * @author Johan Hall
    011    */
    012    public abstract class ChartItem {
    013            protected FlowChartInstance flowChartinstance;
    014            protected ChartItemSpecification chartItemSpecification;
    015
    016            // Signals
    017            public final static int CONTINUE = 1;
    018            public final static int TERMINATE = 2;
    019            public final static int NEWITERATION = 3;
    020
    021            public ChartItem() {  }
    022
    023            /**
    024             * Initialize the chart item
    025             *
    026             * @param flowChartinstance the flow chart instance that the chart item belongs to
    027             * @param chartItemSpecification a specification of the chart item
    028             * @throws MaltChainedException
    029             */
    030            public void initialize(FlowChartInstance flowChartinstance, ChartItemSpecification chartItemSpecification) throws MaltChainedException {
    031                    setFlowChartInstance(flowChartinstance);
    032                    setChartItemSpecification(chartItemSpecification);
    033            }
    034
    035            /**
    036             * Cause the chart item to perform the preprocess tasks
    037             *
    038             * @param signal returned by the previous chart item
    039             * @return true if every thing is ok, otherwise false
    040             * @throws MaltChainedException
    041             */
    042            public abstract int preprocess(int signal) throws MaltChainedException;
    043
    044            /**
    045             * Cause the chart item to perform the process task (for every sentence)
    046             *
    047             * @param signal returned by the previous chart item
    048             * @return true if it is ready to perform the next sentence, otherwise false
    049             * @throws MaltChainedException
    050             */
    051            public abstract int process(int signal) throws MaltChainedException;
    052
    053            /**
    054             * Cause the chart item to perform the postprocess tasks
    055             *
    056             * @param signal returned by the previous chart item
    057             * @return true if every thing is ok, otherwise false
    058             * @throws MaltChainedException
    059             */
    060            public abstract int postprocess(int signal) throws MaltChainedException;
    061
    062            /**
    063             * Terminates and cleans up the chart item
    064             *
    065             * @throws MaltChainedException
    066             */
    067            public abstract void terminate() throws MaltChainedException;
    068
    069            /**
    070             * Returns the flow chart instance that the chart item belongs to
    071             *
    072             * @return the flow chart instance that the chart item belongs to
    073             */
    074            public FlowChartInstance getFlowChartInstance() {
    075                    return flowChartinstance;
    076            }
    077
    078            /**
    079             * Sets the flow chart instance that the chart item belongs to
    080             *
    081             * @param flowChartinstance a flow chart instance
    082             */
    083            protected void setFlowChartInstance(FlowChartInstance flowChartinstance) {
    084                    this.flowChartinstance = flowChartinstance;
    085            }
    086
    087            /**
    088             * Returns the option container index
    089             *
    090             * @return the option container index
    091             */
    092            public int getOptionContainerIndex() {
    093                    return flowChartinstance.getOptionContainerIndex();
    094            }
    095
    096            /**
    097             * Returns the chart element in the flow chart system description
    098             *
    099             * @param key a chart element key
    100             * @return the chart element in the flow chart system description
    101             */
    102            public ChartElement getChartElement(String key) {
    103                    return flowChartinstance.getFlowChartManager().getFlowChartSystem().getChartElement(key);
    104            }
    105
    106            /**
    107             * Returns a chart item specification
    108             *
    109             * @return a chart item specification
    110             */
    111            public ChartItemSpecification getChartItemSpecification() {
    112                    return chartItemSpecification;
    113            }
    114
    115            /**
    116             * Sets the specification of the chart item
    117             *
    118             * @param chartItemSpecification a chart item specification
    119             */
    120            public void setChartItemSpecification(ChartItemSpecification chartItemSpecification) {
    121                    this.chartItemSpecification = chartItemSpecification;
    122            }
    123    }