/*
* This file is part of the HyperGraphDB source distribution. This is copyrighted
* software. For permitted uses, licensing options and redistribution, please see
* the LicensingInformation file at the root level of the distribution.
*
* Copyright (c) 2005-2010 Kobrix Software, Inc. All rights reserved.
*/
package org.hypergraphdb.query;
import org.hypergraphdb.HGHandle;
import org.hypergraphdb.HyperGraph;
import org.hypergraphdb.util.HGUtils;
import org.hypergraphdb.util.Ref;
/**
* <p>
* The <code>AtomValueCondition</code> represents a query condition on
* the atom value. The condition specifies a comparison operator and
* value to compare against. The possible comparison operators are
* the constants listed in the <code>ComparisonOperator</code> class.
* The value compared against must be of a recognizable <code>HGAtomType</code>.
* </p>
*
* @author Borislav Iordanov
*/
public class AtomValueCondition extends SimpleValueCondition
{
public AtomValueCondition()
{
}
public AtomValueCondition(Object value)
{
super(value);
}
public AtomValueCondition(Ref<Object> value, ComparisonOperator operator)
{
super(value, operator);
}
public AtomValueCondition(Object value, ComparisonOperator operator)
{
super(value, operator);
}
public boolean satisfies(HyperGraph hg, HGHandle handle)
{
Object atom = null;
atom = hg.get(handle);
if (atom == null)
return false;
else
return compareToValue(hg, atom);
}
public String toString()
{
StringBuffer result = new StringBuffer("valueIs(");
result.append(getOperator());
result.append(",");
result.append(String.valueOf(getValue()));
result.append(")");
return result.toString();
}
public int hashCode()
{
return HGUtils.hashThem(value, operator);
}
public boolean equals(Object x)
{
if (! (x instanceof AtomValueCondition))
return false;
else
{
AtomValueCondition c = (AtomValueCondition)x;
return HGUtils.eq(operator, c.operator) &&
HGUtils.eq(value, c.value);
}
}
}