/* * Copyright (C) 2012-2015 DataStax Inc. * * 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. */ package com.datastax.driver.examples.basic; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; /** * Creates a keyspace and tables, and loads some data into them. * <p/> * Preconditions: * - a Cassandra cluster is running and accessible through the contacts points identified by CONTACT_POINTS and PORT. * <p/> * Side effects: * - creates a new keyspace "simplex" in the cluster. If a keyspace with this name already exists, it will be reused; * - creates two tables "simplex.songs" and "simplex.playlists". If they exist already, they will be reused; * - inserts a row in each table. * * @see <a href="http://datastax.github.io/java-driver/manual/">Java driver online manual</a> */ public class CreateAndPopulateKeyspace { static String[] CONTACT_POINTS = {"127.0.0.1"}; static int PORT = 9042; public static void main(String[] args) { CreateAndPopulateKeyspace client = new CreateAndPopulateKeyspace(); try { client.connect(CONTACT_POINTS, PORT); client.createSchema(); client.loadData(); client.querySchema(); } finally { client.close(); } } private Cluster cluster; private Session session; /** * Initiates a connection to the cluster * specified by the given contact point. * * @param contactPoints the contact points to use. * @param port the port to use. */ public void connect(String[] contactPoints, int port) { cluster = Cluster.builder() .addContactPoints(contactPoints).withPort(port) .build(); System.out.printf("Connected to cluster: %s%n", cluster.getMetadata().getClusterName()); session = cluster.connect(); } /** * Creates the schema (keyspace) and tables * for this example. */ public void createSchema() { session.execute("CREATE KEYSPACE IF NOT EXISTS simplex WITH replication " + "= {'class':'SimpleStrategy', 'replication_factor':1};"); session.execute( "CREATE TABLE IF NOT EXISTS simplex.songs (" + "id uuid PRIMARY KEY," + "title text," + "album text," + "artist text," + "tags set<text>," + "data blob" + ");"); session.execute( "CREATE TABLE IF NOT EXISTS simplex.playlists (" + "id uuid," + "title text," + "album text, " + "artist text," + "song_id uuid," + "PRIMARY KEY (id, title, album, artist)" + ");"); } /** * Inserts data into the tables. */ public void loadData() { session.execute( "INSERT INTO simplex.songs (id, title, album, artist, tags) " + "VALUES (" + "756716f7-2e54-4715-9f00-91dcbea6cf50," + "'La Petite Tonkinoise'," + "'Bye Bye Blackbird'," + "'Joséphine Baker'," + "{'jazz', '2013'})" + ";"); session.execute( "INSERT INTO simplex.playlists (id, song_id, title, album, artist) " + "VALUES (" + "2cc9ccb7-6221-4ccb-8387-f22b6a1b354d," + "756716f7-2e54-4715-9f00-91dcbea6cf50," + "'La Petite Tonkinoise'," + "'Bye Bye Blackbird'," + "'Joséphine Baker'" + ");"); } /** * Queries and displays data. */ public void querySchema() { ResultSet results = session.execute( "SELECT * FROM simplex.playlists " + "WHERE id = 2cc9ccb7-6221-4ccb-8387-f22b6a1b354d;"); System.out.printf("%-30s\t%-20s\t%-20s%n", "title", "album", "artist"); System.out.println("-------------------------------+-----------------------+--------------------"); for (Row row : results) { System.out.printf("%-30s\t%-20s\t%-20s%n", row.getString("title"), row.getString("album"), row.getString("artist")); } } /** * Closes the session and the cluster. */ public void close() { session.close(); cluster.close(); } }