diff options
author | Tschaen, Brendan <ctschaen@att.com> | 2018-10-16 20:22:35 -0400 |
---|---|---|
committer | Tschaen, Brendan <ctschaen@att.com> | 2018-10-16 20:27:37 -0400 |
commit | 46350c084766789ea59e83f1917c57c81d653048 (patch) | |
tree | 3463279fcee9c26d190d854324bbd7f86422fe2e /example/VotingAppJar | |
parent | 287bdcbb5482f94df091c3b7b766fed0007efa2e (diff) |
Include Cassandra locking
Change-Id: I085acf8336d5f27782ee12768846a5befd3ee60d
Issue-ID: MUSIC-148
Signed-off-by: Tschaen, Brendan <ctschaen@att.com>
Diffstat (limited to 'example/VotingAppJar')
3 files changed, 183 insertions, 0 deletions
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 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.onap.music</groupId> + <artifactId>VotingAppJar</artifactId> + <version>0.0.1-SNAPSHOT</version> + <packaging>jar</packaging> + + <name>VotingAppJar</name> + <url>http://maven.apache.org</url> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.music</groupId> + <artifactId>MUSIC</artifactId> + <version>3.0.2</version> + </dependency> + </dependencies> +</project> 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<String,Object> replicationInfo = new HashMap<String, Object>(); + 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 ); + } +} |