You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vk...@apache.org on 2021/06/25 18:37:59 UTC
[ignite-3] 05/06: IGNITE-14996 - Updated examples structure
This is an automated email from the ASF dual-hosted git repository.
vkulichenko pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 9230f61151786011f95dc9106d8b9044c0d41af2
Author: Valentin Kulichenko <va...@gmail.com>
AuthorDate: Thu Jun 24 20:25:23 2021 -0700
IGNITE-14996 - Updated examples structure
---
assembly/assembly.xml | 1 +
examples/README.md | 21 ++++
.../main/resources => config}/ignite-config.json | 2 +-
.../example/table/KeyValueBinaryViewExample.java | 21 +++-
.../apache/ignite/example/table/TableExample.java | 124 ++++++++++++---------
5 files changed, 110 insertions(+), 59 deletions(-)
diff --git a/assembly/assembly.xml b/assembly/assembly.xml
index a517b0f..4923473 100644
--- a/assembly/assembly.xml
+++ b/assembly/assembly.xml
@@ -64,6 +64,7 @@
<directory>examples</directory>
<outputDirectory>/examples</outputDirectory>
<includes>
+ <include>config/**</include>
<include>src/**</include>
</includes>
</fileSet>
diff --git a/examples/README.md b/examples/README.md
new file mode 100644
index 0000000..8e1b30b
--- /dev/null
+++ b/examples/README.md
@@ -0,0 +1,21 @@
+# Apache Ignite 3 Examples
+
+This project contains code examples for Apache Ignite 3.
+
+Examples are shipped as a separate Maven project, so to start running you simply need
+to import provided `pom.xml` file into your favourite IDE.
+
+The following examples are included:
+* `TableExample` - demonstrates the usage of the `org.apache.ignite.table.Table` API
+* `KeyValueBinaryViewExample` - demonstrates the usage of the `org.apache.ignite.table.KeyValueBinaryView` API
+
+To run an example, do the following:
+1. Import the examples project into you IDE.
+2. (optional) Run one or more standalone nodes using the CLI tool:
+ ```
+ ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-1
+ ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-2
+ ...
+ ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-n
+ ```
+3. Run the preferred example in the IDE.
diff --git a/examples/src/main/resources/ignite-config.json b/examples/config/ignite-config.json
similarity index 81%
rename from examples/src/main/resources/ignite-config.json
rename to examples/config/ignite-config.json
index 785d27c..d09db83 100644
--- a/examples/src/main/resources/ignite-config.json
+++ b/examples/config/ignite-config.json
@@ -1,7 +1,7 @@
{
"node": {
"metastorageNodes": [
- "node0"
+ "node-0", "node-1", "node-2"
]
},
"network": {
diff --git a/examples/src/main/java/org/apache/ignite/example/table/KeyValueBinaryViewExample.java b/examples/src/main/java/org/apache/ignite/example/table/KeyValueBinaryViewExample.java
index b8e7610..28f6888 100644
--- a/examples/src/main/java/org/apache/ignite/example/table/KeyValueBinaryViewExample.java
+++ b/examples/src/main/java/org/apache/ignite/example/table/KeyValueBinaryViewExample.java
@@ -25,11 +25,26 @@ import org.apache.ignite.table.KeyValueBinaryView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
+/**
+ * This example demonstrates the usage of the {@link KeyValueBinaryView} API.
+ * <p>
+ * To run the example, do the following:
+ * <ol>
+ * <li>Import the examples project into you IDE.</li>
+ * <li>
+ * (optional) Run one or more standalone nodes using the CLI tool:<br>
+ * {@code ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-1}<br>
+ * {@code ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-2}<br>
+ * {@code ...}<br>
+* {@code ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-n}<br>
+ * </li>
+ * <li>Run the example in the IDE.</li>
+ * </ol>
+ */
public class KeyValueBinaryViewExample {
public static void main(String[] args) throws Exception {
- String config = Files.readString(Path.of(ClassLoader.getSystemResource("ignite-config.json").toURI()));
-
- Ignite ignite = IgnitionManager.start("node0", config);
+ Ignite ignite = IgnitionManager.start("node-0",
+ Files.readString(Path.of("config/ignite-config.json")));
//---------------------------------------------------------------------------------
//
diff --git a/examples/src/main/java/org/apache/ignite/example/table/TableExample.java b/examples/src/main/java/org/apache/ignite/example/table/TableExample.java
index 222d772..e97c5fe 100644
--- a/examples/src/main/java/org/apache/ignite/example/table/TableExample.java
+++ b/examples/src/main/java/org/apache/ignite/example/table/TableExample.java
@@ -24,72 +24,86 @@ import org.apache.ignite.app.IgnitionManager;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
+/**
+ * This example demonstrates the usage of the {@link Table} API.
+ * <p>
+ * To run the example, do the following:
+ * <ol>
+ * <li>Import the examples project into you IDE.</li>
+ * <li>
+ * (optional) Run one or more standalone nodes using the CLI tool:<br>
+ * {@code ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-1}<br>
+ * {@code ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-2}<br>
+ * {@code ...}<br>
+* {@code ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json node-n}<br>
+ * </li>
+ * <li>Run the example in the IDE.</li>
+ * </ol>
+ */
public class TableExample {
public static void main(String[] args) throws Exception {
- String config = Files.readString(Path.of(ClassLoader.getSystemResource("ignite-config.json").toURI()));
-
- try (Ignite ignite = IgnitionManager.start("node0", config)) {
+ Ignite ignite = IgnitionManager.start("node-0",
+ Files.readString(Path.of("config/ignite-config.json")));
- //---------------------------------------------------------------------------------
- //
- // Creating a table. The API call below is the equivalent of the following DDL:
- //
- // CREATE TABLE accounts (
- // accountNumber INT PRIMARY KEY,
- // firstName VARCHAR,
- // lastName VARCHAR,
- // balance DOUBLE
- // )
- //
- //---------------------------------------------------------------------------------
+ //---------------------------------------------------------------------------------
+ //
+ // Creating a table. The API call below is the equivalent of the following DDL:
+ //
+ // CREATE TABLE accounts (
+ // accountNumber INT PRIMARY KEY,
+ // firstName VARCHAR,
+ // lastName VARCHAR,
+ // balance DOUBLE
+ // )
+ //
+ //---------------------------------------------------------------------------------
- Table accounts = ignite.tables().createTable("PUBLIC.accounts", tbl -> tbl
- .changeName("PUBLIC.accounts")
- .changeColumns(cols -> cols
- .create("0", c -> c.changeName("accountNumber").changeType(t -> t.changeType("int32")).changeNullable(false))
- .create("1", c -> c.changeName("firstName").changeType(t -> t.changeType("string")).changeNullable(true))
- .create("2", c -> c.changeName("lastName").changeType(t -> t.changeType("string")).changeNullable(true))
- .create("3", c -> c.changeName("balance").changeType(t -> t.changeType("double")).changeNullable(true))
- )
- .changeIndices(idxs -> idxs
- .create("PK", idx -> idx
- .changeName("PK")
- .changeType("PK")
- .changeColumns(cols -> cols.create("0", c -> c.changeName("accountNumber").changeAsc(true)))
- )
+ Table accounts = ignite.tables().createTable("PUBLIC.accounts", tbl -> tbl
+ .changeName("PUBLIC.accounts")
+ .changeColumns(cols -> cols
+ .create("0", c -> c.changeName("accountNumber").changeType(t -> t.changeType("int32")).changeNullable(false))
+ .create("1", c -> c.changeName("firstName").changeType(t -> t.changeType("string")).changeNullable(true))
+ .create("2", c -> c.changeName("lastName").changeType(t -> t.changeType("string")).changeNullable(true))
+ .create("3", c -> c.changeName("balance").changeType(t -> t.changeType("double")).changeNullable(true))
+ )
+ .changeIndices(idxs -> idxs
+ .create("PK", idx -> idx
+ .changeName("PK")
+ .changeType("PK")
+ .changeColumns(cols -> cols.create("0", c -> c.changeName("accountNumber").changeAsc(true)))
)
- );
+ )
+ );
- //---------------------------------------------------------------------------------
- //
- // Tuple API: insert operation.
- //
- //---------------------------------------------------------------------------------
+ //---------------------------------------------------------------------------------
+ //
+ // Tuple API: insert operation.
+ //
+ //---------------------------------------------------------------------------------
- Tuple newAccountTuple = accounts.tupleBuilder()
- .set("accountNumber", 123456)
- .set("firstName", "Val")
- .set("lastName", "Kulichenko")
- .set("balance", 100.00d)
- .build();
+ Tuple newAccountTuple = accounts.tupleBuilder()
+ .set("accountNumber", 123456)
+ .set("firstName", "Val")
+ .set("lastName", "Kulichenko")
+ .set("balance", 100.00d)
+ .build();
- accounts.insert(newAccountTuple);
+ accounts.insert(newAccountTuple);
- //---------------------------------------------------------------------------------
- //
- // Tuple API: get operation.
- //
- //---------------------------------------------------------------------------------
+ //---------------------------------------------------------------------------------
+ //
+ // Tuple API: get operation.
+ //
+ //---------------------------------------------------------------------------------
- Tuple accountNumberTuple = accounts.tupleBuilder().set("accountNumber", 123456).build();
+ Tuple accountNumberTuple = accounts.tupleBuilder().set("accountNumber", 123456).build();
- Tuple accountTuple = accounts.get(accountNumberTuple);
+ Tuple accountTuple = accounts.get(accountNumberTuple);
- System.out.println(
- "Retrieved using Tuple API\n" +
- " Account Number: " + accountTuple.intValue("accountNumber") + '\n' +
- " Owner: " + accountTuple.stringValue("firstName") + " " + accountTuple.stringValue("lastName") + '\n' +
- " Balance: $" + accountTuple.doubleValue("balance"));
- }
+ System.out.println(
+ "Retrieved using Tuple API\n" +
+ " Account Number: " + accountTuple.intValue("accountNumber") + '\n' +
+ " Owner: " + accountTuple.stringValue("firstName") + " " + accountTuple.stringValue("lastName") + '\n' +
+ " Balance: $" + accountTuple.doubleValue("balance"));
}
}