# ignite-45 - demo fixes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/5d489ff6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/5d489ff6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/5d489ff6 Branch: refs/heads/ignite-release-test-no-mod Commit: 5d489ff6aa57fbe1b984dc50f10134b1048f81ab Parents: a97444a Author: Dmitiry Setrakyan <dsetrak...@gridgain.com> Authored: Mon Mar 23 18:57:45 2015 -0700 Committer: Dmitiry Setrakyan <dsetrak...@gridgain.com> Committed: Mon Mar 23 18:57:45 2015 -0700 ---------------------------------------------------------------------- examples/schema-import/bin/db-init.sql | 14 ++-- .../java/org/apache/ignite/schema/Demo.java | 79 ++++++++++++++------ .../java/org/apache/ignite/schema/Person.java | 16 +++- 3 files changed, 78 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5d489ff6/examples/schema-import/bin/db-init.sql ---------------------------------------------------------------------- diff --git a/examples/schema-import/bin/db-init.sql b/examples/schema-import/bin/db-init.sql index 52fcb27..f450af7 100644 --- a/examples/schema-import/bin/db-init.sql +++ b/examples/schema-import/bin/db-init.sql @@ -1,10 +1,10 @@ -- Script of database initialization for Schema Import Demo. drop table PERSON; -create table PERSON(id integer not null, first_name varchar(50), last_name varchar(50), PRIMARY KEY(id)); +create table PERSON(id integer not null, first_name varchar(50), last_name varchar(50), salary double not null, PRIMARY KEY(id)); -insert into PERSON(id, first_name, last_name) values(1, 'Johannes', 'Kepler'); -insert into PERSON(id, first_name, last_name) values(2, 'Galileo', 'Galilei'); -insert into PERSON(id, first_name, last_name) values(3, 'Henry', 'More'); -insert into PERSON(id, first_name, last_name) values(4, 'Polish', 'Brethren'); -insert into PERSON(id, first_name, last_name) values(5, 'Robert', 'Boyle'); -insert into PERSON(id, first_name, last_name) values(6, 'Isaac', 'Newton'); +insert into PERSON(id, first_name, last_name) values(1, 'Johannes', 'Kepler', 1000); +insert into PERSON(id, first_name, last_name) values(2, 'Galileo', 'Galilei', 2000); +insert into PERSON(id, first_name, last_name) values(3, 'Henry', 'More', 3000); +insert into PERSON(id, first_name, last_name) values(4, 'Polish', 'Brethren', 4000); +insert into PERSON(id, first_name, last_name) values(5, 'Robert', 'Boyle', 5000); +insert into PERSON(id, first_name, last_name) values(6, 'Isaac', 'Newton', 6000); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5d489ff6/examples/schema-import/src/main/java/org/apache/ignite/schema/Demo.java ---------------------------------------------------------------------- diff --git a/examples/schema-import/src/main/java/org/apache/ignite/schema/Demo.java b/examples/schema-import/src/main/java/org/apache/ignite/schema/Demo.java index d5356f1..bd76166 100644 --- a/examples/schema-import/src/main/java/org/apache/ignite/schema/Demo.java +++ b/examples/schema-import/src/main/java/org/apache/ignite/schema/Demo.java @@ -20,6 +20,7 @@ package org.apache.ignite.schema; import org.apache.ignite.*; import org.apache.ignite.cache.store.jdbc.*; import org.apache.ignite.configuration.*; +import org.apache.ignite.transactions.*; import javax.cache.*; @@ -55,37 +56,71 @@ public class Demo { try (Ignite ignite = Ignition.start(cfg)) { IgniteCache<PersonKey, Person> cache = ignite.jcache(CACHE_NAME); - // Demo for load cache with custom SQL. - cache.loadCache(null, "org.apache.ignite.schema.PersonKey", - "select * from PERSON where ID <= 3"); + // Preload cache from database. + preload(cache); - for (Cache.Entry<PersonKey, Person> person : cache) - System.out.println(">>> Loaded Person: " + person); + // Read-through from database + // and store in cache. + readThrough(cache); + + // Perform transaction and + // write-through to database. + transaction(ignite, cache); } } - /** Demonstrates cache preload from database. */ - private static void preload() { - // TODO - } + /** + * Demonstrates cache preload from database. + */ + private static void preload(IgniteCache<PersonKey, Person> cache) { + System.out.println(); + System.out.println(">>> Loading entries from database."); - /** Demonstrates cache wright through to database. */ - private static void writeThrough() { - // TODO - } + // Demo for load cache with custom SQL. + cache.loadCache(null, "org.apache.ignite.schema.PersonKey", + "select * from PERSON where ID <= 3"); - /** Demonstrates cache read through from database. */ - private static void readThrough() { - // TODO + for (Cache.Entry<PersonKey, Person> person : cache) + System.out.println(">>> Loaded Person: " + person); } - /** Demonstrates cache remove from database. */ - private static void remove() { - // TODO + /** + * Demonstrates cache read through from database. + */ + private static void readThrough(IgniteCache<PersonKey, Person> cache) { + PersonKey key = new PersonKey(4); + + // Check that person with ID=4 is not in cache. + Person p = cache.localPeek(key); + + assert p == null; + + // Read-through form database. + p = cache.get(new PersonKey(4)); + + System.out.println("Loaded person from database: " + p); } - /** Demonstrates cache transaction from database. */ - private static void transaction() { - // TODO + /** + * Demonstrates cache transaction joining database transaction. + */ + private static void transaction(Ignite ignite, IgniteCache<PersonKey, Person> cache) { + PersonKey key = new PersonKey(5); + + try (Transaction tx = ignite.transactions().txStart()) { + // Read-through from database. + Person p = cache.get(key); + + double salary = p.getSalary(); + + // Raise salary by 20%. + p.setSalary(salary * 1.2); + + // Write-through to database + // and store in cache. + cache.put(key, p); + + tx.commit(); + } } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5d489ff6/examples/schema-import/src/main/java/org/apache/ignite/schema/Person.java ---------------------------------------------------------------------- diff --git a/examples/schema-import/src/main/java/org/apache/ignite/schema/Person.java b/examples/schema-import/src/main/java/org/apache/ignite/schema/Person.java index 6b2b312..78219b4 100644 --- a/examples/schema-import/src/main/java/org/apache/ignite/schema/Person.java +++ b/examples/schema-import/src/main/java/org/apache/ignite/schema/Person.java @@ -17,8 +17,6 @@ package org.apache.ignite.schema; -import java.io.*; - /** * Person stub. Will be generated by Ignite Schema Import Utility. */ @@ -29,5 +27,19 @@ public class Person { public Person() { throw new IllegalStateException("Person should be generated by Ignite Schema Import Utility"); } + + /** + * @return Salary. + */ + public double getSalary() { + throw new IllegalStateException("Person should be generated by Ignite Schema Import Utility"); + } + + /** + * @param salary Salary. + */ + public void setSalary(double salary) { + throw new IllegalStateException("Person should be generated by Ignite Schema Import Utility"); + } }