/*******************************************************************************
* Copyright (c) 2009, 2010 Fraunhofer IWU and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Fraunhofer IWU - initial API and implementation
*******************************************************************************/
package net.enilink.komma.internal.rdf4j;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Resource;
import net.enilink.komma.core.IReference;
import net.enilink.komma.core.IReferenceable;
import net.enilink.komma.core.URI;
import net.enilink.komma.core.URIs;
public class RDF4JReference implements IReference {
private Resource resource;
private URI uri;
public RDF4JReference(Resource resource) {
this.resource = resource;
if (resource instanceof IRI) {
this.uri = URIs.createURI(((IRI) resource).stringValue());
}
}
@Override
public boolean equals(Object obj) {
if (uri != null) {
return uri.equals(obj);
}
if (obj instanceof IReferenceable) {
obj = ((IReferenceable) obj).getReference();
}
return obj instanceof RDF4JReference
&& resource.equals(((RDF4JReference) obj).resource);
}
public Resource getRDF4JResource() {
return resource;
}
@Override
public URI getURI() {
return uri;
}
@Override
public int hashCode() {
if (uri != null) {
return uri.hashCode();
}
return resource.hashCode();
}
@Override
public String toString() {
return resource.toString();
}
}