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 ch.uzh.ifi.attempto.base.TextOperator;
018    
019    /**
020     * This class represents a statement that can be either an ACE sentence or a comment. A
021     * statement can either be part of an article or it can be an independent statement that has no
022     * article.
023     * 
024     * @author Tobias Kuhn
025     */
026    public abstract class AbstractStatement implements Statement {
027            
028            private Ontology ontology;
029            private Article article;
030            
031            /**
032             * Initializes a new independent statement.
033             */
034            protected AbstractStatement() {
035            }
036            
037            public void init(Ontology ontology, Article article) {
038                    this.ontology = ontology;
039                    this.article = article;
040            }
041            
042            public Ontology getOntology() {
043                    return ontology;
044            }
045            
046            public Article getArticle() {
047                    return article;
048            }
049            
050            public String toString() {
051                    return getText(getDefaultLanguage());
052            }
053            
054            /**
055             * Returns the AceWiki engine.
056             * 
057             * @return The engine.
058             */
059            protected AceWikiEngine getEngine() {
060                    return getOntology().getEngine();
061            }
062            
063            /**
064             * Returns the default language.
065             * 
066             * @return The default language.
067             */
068            protected String getDefaultLanguage() {
069                    return getEngine().getLanguages()[0];
070            }
071            
072            /**
073             * Returns the language handler for the given language.
074             * 
075             * @param language The language.
076             * @return The language handler.
077             */
078            protected LanguageHandler getLanguageHandler(String language) {
079                    return getEngine().getLanguageHandler(language);
080            }
081            
082            /**
083             * Returns the text operator for the given language.
084             * 
085             * @param language The language.
086             * @return The text operator.
087             */
088            protected TextOperator getTextOperator(String language) {
089                    return getLanguageHandler(language).getTextOperator();
090            }
091    
092    }