aboutsummaryrefslogtreecommitdiffstats
path: root/example/VotingApp/src/main/java/main/VotingAppJar.java
blob: f73e9059dd34327dcf1cb6408503796def967aab (plain)
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package main;

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";
              tableName = "votevount";
              
              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();
    }
 
}