// This file is part of AceWiki.
// Copyright 2008-2013, AceWiki developers.
//
// AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU
// Lesser General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License along with AceWiki. If
// not, see http://www.gnu.org/licenses/.
package ch.uzh.ifi.attempto.acewiki.core;
/**
* This class represents a text element that links to an ontology element. The text of
* the text elements corresponds to one of the word forms of the ontology element.
*
* @author Tobias Kuhn
*/
// TODO Get rid of pre and post texts.
public class OntologyTextElement extends PrettyTextElement {
private OntologyElement ontologyElement;
private int wordNumber;
private String pre = "";
private String post = "";
/**
* Creates a new ontology text element.
*
* @param element The ontology element.
* @param wordNumber The word number.
*/
public OntologyTextElement(OntologyElement element, int wordNumber) {
if (element.getWord(wordNumber) == null) {
throw new RuntimeException(element + " has no word number " + wordNumber);
}
this.ontologyElement = element;
this.wordNumber = wordNumber;
}
public String getOriginalText() {
return pre + ontologyElement.getWord(wordNumber) + post;
}
/**
* This method adds a text to the front of the word of the ontology element.
*
* @param pre The text to be added to the front.
*/
public void setPreText(String pre) {
if (pre != null) this.pre = pre;
}
/**
* Returns the text added to the front.
*
* @return The text to be added to the front.
*/
public String getPreText() {
return pre;
}
/**
* This method adds a text to the end of the word of the ontology element.
*
* @param post The text to be added to the end.
*/
public void setPostText(String post) {
if (post != null) this.post = post;
}
/**
* Returns the text added to the end.
*
* @return The text to be added to the end.
*/
public String getPostText() {
return post;
}
/**
* Returns the id of the word form of the ontology element that is used for this
* text element.
*
* @return The word form id.
*/
public int getWordNumber() {
return wordNumber;
}
/**
* Returns the ontology element to which this text element is linked.
*
* @return The ontology element.
*/
public OntologyElement getOntologyElement() {
return ontologyElement;
}
public boolean equals(Object obj) {
if (obj instanceof OntologyTextElement) {
OntologyTextElement other = ((OntologyTextElement) obj);
return (
ontologyElement == other.ontologyElement &&
wordNumber == other.wordNumber
);
}
return false;
}
}