/* * Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2007. * * Licensed under the Aduna BSD-style license. */ package org.openrdf.http.protocol.transaction.operations; import info.aduna.lang.ObjectUtil; import org.openrdf.model.Resource; import org.openrdf.model.URI; import org.openrdf.model.Value; /** * A context operation with (optional) subject, predicate, object. * * @author Arjohn Kampman */ public abstract class StatementOperation extends ContextOperation { private Resource subject; private URI predicate; private Value object; protected StatementOperation(Resource... contexts) { super(contexts); } public Resource getSubject() { return subject; } public void setSubject(Resource subject) { this.subject = subject; } public URI getPredicate() { return predicate; } public void setPredicate(URI predicate) { this.predicate = predicate; } public Value getObject() { return object; } public void setObject(Value object) { this.object = object; } @Override public boolean equals(Object other) { if (other instanceof StatementOperation) { StatementOperation o = (StatementOperation)other; return ObjectUtil.nullEquals(getSubject(), o.getSubject()) && ObjectUtil.nullEquals(getPredicate(), o.getPredicate()) && ObjectUtil.nullEquals(getObject(), o.getObject()) && super.equals(other); } return false; } @Override public int hashCode() { int hashCode = ObjectUtil.nullHashCode(getSubject()); hashCode = 31 * hashCode + ObjectUtil.nullHashCode(getPredicate()); hashCode = 31 * hashCode + ObjectUtil.nullHashCode(getObject()); hashCode = 31 * hashCode + super.hashCode(); return hashCode; } }