Skip to content

aftersunday/gcd-json-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GCD Json Java

GCD Json Java is a Java data access API designed for the Google App Engine datastore (https://cloud.google.com/datastore/docs/) through JSON API reference (https://cloud.google.com/datastore/docs/apis/v1beta2/). In this version, you can do basic actions like : commit, query and lookup.

To use library :

  • You need an appengine application (https://console.developers.google.com/project) with Google Cloud Datastore API status is On.
  • Some information to config. Choose your created project > APIs & auth (left menu) > Credentials > Create New Client ID > Chooose Service account > Create Client ID.
    • projectName : is your project id with "s~" before, example your project id : "your-project-id" -> projectName = "s~your-project-id".
    • iss : is Email address.
    • p12 key file : click Generate new P12 key, download, keyLocation variable is path to your p12 Key file.

Sample code :

  • Config
	String projectName = "s~your-project-id";
	String iss = "xxxx20893014-d1kh9putd2n3hbqjsjlsbes1i8spxxx@developer.gserviceaccount.com";
	String keyLocation = "your-project-id-xxxxx.p12";
	GCDConfig config = new GCDConfig(projectName, iss, keyLocation);
	GCDService ds = GCDServiceFactory.getInstance(config);
  • Registry your entry
    • Mark annotation @Entity for your entry.
    • Mark annotation @Id for entry key.
    • Mark annotation @Index for index field.
	import cloud.google.datastore.annotation.Annotation.Entity;
	import cloud.google.datastore.annotation.Annotation.Id;
	import cloud.google.datastore.annotation.Annotation.Index;

	@Entity
	public class Foo {

		@Id
		private String id = "";

		private String name = "";

		@Index
		private String category = "";

		@Index
		private Date doc = Calendar.getInstance().getTime();

		@Index
		private int status = 1;

	}
  • Commit
	// Insert single entry
	String projectName = "s~your-project-id";
	String iss = "xxxx20893014-d1kh9putd2n3hbqjsjlsbes1i8spxxx@developer.gserviceaccount.com";
	String keyLocation = "your-project-id-xxxxx.p12";
	GCDConfig config = new GCDConfig(projectName, iss, keyLocation);
	GCDService ds = GCDServiceFactory.getInstance(config);

	Foo f = new Foo();
	f.setId("entry-01");
	f.setName("Entry 01");
	List<Key<Foo>> listKey = ds.commit(Foo.class).entities(f).insert();	
	// Insert multi entry
	Foo f1 = new Foo();
	f1.setId("entry-01");
	f1.setName("Entry 01");

	Foo f2 = new Foo();
	f2.setId("entry-02");
	f2.setName("Entry 02");	

	List<Key<Foo>> listKey = ds.commit(Foo.class).entities(f1, f2).insert();
	// Insert list entry
	Foo f1 = new Foo();
	f1.setId("entry-01");
	f1.setName("Entry 01");

	Foo f2 = new Foo();
	f2.setId("entry-02");
	f2.setName("Entry 02");	

	List<Foo> list = new ArrayList<Foo>();
	list.add(f1);
	list.add(f2);

	List<Key<Foo>> listKey = ds.commit(Foo.class).entities(list).insert();
	// Update single entry
	Foo f = new Foo();
	f.setId("entry-01");
	f.setName("Entry 01");
	List<Key<Foo>> listKey = ds.commit(Foo.class).entities(f).update();	
	// Delete single entry
	Foo f = new Foo();
	f.setId("entry-01");
	f.setName("Entry 01");
	boolean success = ds.commit(Foo.class).entities(f).delete();	
  • Lookup
	// Lookup single entry
	String id = "entry-01";
	Foo lookupFoo = ds.lookup(Foo.class).id(f.getId()).get();	
	// Lookup multi entry
	String id1 = "entry-01";
	String id2 = "entry-01";
	List<Foo> listResult = ds.lookup(Foo.class).ids(id1, id2).list();	
	// Lookup list entry
	String id1 = "entry-01";
	String id2 = "entry-01";
	List<String> listId = new ArrayList<String>();
	listId.add(id1);
	listId.add(id2);
	List<Foo> listResult = ds.lookup(Foo.class).ids(listId).list();
  • Query
	// Query with limit
	List<Foo> list = ds.query(Foo.class).limit(10).list();	
	// Query with offset
	List<Foo> list = ds.query(Foo.class).offset(10).list();	
	// Query with order : ASCENDING, DESCENDING
	List<Foo> listOrderByDocASC = ds.query(Foo.class).order("doc", OrderDirection.ASCENDING).list();
	List<Foo> listOrderByDocDESC = ds.query(Foo.class).order("doc", OrderDirection.DESCENDING).list();
	// Query with filter : EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL
	List<Foo> listFilterByStatus = ds.query(Foo.class).filter("status", 1, FilterOperator.EQUAL).list();
	List<Foo> list = ds.query(Foo.class).filter("status", 1, FilterOperator.GREATER_THAN_OR_EQUAL).filter("status", 10, FilterOperator.LESS_THAN_OR_EQUAL).list();
	// Composite query
	List<Foo> list = ds.query(Foo.class).filter("status", 1, FilterOperator.GREATER_THAN_OR_EQUAL).limit(10).offset(10).order("doc", OrderDirection.ASCENDING).list();
	List<Foo> list = ds.gqlQuery(Foo.class).queryString("SELECT * FROM Foo").list();

About

Google Cloud Datastore Json API Java

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages