--- /dev/null
+package combio.cassandra;
+
+import java.util.Arrays;
+
+import me.prettyprint.cassandra.serializers.LongSerializer;
+import me.prettyprint.cassandra.serializers.StringSerializer;
+import me.prettyprint.cassandra.service.ThriftKsDef;
+import me.prettyprint.hector.api.Cluster;
+import me.prettyprint.hector.api.Keyspace;
+import me.prettyprint.hector.api.beans.ColumnSlice;
+import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
+import me.prettyprint.hector.api.ddl.ComparatorType;
+import me.prettyprint.hector.api.ddl.KeyspaceDefinition;
+import me.prettyprint.hector.api.factory.HFactory;
+import me.prettyprint.hector.api.mutation.Mutator;
+import me.prettyprint.hector.api.query.QueryResult;
+import me.prettyprint.hector.api.query.SliceQuery;
+
+public class CassandraCreate {
+ private static Keyspace ksp;
+ private static Cluster cluster;
+ private static Mutator<Long> mutatorLong;
+ private static Mutator<String> mutatorString;
+ private static Mutator<String> mutatorLog;
+ StringSerializer ss = StringSerializer.get();
+ LongSerializer ls = LongSerializer.get();
+
+
+ // connect to cluster
+ public void Connection() {
+ cluster = HFactory.getOrCreateCluster("Protein Cluster", "127.0.0.1:9160");
+ KeyspaceDefinition keyspaceDef = cluster.describeKeyspace("ProteinKeyspace");
+ // If keyspace does not exist, the CFs don't exist either. => create them.
+/* if (keyspaceDef != null) {
+ cluster.dropColumnFamily("ProteinKeyspace", "ProteinRow", true);
+ cluster.dropColumnFamily("ProteinKeyspace", "ProteinData", true);
+ cluster.dropKeyspace("ProteinKeyspace", true);
+ System.out.println("ProteinKeyspace has been dropped");
+ } else*/ if (keyspaceDef == null) { // create column family
+ System.out.println("ProteinKeyspace has been null");
+ ColumnFamilyDefinition cfProtein = HFactory.createColumnFamilyDefinition("ProteinKeyspace", "ProteinRow", ComparatorType.ASCIITYPE);
+ ColumnFamilyDefinition cfLog = HFactory.createColumnFamilyDefinition("ProteinKeyspace", "ProteinLog", ComparatorType.ASCIITYPE);
+ ColumnFamilyDefinition cfData = HFactory.createColumnFamilyDefinition("ProteinKeyspace", "ProteinData", ComparatorType.ASCIITYPE);
+
+ KeyspaceDefinition newKeyspace = HFactory.createKeyspaceDefinition("ProteinKeyspace",
+ ThriftKsDef.DEF_STRATEGY_CLASS, 1, Arrays.asList(cfProtein, cfLog, cfData));
+ //Add the schema to the cluster.
+ //"true" as the second param means that Hector will block until all nodes see the change.
+ cluster.addKeyspace(newKeyspace, true);
+ cluster.addColumnFamily(cfProtein, true);
+ cluster.addColumnFamily(cfLog, true);
+ cluster.addColumnFamily(cfData, true);
+ }
+ ksp = HFactory.createKeyspace("ProteinKeyspace", cluster);
+ System.out.println("Cassantra has been connected");
+ }
+
+ // parsing data from http://www.compbio.dundee.ac.uk/www-jpred/results/usage-new/alljobs.dat
+ public void Parsing() {
+ mutatorString = HFactory.createMutator(ksp, ss); // CF ProteinRow store protein and prediction
+ mutatorLog = HFactory.createMutator(ksp, ss); // CF ProteinLog store log informations (ip, id, dates start and dates of end)
+ mutatorLong = HFactory.createMutator(ksp, ls); // CF ProteinData store id and protein per data
+ System.out.println("Parsing......");
+ String in = "http://www.compbio.dundee.ac.uk/www-jpred/results/usage-new/alljobs.dat";
+ DataParsing datParsing = new DataParsing();
+ datParsing.ParsingTest(in);
+ mutatorString.execute();
+ mutatorLong.execute();
+ mutatorLog.execute();
+ System.out.println("Data Inserted");
+ }
+
+ public void Closing() {
+ cluster.getConnectionManager().shutdown();
+ System.out.println("Cassantra has been closed");
+ }
+
+ // check whether this id exists in the cassandra DB
+ public boolean CheckIP(String ip) {
+ SliceQuery<String, String, String> sliceQuery = HFactory.createSliceQuery(ksp, ss, ss, ss);
+ sliceQuery.setColumnFamily("ProteinLog").setKey(ip).setRange("", "", false, 100);
+ QueryResult<ColumnSlice<String, String>> result = sliceQuery.execute();
+ if (result.get().getColumns().size() > 0)
+ return true;
+ else
+ return false;
+ }
+
+ public void InsertData(long dataWork, String dataBegin, String dataEnd, String ip, String id, String statusEx, String statusFinal, String protein, String jnetpred) {
+ mutatorLog.addInsertion(id, "ProteinLog", HFactory.createColumn("ip", ip, ss, ss))
+ .addInsertion(id, "ProteinLog", HFactory.createColumn("DataBegin", dataBegin, ss, ss))
+ .addInsertion(id, "ProteinLog", HFactory.createColumn("DataEnd", dataEnd, ss, ss))
+ .addInsertion(id, "ProteinLog", HFactory.createColumn("Status ex", statusEx, ss, ss))
+ .addInsertion(id, "ProteinLog", HFactory.createColumn("Status final", statusFinal, ss, ss))
+ .addInsertion(id, "ProteinLog", HFactory.createColumn("Protein", protein, ss, ss));
+ mutatorString.addInsertion(protein, "ProteinRow", HFactory.createColumn(id, jnetpred, ss, ss));
+ mutatorLong.addInsertion(dataWork, "ProteinData", HFactory.createColumn(id, protein, ss, ss));
+ }
+
+ public Keyspace GetKeyspace() {
+ return ksp;
+ }
+}