/*
* Copyright (c) 1998-2009, The University of Sheffield.
*
* This file is part of GATE (see http://gate.ac.uk/), and is free
* software, licenced under the GNU Library General Public License,
* Version 2, June 1991 (in the distribution as file licence.html,
* and also available at http://gate.ac.uk/gate/licence.html).
*
* Johann Petrak 2009-08-20
*
* $Id: LiteralOrONodeIDImpl.java 11600 2009-10-13 17:13:22Z johann_p $
*/
package gate.creole.ontology.impl;
import gate.creole.ontology.Literal;
import gate.creole.ontology.LiteralOrONodeID;
import gate.creole.ontology.ONodeID;
import gate.util.GateRuntimeException;
/**
* Wrap either a Literal or a ONodeID object.
* <p>
* TODO: should we implement comparable and equals/hashcode for this?
*
* @author Johann Petrak
*/
public class LiteralOrONodeIDImpl implements LiteralOrONodeID {
protected Object theObject;
protected boolean isLiteral;
public LiteralOrONodeIDImpl(Literal aLiteral) {
theObject = aLiteral;
isLiteral = true;
}
public LiteralOrONodeIDImpl(ONodeID aONodeID) {
theObject = aONodeID;
isLiteral = false;
}
public boolean isLiteral() {
return isLiteral;
}
public boolean isONodeID() {
return !isLiteral;
}
public ONodeID getONodeID() {
if(isLiteral) {
throw new GateRuntimeException(
"Cannot return an ONodeID, have a Literal: "+((Literal)theObject));
}
return (ONodeID)theObject;
}
public Literal getLiteral() {
if(!isLiteral) {
throw new GateRuntimeException(
"Cannot return a Literal, have an ONodeID: "+((ONodeID)theObject));
}
return (Literal)theObject;
}
@Override
public String toString() {
if(isLiteral) {
return ((Literal)theObject).toString();
} else {
return ((ONodeID)theObject).toString();
}
}
public String toTurtle() {
if(isLiteral) {
return ((Literal)theObject).toTurtle();
} else {
return ((ONodeID)theObject).toTurtle();
}
}
}