package org.cloudgraph.examples.cml.molecule;
import org.cloudgraph.examples.cml.Atom;
import org.cloudgraph.examples.cml.AtomArray;
import org.cloudgraph.examples.cml.Molecule;
import org.cloudgraph.examples.cml.query.QAtom;
import org.cloudgraph.examples.cml.query.QMolecule;
import org.plasma.sdo.access.client.HBasePojoDataAccessClient;
import org.plasma.sdo.helper.PlasmaDataFactory;
import commonj.sdo.DataGraph;
import commonj.sdo.Type;
import commonj.sdo.helper.TypeHelper;
public class CreateMoleculeSample {
public Molecule createMolecule() {
DataGraph dataGraph = PlasmaDataFactory.INSTANCE.createDataGraph();
dataGraph.getChangeSummary().beginLogging();
Type rootType = TypeHelper.INSTANCE.getType(Molecule.class);
Molecule molecule = (Molecule)dataGraph.createRootObject(rootType);
molecule.setTitle("Caffeine Molecule");
molecule.setId("mol_caffeine");
molecule.setFormula("C8 H10 N4 O2");
AtomArray atoms = molecule.createAtomArray();
Atom atom = atoms.createAtom();
atom.setId("caffeine_karne_a_1");
atom.setX3(-2.8709); atom.setY3(-1.0499); atom.setZ3(0.1718);
atom.setElementType(ElementType.CARBON.name());
HBasePojoDataAccessClient client = new HBasePojoDataAccessClient();
client.commit(dataGraph, "username");
return molecule;
}
public Molecule findMolecule() {
QMolecule molecule = QMolecule.newQuery();
QAtom atom = QAtom.newQuery();
molecule.select(molecule.formula())
.select(molecule.atomArray() // slice by carbon atoms
.atom(atom.elementType().eq("C")).wildcard())
.select(molecule.bondArray().bond().wildcard());
molecule.where(molecule.id().like("*caffeine*")
.and(molecule.formula().eq("C8 H10 N4 O2")));
DataGraph[] result =
(new HBasePojoDataAccessClient()).find(molecule);
return (Molecule)result[0].getRootObject();
}
}