aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap')
-rw-r--r--src/main/java/org/onap/music/spring/data/cassandra/CassandraConfig.java67
-rw-r--r--src/main/java/org/onap/music/spring/data/cassandra/MusicApplication.java55
-rw-r--r--src/main/java/org/onap/music/util/TestVotingApp.java145
3 files changed, 267 insertions, 0 deletions
diff --git a/src/main/java/org/onap/music/spring/data/cassandra/CassandraConfig.java b/src/main/java/org/onap/music/spring/data/cassandra/CassandraConfig.java
new file mode 100644
index 00000000..f35206db
--- /dev/null
+++ b/src/main/java/org/onap/music/spring/data/cassandra/CassandraConfig.java
@@ -0,0 +1,67 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2018 IBM.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END=============================================
+ * ====================================================================
+ */
+
+package org.onap.music.spring.data.cassandra;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.data.cassandra.config.AbstractCassandraConfiguration;
+import org.springframework.data.cassandra.config.SchemaAction;
+import org.springframework.data.cassandra.core.cql.keyspace.CreateKeyspaceSpecification;
+
+@Configuration
+public class CassandraConfig extends AbstractCassandraConfiguration {
+ @Autowired
+ private Environment env;
+
+ private static String KEYSPACE;
+
+ @Override
+ public SchemaAction getSchemaAction() {
+ return SchemaAction.CREATE_IF_NOT_EXISTS;
+ }
+
+ @Override
+ protected List<CreateKeyspaceSpecification> getKeyspaceCreations() {
+ String keyspace = env.getProperty("keyspace.name") + System.currentTimeMillis();
+ KEYSPACE=keyspace;
+ CreateKeyspaceSpecification specification = null;
+ specification = CreateKeyspaceSpecification.createKeyspace(KEYSPACE);
+ specification.ifNotExists(true);
+
+ return Arrays.asList(specification);
+ }
+
+ @Override
+ public String[] getEntityBasePackages() {
+ return new String[] { "org.onap.music" };
+ }
+
+ @Override
+ protected String getKeyspaceName() {
+ return KEYSPACE;
+ }
+}
diff --git a/src/main/java/org/onap/music/spring/data/cassandra/MusicApplication.java b/src/main/java/org/onap/music/spring/data/cassandra/MusicApplication.java
new file mode 100644
index 00000000..dabae9a5
--- /dev/null
+++ b/src/main/java/org/onap/music/spring/data/cassandra/MusicApplication.java
@@ -0,0 +1,55 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2018 IBM.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END=============================================
+ * ====================================================================
+ */
+
+package org.onap.music.spring.data.cassandra;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.ComponentScan;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@EnableSwagger2
+@SpringBootApplication
+@ComponentScan(basePackages = {"org.onap.music" })
+
+/**
+ *
+ */
+public class MusicApplication extends SpringBootServletInitializer {
+
+ /**
+ *
+ */
+ public static void main(String[] args) {
+ SpringApplication.run(MusicApplication.class, args);
+ }
+
+ /**
+ *
+ */
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+ return application.sources(MusicApplication.class);
+ }
+}
diff --git a/src/main/java/org/onap/music/util/TestVotingApp.java b/src/main/java/org/onap/music/util/TestVotingApp.java
new file mode 100644
index 00000000..e4a8272b
--- /dev/null
+++ b/src/main/java/org/onap/music/util/TestVotingApp.java
@@ -0,0 +1,145 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2018 IBM.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END=============================================
+ * ====================================================================
+ */
+
+package org.onap.music.util;
+
+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";
+ }
+
+ public 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 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 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");
+ }
+
+ public 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);
+ }
+
+ public 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);
+
+ 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") == 2);
+ }
+
+} \ No newline at end of file