aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/music/main/VotingAppJar.java
blob: 68c6923cde2b68a982f8cb5235e08cc3c07a943f (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
116
117
package org.onap.music.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.service.MusicCoreService;
import org.onap.music.service.impl.MusicCassaCore;

import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;

/**
 *
 */
public class VotingAppJar 
{
	String keyspaceName;
	String tableName;
	private static MusicCoreService musicCore = MusicCassaCore.getInstance();
	
	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();
    }

}