forked from adityakishore/ojai-2-examples
-
Notifications
You must be signed in to change notification settings - Fork 8
/
OJAI_013_ReadYourOwnWrite.java
93 lines (72 loc) · 3.28 KB
/
OJAI_013_ReadYourOwnWrite.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/**
* Copyright (c) 2017 MapR, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mapr.ojai.examples;
import org.ojai.Document;
import org.ojai.DocumentStream;
import org.ojai.exceptions.QueryTimeoutException;
import org.ojai.store.Connection;
import org.ojai.store.DocumentStore;
import org.ojai.store.DriverManager;
import org.ojai.store.Query;
public class OJAI_013_ReadYourOwnWrite {
public static void main(String[] args) {
System.out.println("==== Start Application ===");
// Create an OJAI connection to MapR cluster
final Connection connectionNode1 = DriverManager.getConnection("ojai:mapr:");
// Get an instance of OJAI DocumentStore
final DocumentStore storeNode1 = connectionNode1.getStore("/demo_table");
// initiate tracking of commit-context
storeNode1.beginTrackingWrites();
// issue a set of mutations/insert/delete/etc
storeNode1.update("user0000", connectionNode1.newMutation().set("address.zipCode", 95110L));
storeNode1.insertOrReplace(connectionNode1.newDocument(
"{\"_id\": \"user0004\", \"firstName\": \"Joel\", \"lastName\": \"Smith\", \"age\": 56, \"address\": {\"zipCode\":{\"$numberLong\":95110}}}"));
final String commitContext = storeNode1.endTrackingWrites();
// Close this instance of OJAI DocumentStore
storeNode1.close();
// close the OJAI connection and release any resources held by the connection
connectionNode1.close();
/*
* Next section of the code can run on the same or on a different node,
* the `commitContext` obtained earlier needs to be propagated to that node.
*/
// Create an OJAI connection to MapR cluster
final Connection connectionNode2 = DriverManager.getConnection("ojai:mapr:");
// Get an instance of OJAI DocumentStore
final DocumentStore storeNode2 = connectionNode2.getStore("/demo_table");
// Build an OJAI query and set its commit context with timeout of 2 seconds
final Query query = connectionNode2.newQuery()
.select("_id", "firstName", "lastName", "address.zipCode")
.where("{\"$gt\": {\"address.zipCode\": 95110}}")
.waitForTrackedWrites(commitContext)
.build();
try {
// fetch all OJAI Documents from this store
final DocumentStream stream = storeNode2.findQuery(query);
for (final Document userDocument : stream) {
// Print the OJAI Document
System.out.println(userDocument.asJsonString());
}
} catch (QueryTimeoutException e) {
System.err.println("Timeout occurred while waiting for Query results");
}
// Close this instance of OJAI DocumentStore
storeNode2.close();
// close the OJAI connection and release any resources held by the connection
connectionNode2.close();
System.out.println("==== End Application ===");
}
}