Creating the Courses Collection

      +
      Your first application created a single student record for the student collection. In this part, you’re going to populate the course collection.

      Populating the course details collection

      You can use the same technique to build a store for the courses. Here’s a quick reminder of the course document structure:

      • art history

      • graphic design

      • fine art

      {
        "course-name": "art history",
        "faculty": "fine art",
        "credit-points" : 100
      }
      {
        "course-name": "graphic design",
        "faculty": "media and communication",
        "credit-points" : 200
      }
      {
        "course-name": "fine art",
        "faculty": "fine art",
        "credit-points" : 50
      }

      The code should be familiar to you; there’s not much difference between writing to the course collection and writing to the student collection; you just have more records to deal with:

      import com.couchbase.client.java.Bucket;
      import com.couchbase.client.java.Cluster;
      import com.couchbase.client.java.Collection;
      import com.couchbase.client.java.Scope;
      import com.couchbase.client.java.json.JsonObject;
      
      import java.time.Duration;
      
      public class InsertCourses {
      
          public static void main(String[] args) {
              Cluster cluster = Cluster.connect("localhost",
                      "Administrator", "password");
      
              Bucket bucket = cluster.bucket("student-bucket");
              bucket.waitUntilReady(Duration.ofSeconds(10));
              Scope scope = bucket.scope("art-school-scope");
              Collection course_records = scope.collection("course-record-collection");    (1)
      
              addCourse(course_records, "ART-HISTORY-000001", "art history", "fine art", 100);
              addCourse(course_records, "FINE-ART-000002", "fine art", "fine art", 50);
              addCourse(course_records, "GRAPHIC-DESIGN-000003", "graphic design", "media and communication", 200);
      
              cluster.disconnect();
          }
      
          private static void addCourse(Collection collection, String id, String name,
                                        String faculty, int creditPoints) {
      
              JsonObject course = JsonObject.create()
                      .put("course-name", name)
                      .put("faculty", faculty)
                      .put("credit-points", creditPoints);
      
              collection.upsert(id, course);
      
          }
      }
      1 Note that you’re now writing to a different collection.
      Make sure that you’ve created the course-collection in the admin console before you attempt to run the program.

      You can use maven to run the application:

      mvn exec:java -Dexec.mainClass="InsertCourses" -Dexec.cleanupDaemonThreads=false

      Use the admin console to make sure the documents have been created in the correct collection.

      Console showing the courses collection

      Next steps

      So you’ve created a cluster, a bucket, a scope and two collections. You’ve also populated your collections with documents. Well, a database isn’t much use until we can retrieve information from it, which is what you’re going to take a look at in the next part.