package ${package};
import org.lilyproject.client.LilyClient;
import org.lilyproject.repository.api.*;
import org.lilyproject.tools.import_.cli.JsonImport;
import java.io.InputStream;
public class LilySample {
public static void main(String[] args) throws Exception {
new LilySample().run();
}
public void run() throws Exception {
//
// Instantiate Lily client
//
LilyClient lilyClient = new LilyClient(System.getProperty("zkConn", "localhost:2181"), 20000);
LRepository repository = lilyClient.getDefaultRepository();
LTable table = repository.getDefaultTable();
//
// Create a schema
//
// We do this using the import library: this is easier than writing
// out the schema construction code in Java, and automatically handles
// the case where the schema would already exist (on second run of this app).
//
System.out.println("Importing schema");
InputStream is = LilySample.class.getResourceAsStream("schema.json");
JsonImport.loadSchema(repository, is);
is.close();
System.out.println("Schema successfully imported");
//
// Create a record
//
System.out.println("Creating a record");
Record record = table.newRecord();
record.setId(repository.getIdGenerator().newRecordId());
record.setRecordType(q("Type1"));
record.setField(q("field1"), "value1");
// We use the createOrUpdate method as that one can automatically recover
// from connection errors (idempotent behavior, like PUT in HTTP).
table.createOrUpdate(record);
System.out.println("Record created: " + record.getId());
}
private static QName q(String name) {
return new QName("${package}", name);
}
}