001: package org.ontoware.rdf2go.impl.jena24;
002:
003: import org.ontoware.rdf2go.exception.ModelRuntimeException;
004: import org.ontoware.rdf2go.model.Statement;
005: import org.ontoware.rdf2go.model.impl.AbstractStatement;
006: import org.ontoware.rdf2go.model.node.Resource;
007: import org.ontoware.rdf2go.model.node.URI;
008: import org.slf4j.Logger;
009: import org.slf4j.LoggerFactory;
010:
011: import com.hp.hpl.jena.graph.Node;
012: import com.hp.hpl.jena.graph.Triple;
013: import com.hp.hpl.jena.rdf.model.Model;
014:
015: public class StatementJena24Impl extends AbstractStatement implements
016: Statement {
017:
018: @SuppressWarnings("unused")
019: private static Logger log = LoggerFactory
020: .getLogger(StatementJena24Impl.class);
021:
022: private Node s, p, o;
023:
024: private org.ontoware.rdf2go.model.Model model;
025:
026: public StatementJena24Impl(org.ontoware.rdf2go.model.Model model,
027: Node s, Node p, Node o) {
028: this .model = model;
029: assert s != null;
030: assert p != null;
031: assert o != null;
032: this .s = s;
033: this .p = p;
034: this .o = o;
035: }
036:
037: public com.hp.hpl.jena.rdf.model.Statement toJenaStatement(
038: Model jenaModel) {
039: Triple t = new Triple(s, p, o);
040: return jenaModel.asStatement(t);
041: }
042:
043: public Resource getSubject() {
044: try {
045: return (Resource) TypeConversion.toRDF2Go(s);
046: } catch (ModelRuntimeException e) {
047: throw new ModelRuntimeException(e);
048: }
049: }
050:
051: public URI getPredicate() {
052: try {
053: return (URI) TypeConversion.toRDF2Go(p);
054: } catch (ModelRuntimeException e) {
055: throw new ModelRuntimeException(e);
056: }
057: }
058:
059: public org.ontoware.rdf2go.model.node.Node getObject() {
060: try {
061: return (org.ontoware.rdf2go.model.node.Node) TypeConversion
062: .toRDF2Go(o);
063: } catch (ModelRuntimeException e) {
064: throw new ModelRuntimeException(e);
065: }
066: }
067:
068: public String toString() {
069: return getSubject() + "--" + getPredicate() + "--"
070: + getObject();
071: }
072:
073: public org.ontoware.rdf2go.model.Model getModel() {
074: return this .model;
075: }
076:
077: @Override
078: public boolean equals(Object o) {
079:
080: if (o instanceof Statement) {
081: Statement stmt = (Statement) o;
082: boolean e = super .equals(stmt);
083: log
084: .debug("statements are equal? " + e
085: + " now the context");
086: if (e && stmt.getContext() != null
087: && this .getModel().getContextURI() != null)
088: return stmt.getContext().equals(
089: this .getModel().getContextURI());
090: else
091: return e;
092: }
093: return false;
094: }
095:
096: public int hashCode() {
097: return super .hashCode();
098: }
099:
100: public URI getContext() {
101: return this.model.getContextURI();
102: }
103:
104: }
|