--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="jejdb-sample-one" default="run">
+
+ <property file="build.properties"/>
+
+ <target name="init">
+ <available file="${jejdb.dir}" property="jejdb.target.available"/>
+ <fail message="Please build JEJDB library first" unless="jejdb.target.available"/>
+
+ <path id="lib.jejdb.classpath">
+ <fileset id="lib.jejdb.fileset" dir="${jejdb.dir}">
+ <include name="jejdb-*.jar"/>
+ </fileset>
+ </path>
+ </target>
+
+ <target name="build" depends="init" description="Build JEJDB sample">
+ <mkdir dir="${build.dir}/classes"/>
+ <javac destdir="${build.dir}/classes"
+ target="${javac.target}"
+ source="${javac.source}"
+ debug="${javac.debug}"
+ optimize="${javac.optimize}"
+ encoding="${javac.encoding}"
+ includeantruntime="false">
+ <src path="${source.dir}"/>
+ <classpath>
+ <path refid="lib.jejdb.classpath"/>
+ </classpath>
+ </javac>
+ <path id="jejdb.sample-one.classpath" location="${build.dir}/classes"/>
+
+ <manifestclasspath property="jar.lib.jejdb.classpath" jarfile="${basedir}/jejdb-sample1.jar">
+ <classpath>
+ <path refid="lib.jejdb.classpath"/>
+ </classpath>
+ </manifestclasspath>
+
+ <jar destfile="${basedir}/jejdb-sample1.jar" basedir="${build.dir}/classes">
+ <manifest>
+ <attribute name="Main-Class" value="org.ejdb.sample1.Main"/>
+ <attribute name="Class-Path" value="${jar.lib.jejdb.classpath}"/>
+ </manifest>
+ </jar>
+
+ <echo message="Use 'java -jar jejdb-sample1.jar' to run sample"/>
+ <echo message="Ensure that LD_LIBRARY_PATH environment variable contains path to 'libjejdb'"/>
+ </target>
+
+ <target name="run" depends="build" description="Build JEJDB sample and run it">
+ <java jar="${basedir}/jejdb-sample1.jar" fork="true" dir="${build.dir}">
+ <env key="LD_LIBRARY_PATH" path="${jejdb.dir}/.."/>
+ </java>
+ </target>
+
+ <target name="clean">
+ <delete dir="${build.dir}"/>
+ </target>
+</project>
\ No newline at end of file
--- /dev/null
+package org.ejdb.sample1;
+
+import org.ejdb.bson.BSONObject;
+import org.ejdb.driver.EJDB;
+import org.ejdb.driver.EJDBCollection;
+import org.ejdb.driver.EJDBQueryBuilder;
+import org.ejdb.driver.EJDBResultSet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * @author Tyutyunkov Vyacheslav (tve@softmotions.com)
+ * @version $Id$
+ */
+public class Main {
+
+ public static void main(String[] args) {
+ EJDB ejdb = new EJDB();
+
+ try {
+ // Used modes:
+ // - read
+ // - write
+ // - create db if not exists
+ // - truncate existing db
+ ejdb.open("zoo", EJDB.JBOREADER | EJDB.JBOWRITER | EJDB.JBOCREAT | EJDB.JBOTRUNC);
+
+ BSONObject parrot1 = new BSONObject("name", "Grenny")
+ .append("type", "African Grey")
+ .append("male", true)
+ .append("age", 1)
+ .append("birthhdate", new Date())
+ .append("likes", new String[]{"green color", "night", "toys"})
+ .append("extra1", null);
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(2013, 1, 1, 0, 0, 1);
+
+ BSONObject parrot2 = new BSONObject();
+ parrot2.put("name", "Bounty");
+ parrot2.put("type", "Cockatoo");
+ parrot2.put("male", false);
+ parrot2.put("age", 15);
+ parrot2.put("birthdate", calendar.getTime());
+ parrot2.put("likes", new String[]{"sugar cane"});
+ parrot2.put("extra1", null);
+
+ System.out.println("parrot1 =\n\t\t" + parrot1);
+ System.out.println("parrot2 =\n\t\t" + parrot2);
+
+ EJDBCollection parrots = ejdb.getCollection("parrots");
+
+ // saving
+ parrots.save(parrot1);
+ parrots.save(parrot2);
+
+ EJDBQueryBuilder qb;
+ EJDBResultSet rs;
+
+ // Below two equivalent queries:
+ // Q1
+ qb = new EJDBQueryBuilder();
+ qb.field("likes", "toys")
+ .orderBy().asc("name").desc("age");
+
+ rs = parrots.createQuery(qb).find();
+ System.out.println();
+ System.out.println("Results (Q1): " + rs.length());
+ for (BSONObject r : rs) {
+ System.out.println("\t" + r);
+ }
+ rs.close();
+
+ // Q2
+ qb = new EJDBQueryBuilder();
+ qb.field("likes").eq("toys")
+ .orderBy().add("name", true).add("age", false);
+
+ rs = parrots.createQuery(qb).find();
+ System.out.println();
+ System.out.println("Results (Q2): " + rs.length());
+ for (BSONObject r : rs) {
+ System.out.println("\t" + r);
+ }
+
+ // Second way to iterate
+ System.out.println();
+ System.out.println("Results (Q2): " + rs.length());
+ for (int i = 0; i < rs.length(); ++i) {
+ System.out.println("\t" + i + " => " + rs.get(i));
+ }
+
+ rs.close();
+ } finally {
+ if (ejdb.isOpen()) {
+ ejdb.close();
+ }
+ }
+ }
+}