package org.hypergraphdb.query; import org.hypergraphdb.HGHandle; import org.hypergraphdb.HGIndex; import org.hypergraphdb.HGPersistentHandle; import org.hypergraphdb.HGRandomAccessResult; import org.hypergraphdb.HyperGraph; import org.hypergraphdb.HGRandomAccessResult.GotoResult; import org.hypergraphdb.atom.HGSubgraph; public class SubgraphContainsCondition implements HGQueryCondition, HGAtomPredicate { private HGHandle atom; public SubgraphContainsCondition() { } public SubgraphContainsCondition(HGHandle atom) { this.atom = atom; } public boolean satisfies(HyperGraph graph, HGHandle handle) { HGIndex<HGPersistentHandle, HGPersistentHandle> idx = HGSubgraph.getReverseIndex(graph); HGRandomAccessResult<HGPersistentHandle> rs = idx.find(atom.getPersistent()); try { return rs.goTo(handle.getPersistent(), true) == GotoResult.found; } finally { rs.close(); } } public HGHandle getAtom() { return atom; } public void setAtom(HGHandle atom) { this.atom = atom; } }