Skip to content

Commit ea25cae

Browse files
committed
Many random changes
1 parent 16b13c0 commit ea25cae

File tree

102 files changed

+1053
-19093
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+1053
-19093
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
out
22
*.class
3+
target

.idea/workspace.xml

Lines changed: 619 additions & 182 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/com/blobcity/db/Db.java

Lines changed: 129 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,7 @@
1717
import com.blobcity.db.exceptions.InternalDbException;
1818
import com.blobcity.db.search.Query;
1919
import com.blobcity.db.search.StringUtil;
20-
import com.google.gson.Gson;
21-
import com.google.gson.JsonArray;
22-
import com.google.gson.JsonElement;
23-
import com.google.gson.JsonObject;
24-
import com.google.gson.JsonParser;
20+
import com.google.gson.*;
2521

2622
import java.lang.annotation.Annotation;
2723
import java.lang.reflect.Field;
@@ -45,6 +41,7 @@ public abstract class Db {
4541

4642
private String collection = null;
4743
private String ds = null;
44+
private String _id = null; //primary key value holder, in case the sub class does not have this property
4845

4946
public Db() {
5047
for (Annotation annotation : this.getClass().getAnnotations()) {
@@ -57,10 +54,6 @@ public Db() {
5754
}
5855
else{
5956
ds = blobCityEntity.ds();
60-
String dbName = Credentials.getInstance().getDb();
61-
if(dbName.equals("dummy")) {
62-
Credentials.getInstance().setDb(ds);
63-
}
6457
}
6558

6659
if (StringUtil.isEmpty(collection)) {
@@ -334,23 +327,136 @@ public static <T extends Db> Object execute(final Credentials credentials, final
334327
throw new DbOperationException(response.getErrorCode(), response.getErrorCause());
335328
}
336329

337-
public static void insertJsonData(final String collection, final JsonObject insertJson){
338-
insertJsonData(Credentials.getInstance(), collection, insertJson);
330+
public static void insertJson(final String collection, final JsonObject insertJson){
331+
insertJson(Credentials.getInstance(), collection, Arrays.asList(new JsonObject[]{insertJson}));
332+
}
333+
334+
public static void insertJson(final Credentials credentials, final String collection, final JsonObject insertJson){
335+
insertJson(credentials, collection, Arrays.asList(new JsonObject[]{insertJson}));
336+
}
337+
338+
public static void insertJson(final String collection, final List<JsonObject> jsonList) {
339+
insertJson(Credentials.getInstance(), collection, jsonList);
340+
}
341+
342+
public static void insertJson(final Credentials credentials, final String collection, final List<JsonObject> jsonList) {
343+
if(collection == null || collection.isEmpty()) {
344+
throw new InternalAdapterException("collection name must be specified");
345+
}
346+
347+
if(jsonList == null || jsonList.isEmpty()) {
348+
throw new InternalAdapterException("At-least one json required for a json insert operation");
349+
}
350+
351+
JsonObject payloadJsonObject = new JsonObject();
352+
JsonArray dataArray = new JsonArray();
353+
for(JsonObject element : jsonList) {
354+
dataArray.add(element);
355+
}
356+
payloadJsonObject.add(QueryConstants.DATA, dataArray);
357+
payloadJsonObject.addProperty(QueryConstants.TYPE, "json");
358+
359+
final DbQueryResponse response = postStaticRequest(credentials, QueryType.INSERT, collection, payloadJsonObject);
360+
reportIfError(response);
361+
}
362+
363+
public static void insertCsv(final String collection, final String csvString) {
364+
throw new UnsupportedOperationException("Not supported yet.");
365+
}
366+
367+
public static void insertCsv(final Credentials credentials, final String collection, final String csvString) {
368+
throw new UnsupportedOperationException("Not supported yet.");
369+
}
370+
371+
public static void insertCsv(final String collection, final List<String> csvList) {
372+
throw new UnsupportedOperationException("Not supported yet.");
373+
}
374+
375+
public static void insertCsv(final Credentials credentials, final String collection, final List<String> csvList) {
376+
throw new UnsupportedOperationException("Not supported yet.");
377+
}
378+
379+
public static void insertXml(final String collection, final String xmlString) {
380+
insertXml(Credentials.getInstance(), collection, Arrays.asList(new String[]{xmlString}));
381+
}
382+
383+
public static void insertXml(final Credentials credentials, final String collection, final String xmlString) {
384+
insertXml(credentials, collection, Arrays.asList(new String[]{xmlString}));
339385
}
340386

341-
public static void insertJsonData(final Credentials credentials, final String collection, final JsonObject insertJson){
387+
public static void insertXml(final String collection, final List<String> xmlList) {
388+
insertXml(Credentials.getInstance(), collection, xmlList);
389+
}
390+
391+
public static void insertXml(final Credentials credentials, final String collection, final List<String> xmlList) {
342392
if(collection == null || collection.isEmpty()) {
343393
throw new InternalAdapterException("collection name must be specified");
344394
}
345395

346-
if(insertJson == null) {
347-
throw new InternalAdapterException("json data to insert cannot be null");
396+
if(xmlList == null || xmlList.isEmpty()) {
397+
throw new InternalAdapterException("At-least one xml required for a xml insert operation");
398+
}
399+
400+
JsonObject payloadJsonObject = new JsonObject();
401+
JsonArray dataArray = new JsonArray();
402+
for(String element : xmlList) {
403+
dataArray.add(new JsonPrimitive(element));
348404
}
405+
payloadJsonObject.add(QueryConstants.DATA, dataArray);
406+
payloadJsonObject.addProperty(QueryConstants.TYPE, "xml");
349407

350-
final DbQueryResponse response = postStaticRequest(credentials, QueryType.INSERT, collection, insertJson);
408+
final DbQueryResponse response = postStaticRequest(credentials, QueryType.INSERT, collection, payloadJsonObject);
351409
reportIfError(response);
352410
}
353411

412+
public static void insertSql(final String collection, final String sqlString) {
413+
throw new UnsupportedOperationException("Not supported yet.");
414+
}
415+
416+
public static void insertSql(final Credentials credentials, final String collection, final String sqlString) {
417+
throw new UnsupportedOperationException("Not supported yet.");
418+
}
419+
420+
public static void insertSql(final String collection, final List<String> sqlList) {
421+
throw new UnsupportedOperationException("Not supported yet.");
422+
}
423+
424+
public static void insertSql(final Credentials credentials, final String collection, final List<String> sqlList) {
425+
throw new UnsupportedOperationException("Not supported yet.");
426+
}
427+
428+
public static void insertText(final String collection, final String text) {
429+
throw new UnsupportedOperationException("Not supported yet.");
430+
}
431+
432+
public static void insertText(final Credentials credentials, final String collection, final String text) {
433+
throw new UnsupportedOperationException("Not supported yet.");
434+
}
435+
436+
public static void insertText(final String collection, final List<String> text) {
437+
throw new UnsupportedOperationException("Not supported yet.");
438+
}
439+
440+
public static void insertText(final Credentials credentials, final String collection, final List<String> text) {
441+
throw new UnsupportedOperationException("Not supported yet.");
442+
}
443+
444+
public static void insert(final String collection, final String insertString) {
445+
throw new UnsupportedOperationException("Not supported yet.");
446+
}
447+
448+
public static void insert(final Credentials credentials, final String collection, final String insertString) {
449+
throw new UnsupportedOperationException("Not supported yet.");
450+
}
451+
452+
public static void insert(final String collection, final List<String> insertList) {
453+
throw new UnsupportedOperationException("Not supported yet.");
454+
}
455+
456+
public static void insert(final Credentials credentials, final List<String> insertList) {
457+
throw new UnsupportedOperationException("Not supported yet.");
458+
}
459+
354460
//TODO: Add support for inserting other data formats
355461

356462
/**
@@ -1193,7 +1299,12 @@ private DbQueryResponse postRequest(final Credentials credentials, QueryType que
11931299
break;
11941300
case INSERT:
11951301
case SAVE:
1196-
queryJson.add(QueryConstants.PAYLOAD, toJson());
1302+
JsonObject payloadJson = new JsonObject();
1303+
payloadJson.addProperty(QueryConstants.TYPE,"json");
1304+
JsonArray jsonArray = new JsonArray();
1305+
jsonArray.add(toJson());
1306+
payloadJson.add(QueryConstants.DATA, jsonArray);
1307+
queryJson.add(QueryConstants.PAYLOAD, payloadJson);
11971308
break;
11981309
default:
11991310
throw new InternalDbException("Attempting to executed unknown or unidentifed query");
@@ -1315,8 +1426,8 @@ public void save(final Credentials credentials) {
13151426
public boolean insert(final Credentials credentials) {
13161427
final DbQueryResponse response = postRequest(credentials, QueryType.INSERT);
13171428
if (response.isSuccessful()) {
1318-
final JsonElement payloadJson = response.getPayload();
1319-
fromJson(payloadJson.getAsJsonObject());
1429+
// final JsonElement payloadJson = response.getPayload();
1430+
// fromJson(payloadJson.getAsJsonObject());
13201431
return true;
13211432
}
13221433

src/main/java/com/blobcity/db/DbQueryResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*
1717
* @author Karun AB
1818
*/
19-
class DbQueryResponse {
19+
class DbQueryResponse {
2020

2121
// Ack code
2222
private final int ackCode;

src/main/java/com/blobcity/db/QueryConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class QueryConstants {
1717
public static final String PRIMARY_KEY = "pk";
1818
public static final String USER = "username";
1919
public static final String PASS = "password";
20+
public static final String DATA = "data";
21+
public static final String TYPE = "type";
2022

2123
/* Response data keys */
2224
public static final String PAYLOAD = "p";
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.blobcity.db.test.integration.data;
2+
3+
import com.blobcity.db.Db;
4+
import com.blobcity.db.annotations.Entity;
5+
import com.blobcity.db.config.Credentials;
6+
import com.blobcity.db.enums.CollectionType;
7+
import com.google.gson.JsonObject;
8+
import org.junit.*;
9+
10+
import java.util.Arrays;
11+
12+
/**
13+
* Created by sanketsarang on 18/11/16.
14+
*/
15+
public class EntityDataInsertIT {
16+
17+
@BeforeClass
18+
public static void setUpClass() {
19+
Credentials.init("localhost:10111","root","root","test");
20+
Assert.assertTrue("Cannot perform data insert tests as datastore creation failed", Db.createDs("test"));
21+
Assert.assertTrue("Cannot perform data insert tests as on-disk collection creation failed", Db.createCollection("disk", CollectionType.ON_DISK));
22+
Assert.assertTrue("Cannot perform data insert tests as in-memory collection creation failed", Db.createCollection("mem", CollectionType.IN_MEMORY));
23+
Assert.assertTrue("Cannot perform data insert tests as in-memory-non-durable collection creation failed", Db.createCollection("memnd", CollectionType.IN_MEMORY_NON_DURABLE));
24+
}
25+
26+
@AfterClass
27+
public static void tearDownClass() {
28+
Assert.assertTrue("Failed to drop datastore after test completion. Other tests may fail.", Db.dropDs("test"));
29+
Credentials.unInit();
30+
}
31+
32+
@Before
33+
public void setUp() {
34+
}
35+
36+
@After
37+
public void tearDown() {
38+
}
39+
40+
@Test
41+
public void insertEntityOnDisk() {
42+
System.out.println("IT: insertEntityOnDisk");
43+
44+
Assert.assertTrue("Cannot perform data insert tests as on-disk collection creation failed", Db.createCollection("User", CollectionType.ON_DISK));
45+
new User("name1","address1").insert();
46+
}
47+
48+
@Test
49+
public void insertJsonInMemory() {
50+
System.out.println("IT: insertJsonInMemory - yet to be implemented");
51+
}
52+
53+
@Test
54+
public void insertJsonInMemoryND() {
55+
System.out.println("IT: insertJsonInMemoryND - yet to be implemented");
56+
}
57+
}
58+
59+
@Entity(ds = "test", collection = "User")
60+
class User extends Db {
61+
private String name;
62+
private String address;
63+
64+
public User(final String name, final String address) {
65+
this.name = name;
66+
this.address = address;
67+
}
68+
69+
public String getName() {
70+
return name;
71+
}
72+
73+
public void setName(String name) {
74+
this.name = name;
75+
}
76+
77+
public String getAddress() {
78+
return address;
79+
}
80+
81+
public void setAddress(String address) {
82+
this.address = address;
83+
}
84+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.blobcity.db.test.integration.data;
2+
3+
import com.blobcity.db.Db;
4+
import com.blobcity.db.config.Credentials;
5+
import com.blobcity.db.enums.CollectionType;
6+
import com.google.gson.JsonObject;
7+
import org.junit.*;
8+
9+
import java.util.ArrayList;
10+
import java.util.Arrays;
11+
import java.util.List;
12+
13+
/**
14+
* Created by sanketsarang on 18/11/16.
15+
*/
16+
public class JSONDataInsertIT {
17+
18+
@BeforeClass
19+
public static void setUpClass() {
20+
Credentials.init("localhost:10111","root","root","test");
21+
Assert.assertTrue("Cannot perform data insert tests as datastore creation failed", Db.createDs("test"));
22+
Assert.assertTrue("Cannot perform data insert tests as on-disk collection creation failed", Db.createCollection("disk", CollectionType.ON_DISK));
23+
Assert.assertTrue("Cannot perform data insert tests as in-memory collection creation failed", Db.createCollection("mem", CollectionType.IN_MEMORY));
24+
Assert.assertTrue("Cannot perform data insert tests as in-memory-non-durable collection creation failed", Db.createCollection("memnd", CollectionType.IN_MEMORY_NON_DURABLE));
25+
}
26+
27+
@AfterClass
28+
public static void tearDownClass() {
29+
Assert.assertTrue("Failed to drop datastore after test completion. Other tests may fail.", Db.dropDs("test"));
30+
Credentials.unInit();
31+
}
32+
33+
@Before
34+
public void setUp() {
35+
}
36+
37+
@After
38+
public void tearDown() {
39+
}
40+
41+
@Test
42+
public void insertOnDisk() {
43+
System.out.println("IT: insertOnDisk");
44+
45+
/* Insert first record */
46+
JsonObject jsonObject1 = new JsonObject();
47+
jsonObject1.addProperty("name","name1");
48+
jsonObject1.addProperty("age",45);
49+
Db.insertJson("disk", jsonObject1);
50+
51+
/* Insert second record */
52+
JsonObject jsonObject2 = new JsonObject();
53+
jsonObject2.addProperty("name","name1");
54+
jsonObject2.addProperty("age",45);
55+
jsonObject2.addProperty("address","address 1");
56+
Db.insertJson("disk", jsonObject2);
57+
58+
/* Insert multiple records */
59+
Db.insertJson("disk", Arrays.asList(new JsonObject[]{jsonObject1, jsonObject2}));
60+
}
61+
62+
@Test
63+
public void insertJsonInMemory() {
64+
System.out.println("IT: insertJsonInMemory - yet to be implemented");
65+
}
66+
67+
@Test
68+
public void insertJsonInMemoryND() {
69+
System.out.println("IT: insertJsonInMemoryND - yet to be implemented");
70+
}
71+
}

0 commit comments

Comments
 (0)