package org.studiorailgun.ai.conversation.tracking;

import org.studiorailgun.ai.conversation.categorization.SentenceFunctionCategorizor.SentenceFunction;
import org.studiorailgun.ai.conversation.parser.depend.Clause;

import edu.stanford.nlp.semgraph.SemanticGraph;

/**
 * A single sentence in a quote
 */
public class Sentence {
    
    /**
     * The raw text of the sentence
     */
    String raw;

    /**
     * The function of the sentence
     */
    SentenceFunction function;

    /**
     * The parsed semantic graph
     */
    SemanticGraph graph;

    /**
     * The main clause of the sentence
     */
    Clause mainClause;

    /**
     * The parent quote of this sentence
     */
    Quote parent;

    /**
     * Constructor
     * @param raw The raw text for the sentence
     */
    public Sentence(String raw){
        this.raw = raw;
    }

    /**
     * Gets the raw text of the quote
     * @return The raw text of the quote
     */
    public String getRaw(){
        return raw;
    }

    /**
     * Gets the function of the quote
     * @return The function
     */
    public SentenceFunction getFunction(){
        return function;
    }

    /**
     * Sets the function of the sentence
     * @param function The function
     */
    public void setFunction(SentenceFunction function){
        this.function = function;
    }

    /**
     * Gets the parser graph for the sentence
     * @return The graph
     */
    public SemanticGraph getGraph() {
        return graph;
    }

    /**
     * Sets the parser graph for the sentence
     * @param graph The graph
     */
    public void setGraph(SemanticGraph graph) {
        this.graph = graph;
    }

    /**
     * Sets the parent quote of the sentence
     * @param parent The quote
     */
    public void setParent(Quote parent){
        this.parent = parent;
    }

    /**
     * Gets the parent quote of the sentence
     * @return The quote
     */
    public Quote getParent(){
        return parent;
    }

    /**
     * Gets the main clause of the sentence
     * @return The main clause
     */
    public Clause getMainClause() {
        return mainClause;
    }

    /**
     * Sets the main clause of the sentence
     * @param mainClause The main clause
     */
    public void setMainClause(Clause mainClause) {
        this.mainClause = mainClause;
    }

    

}
