Skip to content

giquieu/arangodb-java-driver

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This library is a Java driver for ArangoDB.

Support version: ArangoDB-2.2.x

Required

Basics

Maven

To add the driver to your project with maven, add the following code to your pom.xml:

<dependencies>
  <dependency>
    <groupId>com.arangodb</groupId>
    <artifactId>arangodb-java-driver</artifactId>
    <version>[2.2-SNAPSHOT,2.2]</version>
  </dependency>
	....
</dependencies>

If you want to test with a snapshot version (e.g. 2.2-SNAPSHOT), add the staging repository of oss.sonatype.org to your pom.xml:

<repositories>
  <repository>
    <id>arangodb-snapshots</id>
    <url>https://oss.sonatype.org/content/groups/staging</url>
  </repository>
</repositories>

Driver Setup

Setup with default configuration:

  // Initialize configure
  ArangoConfigure configure = new ArangoConfigure();
  configure.init();

  // Create Driver (this instance is thread-safe)
  ArangoDriver arangoDriver = new ArangoDriver(configure);
  

The driver is configured with some default values:

property-keydescriptiondefault value
hostArangoDB host127.0.0.1
portArangoDB port8529
maxPerConnectionMax http connection per host.20
maxTotalConnectionMax http connection per configure.20
userBasic Authentication User
passwordBasic Authentication Password
proxy.hostproxy host
proxy.portproxy port
connectionTimeoutsocket connect timeout(millisecond)-1
timeoutsocket read timeout(millisecond)-1
retryCounthttp retry count3
defaultDatabasedefault database
enableCURLLoggerlogging flag by curl format for debugfalse

To customize the configuration the parameters can be changed in the code...

  // Initialize configure
  ArangoConfigure configure = new ArangoConfigure();
  configure.setHost("192.168.182.50");
  configure.setPort(8888);
  configure.init();

  // Create Driver (this instance is thread-safe)
  ArangoDriver arangoDriver = new ArangoDriver(configure);
  

... or with a properties file (arangodb.properties)

  // Initialize configure
  ArangoConfigure configure = new ArangoConfigure();
  configure.loadProperties();
  configure.init();

  // Create Driver (this instance is thread-safe)
  ArangoDriver arangoDriver = new ArangoDriver(configure);
  

Example for arangodb.properties:

port=8888
host=192.168.182.50
user=root
password=
enableCURLLogger=true

Basic database operations

create database

  // create database 
  arangoDriver.createDatabase("myDatabase");
  // and set as default
  arangoDriver.setDefaultDatabase("myDatabase");
  

changing the database

This ArangoDB driver is thread-safe. Unfortunately the ArangoDriver#setDefaultDatabase() is not (yet). So its recommended to create a new driver instance, if you want to change the database.

  //Driver instance to database "_system" (default database)
  ArangoDriver driverSystem = new ArangoDriver(configure);
  //Driver instance to database "mydb2"
  ArangoDriver driverMyDB = new ArangoDriver(configure, "mydb2");
  

drop database

  // drop database 
  arangoDriver.deleteDatabase("myDatabase");
  

Basic collection operations

create collection

  // create collection
  CollectionEntity myArangoCollection = ArangoCollectionarangoDriver.createCollection("myCollection");
  

delete collection by name

  // delete database 
  arangoDriver.deleteCollection("myCollection");
  

delete collection by id

  // delete database 
  arangoDriver.deleteCollection(myArangoCollection.getId());
  

Basic document operations

For the next examples we use a small object:

public class MyObject {

    private String name;
    private int age;

    public MyObject(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    /*
    *  + getter and setter
    */
   

}  

create document

  // create document 
  MyObject myObject = new MyObject("Homer", 38);
  DocumentEntity<MyObject> myDocument = arangoDriver.createDocument("myCollection", myObject);
  

When creating a document, the attributes of the object will be stored as key-value pair E.g. in the previous example the object was stored as follows:

"name" : "Homer"
"age" : "38"

delete document

  // delete document 
  arangoDriver.deleteDocument(myDocument.getDocumentHandle());
  

AQL

Executing an AQL statement

E.g. get all Simpsons aged 3 or older in ascending order:

    arangoDriver.deleteDatabase("myDatabase");
    arangoDriver.createDatabase("myDatabase");
    arangoDriver.setDefaultDatabase("myDatabase");
    CollectionEntity myArangoCollection = arangoDriver.createCollection("myCollection");
    
    arangoDriver.createDocument("myCollection", new MyObject("Homer", 38));
    arangoDriver.createDocument("myCollection", new MyObject("Marge", 36));
    arangoDriver.createDocument("myCollection", new MyObject("Bart", 10));
    arangoDriver.createDocument("myCollection", new MyObject("Lisa", 8));
    arangoDriver.createDocument("myCollection", new MyObject("Maggie", 2));
    
    String query = "FOR t IN myCollection FILTER t.age >= @age SORT t.age RETURN t";
    Map<String, Object> bindVars = new MapBuilder().put("age", 3).get();
    CursorResultSet<MyObject> rs = arangoDriver.executeQueryWithResultSet(
      query, bindVars, MyObject.class, true, 20
    );
    
    for (MyObject obj: rs) {
      System.out.println(obj.getName());
    }
   
  

instead of using a for statement you can also use an iterator:

  while (rs.hasNext()) {
    MyObject obj = rs.next();
    System.out.println(obj.getName());
  }
  rs.close();

#User Management If you are using [authentication] (http://docs.arangodb.com/ConfigureArango/Authentication.html) you can manage users with the driver.

##add user

  //username, password, active, extras
  arangoDriver.createUser("myUser", "myPassword", true, null);

##list users

  List<UserEntity> users = arangoDriver.getUsers();
  for(UserEntity user : users) {
    System.out.println(user.getName())
  }

##DELETE user

  arangoDriver.createUser("myUser");

#Graphs This driver supports the new graph api.

Some of the basic graph operations are described in the following:

##add graph A graph consists of vertices and edges (stored in collections). Which collections are used within a graph is defined via edge definitions. A graph can contain more than one edge definition, at least one is needed.

  List<EdgeDefinitionEntity> edgeDefinitions = new ArrayList<EdgeDefinitionEntity>();
  EdgeDefinitionEntity edgeDefinition = new EdgeDefinitionEntity();
  // define the edgeCollection to store the edges
  edgeDefinition.setCollection("myEdgeCollection");
  // define a set of collections where an edge is going out...
  List<String> from = new ArrayList<String>();
  // and add one or more collections
  from.add("myCollection1");
  from.add("myCollection2");
  edgeDefinition.setFrom(from)
   
  // repeat this for the collections where an edge is going into  
  List<String> to = new ArrayList<String>();
  to.add("myCollection1");
  to.add("myCollection3");
  edgeDefinition.setTo(to);
  
  edgeDefinitions.add(edgeDefinition);
  
  // A graph can contain additional vertex collections, defined in the set of orphan collections
  List<String> orphanCollections = new ArrayList<String>(); 
  orphanCollections.add("myCollection4");
  orphanCollections.add("myCollection5");
  
  // now it's possible to create a graph (the last parameter is the waitForSync option)
  GraphEntity graph = arangoDriver.createGraph("myGraph", edgeDefinitions, orphanCollections, true);

##delete graph

A graph can be deleted by its name

  arangoDriver.deleteGraph("myGraph");

##add vertex

Vertices are stored in the vertex collections defined above.

  MyObject myObject1 = new MyObject("Homer", 38);
  MyObject myObject2 = new MyObject("Marge", 36);
  DocumentEntity<MyObject> vertexFrom = arangoDriver.graphCreateVertex(
      "myGraph",
      "collection1",
      myObject1,
      true); 
  
  DocumentEntity<MyObject> vertexTo = arangoDriver.graphCreateVertex(
      "myGraph",
      "collection3",
      myObject2,
      true); 

add edge

Now an edge can be created to set a relation between vertices

    EdgeEntity<?> edge = arangoDriver.graphCreateEdge(
      "myGraph",
      "myEdgeCollection",
      null,
      vertexFrom.getDocumentHandle(),
      vertexTo.getDocumentHandle(),
      null,
      null);

About

ArangoDB Java driver

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%