From 46350c084766789ea59e83f1917c57c81d653048 Mon Sep 17 00:00:00 2001 From: "Tschaen, Brendan" Date: Tue, 16 Oct 2018 20:22:35 -0400 Subject: Include Cassandra locking Change-Id: I085acf8336d5f27782ee12768846a5befd3ee60d Issue-ID: MUSIC-148 Signed-off-by: Tschaen, Brendan --- example/VotingAppJar/VotingAppJar/pom.xml | 30 ++++++ .../org/onap/music/VotingAppJar/VotingAppJar.java | 115 +++++++++++++++++++++ .../java/org/onap/music/VotingAppJar/AppTest.java | 38 +++++++ 3 files changed, 183 insertions(+) create mode 100644 example/VotingAppJar/VotingAppJar/pom.xml create mode 100644 example/VotingAppJar/VotingAppJar/src/main/java/org/onap/music/VotingAppJar/VotingAppJar.java create mode 100644 example/VotingAppJar/VotingAppJar/src/test/java/org/onap/music/VotingAppJar/AppTest.java (limited to 'example/VotingAppJar') diff --git a/example/VotingAppJar/VotingAppJar/pom.xml b/example/VotingAppJar/VotingAppJar/pom.xml new file mode 100644 index 00000000..69b310d5 --- /dev/null +++ b/example/VotingAppJar/VotingAppJar/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + org.onap.music + VotingAppJar + 0.0.1-SNAPSHOT + jar + + VotingAppJar + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + org.onap.music + MUSIC + 3.0.2 + + + diff --git a/example/VotingAppJar/VotingAppJar/src/main/java/org/onap/music/VotingAppJar/VotingAppJar.java b/example/VotingAppJar/VotingAppJar/src/main/java/org/onap/music/VotingAppJar/VotingAppJar.java new file mode 100644 index 00000000..ad2661ec --- /dev/null +++ b/example/VotingAppJar/VotingAppJar/src/main/java/org/onap/music/VotingAppJar/VotingAppJar.java @@ -0,0 +1,115 @@ +package org.onap.music.VotingAppJar; + +import java.util.HashMap; +import java.util.Map; + +import org.onap.music.datastore.PreparedQueryObject; +import org.onap.music.exceptions.MusicLockingException; +import org.onap.music.exceptions.MusicQueryException; +import org.onap.music.exceptions.MusicServiceException; +import org.onap.music.main.MusicCore; + +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.Row; + +/** + * + */ +public class VotingAppJar +{ + String keyspaceName; + String tableName; + + public VotingAppJar() throws MusicServiceException { + keyspaceName = "VotingAppForMusic"+System.currentTimeMillis(); + tableName = "votecount"; + + createVotingKeyspace(); + System.out.println("Created keyspaces"); + createVotingTable(); + System.out.println("Created tables"); + + createEntryForCandidate("Popeye"); + createEntryForCandidate("Judy"); + createEntryForCandidate("Flash"); + createEntryForCandidate("Mickey"); + System.out.println("Created candidates"); + } + + private void createVotingKeyspace() throws MusicServiceException { + + Map replicationInfo = new HashMap(); + replicationInfo.put("'class'", "'SimpleStrategy'"); + replicationInfo.put("'replication_factor'", 1); + + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString( + "CREATE KEYSPACE " + keyspaceName + " WITH REPLICATION = " + replicationInfo.toString().replaceAll("=", ":")); + + try { + MusicCore.nonKeyRelatedPut(queryObject, "eventual"); + } catch (MusicServiceException e) { + if (e.getMessage().equals("Keyspace votingappformusic already exists")) { + // ignore + } else { + throw(e); + } + } + } + + private void createVotingTable() throws MusicServiceException { + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString( + "CREATE TABLE " + keyspaceName + "." + tableName + " (name text PRIMARY KEY, count varint);"); + + try { + MusicCore.createTable(keyspaceName, tableName, queryObject, "eventual"); + } catch (MusicServiceException e) { + if (e.getMessage().equals("Table votingappformusic.votevount already exists")) { + //ignore + } else { + throw(e); + } + } + } + + private void createEntryForCandidate(String candidateName) throws MusicServiceException { + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString( + "INSERT INTO " + keyspaceName + "." + tableName + " (name, count) " + + "VALUES ('"+candidateName+"', 0);"); + + MusicCore.nonKeyRelatedPut(queryObject, "eventual"); + } + + public void vote() throws MusicLockingException, MusicQueryException, MusicServiceException { + updateVoteCount("Popeye",5); + updateVoteCount("Judy",7); + updateVoteCount("Mickey",8); + updateVoteCount("Flash",2); + } + + private void updateVoteCount(String candidateName, int numVotes) throws MusicLockingException, MusicQueryException, MusicServiceException { + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString( + "INSERT INTO " + keyspaceName + "." + tableName + " (name, count) " + + "VALUES ('"+candidateName+"', "+numVotes+");"); + MusicCore.atomicPut(keyspaceName, tableName, candidateName, queryObject, null); + } + + private void readAllVotes() throws MusicServiceException { + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString("SELECT * FROM " + keyspaceName + "." + tableName); + ResultSet rs = MusicCore.get(queryObject); + for(Row candidate : rs.all()) { + System.out.println(candidate.getString("name") + " - " + candidate.getVarint("count")); + } + } + + public static void main( String[] args ) throws Exception { + VotingAppJar vHandle = new VotingAppJar(); + vHandle.vote(); + vHandle.readAllVotes(); + } + +} \ No newline at end of file diff --git a/example/VotingAppJar/VotingAppJar/src/test/java/org/onap/music/VotingAppJar/AppTest.java b/example/VotingAppJar/VotingAppJar/src/test/java/org/onap/music/VotingAppJar/AppTest.java new file mode 100644 index 00000000..536655c2 --- /dev/null +++ b/example/VotingAppJar/VotingAppJar/src/test/java/org/onap/music/VotingAppJar/AppTest.java @@ -0,0 +1,38 @@ +package org.onap.music.VotingAppJar; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} -- cgit 1.2.3-korg