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
116
|
package org.onap.music.unittests;
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 TestVotingApp
{
String keyspaceName;
String tableName;
public TestVotingApp() throws MusicServiceException {
keyspaceName = "VotingAppForMusic"+System.currentTimeMillis();
tableName = "votecount";
}
private void initialize() throws MusicServiceException {
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) {
throw(e);
}
}
private void createVotingTable() throws MusicServiceException {
PreparedQueryObject queryObject = new PreparedQueryObject();
queryObject.appendQueryString(
"CREATE TABLE " + keyspaceName + "." + tableName + " (name text PRIMARY KEY, count int);");
try {
MusicCore.createTable(keyspaceName, tableName, queryObject, "eventual");
} catch (MusicServiceException e) {
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");
}
private void updateVoteCount(String candidateName, int numVotes) throws MusicLockingException, MusicQueryException, MusicServiceException {
PreparedQueryObject queryObject = new PreparedQueryObject();
queryObject.appendQueryString(
"UPDATE " + keyspaceName + "." + tableName + " SET count="+numVotes + " where name='"+candidateName+"';");
MusicCore.atomicPut(keyspaceName, tableName, candidateName, queryObject, null);
}
private HashMap<String, Integer> readAllVotes() throws MusicServiceException {
PreparedQueryObject queryObject = new PreparedQueryObject();
queryObject.appendQueryString("SELECT * FROM " + keyspaceName + "." + tableName);
ResultSet rs = MusicCore.get(queryObject);
HashMap<String, Integer> voteCount = new HashMap<String, Integer>();
for(Row candidate : rs.all()) {
voteCount.put(candidate.getString("name"), candidate.getInt("count"));
}
return voteCount;
}
public static void main( String[] args ) throws Exception {
TestVotingApp tva = new TestVotingApp();
tva.initialize();
tva.updateVoteCount("Popeye",5);
tva.updateVoteCount("Judy",9);
tva.updateVoteCount("Mickey",8);
tva.updateVoteCount("Flash",1);
tva.updateVoteCount("Flash",2);
tva.updateVoteCount("Flash",3);
HashMap<String, Integer> voteCount = tva.readAllVotes();
System.out.println(voteCount);
assert(voteCount.get("Popeye") == 5);
assert(voteCount.get("Judy") == 9);
assert(voteCount.get("Mickey") == 8);
assert(voteCount.get("Flash") == 3);
}
}
|