001    // This file is part of AceWiki.
002    // Copyright 2008-2012, AceWiki developers.
003    // 
004    // AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU
005    // Lesser General Public License as published by the Free Software Foundation, either version 3 of
006    // the License, or (at your option) any later version.
007    // 
008    // AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
009    // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
010    // Lesser General Public License for more details.
011    // 
012    // You should have received a copy of the GNU Lesser General Public License along with AceWiki. If
013    // not, see http://www.gnu.org/licenses/.
014    
015    package ch.uzh.ifi.attempto.acewiki.core;
016    
017    import java.util.List;
018    
019    import ch.uzh.ifi.attempto.base.TextContainer;
020    import ch.uzh.ifi.attempto.base.TextElement;
021    import ch.uzh.ifi.attempto.base.TextOperator;
022    
023    /**
024     * This class represents a sentence for a monolingual AceWiki engine.
025     * 
026     * @author Tobias Kuhn
027     */
028    public abstract class MonolingualSentence extends AbstractSentence {
029            
030            /**
031             * Initializes a new sentence.
032             */
033            protected MonolingualSentence() {
034            }
035    
036            /**
037             * Returns a list of text elements that represent the tokens of this sentence.
038             * 
039             * @return A token list.
040             */
041            public abstract List<TextElement> getTextElements();
042            
043            public final List<TextElement> getTextElements(String language) {
044                    return getTextElements();
045            }
046    
047            /**
048             * Returns a text container with the text of this sentence in the only available language.
049             * 
050             * @return The text container.
051             */
052            protected abstract TextContainer getTextContainer();
053    
054            protected final TextContainer getTextContainer(String language) {
055                    return getTextContainer();
056            }
057            
058            /**
059             * Returns the text of this sentence in the only available language.
060             * 
061             * @return The sentence text.
062             */
063            public String getText() {
064                    return getText("Default");
065            }
066    
067            /**
068             * Returns a list of sentence details to be shown to the user.
069             * 
070             * @return A list of sentence details.
071             */
072            public abstract List<SentenceDetail> getDetails();
073            
074            public final List<SentenceDetail> getDetails(String language) {
075                    return getDetails();
076            }
077            
078            /**
079             * Returns the text operator for the given language.
080             * 
081             * @return The text operator.
082             */
083            protected TextOperator getTextOperator() {
084                    return getTextOperator("Default");
085            }
086    
087    }