/*  Data Analysis with Java
 *  John R. Hubbard
 *  Jul 30, 2017
 */

package dawj.ch10;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import org.bson.Document;

public class LoadBooks {
    private static final File DATA = new File("data/Books.dat");

    public static void main(String[] args) {
        MongoClient client = new MongoClient("localhost", 27017);
        MongoDatabase library = client.getDatabase("library");
        MongoCollection books = library.getCollection("books");
        
        books.drop();
        library.createCollection("books");
        load(books);
    }
    
    public static void load(MongoCollection collection) {
        try {
            Scanner fileScanner = new Scanner(DATA);
            int n = 0;
            while (fileScanner.hasNext()) {
                String line = fileScanner.nextLine();
                Scanner lineScanner = new Scanner(line).useDelimiter("/");
                String title = lineScanner.next();
                int edition = lineScanner.nextInt();
                String cover = lineScanner.next();
                String publisher = lineScanner.next();
                int year = lineScanner.nextInt();
                String _id = lineScanner.next();
                int pages = lineScanner.nextInt();
                lineScanner.close();
                
                addDoc(_id, title, edition, publisher, year, cover, pages, collection);
                System.out.printf("%4d. %s, %s, %s, %d%n", 
                        ++n, _id, title, publisher, year);
            }
            System.out.printf("%d docs inserted in books collection.%n", n);
            fileScanner.close();
        } catch (IOException e) {
            System.err.println(e);
        }        
    }
    
    public static void addDoc(String _id, String title, int edition, 
            String publisher, int year, String cover, int pages, 
            MongoCollection collection) {
        Document doc = new Document();
        doc.put("_id", _id);
        doc.put("title", title);
        doc.put("edition", edition);
        doc.put("publisher", publisher);
        doc.put("year", year);
        doc.put("cover", cover);
        doc.put("pages", pages);
        collection.insertOne(doc);
    }
}