org.kaaproject.kaa.server.common.nosql.mongo.dao.MongoDataLoader.java Source code

Java tutorial

Introduction

Here is the source code for org.kaaproject.kaa.server.common.nosql.mongo.dao.MongoDataLoader.java

Source

/*
 * Copyright 2014-2016 CyberVision, 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 org.kaaproject.kaa.server.common.nosql.mongo.dao;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.WriteConcern;
import com.mongodb.util.JSON;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class MongoDataLoader {

    public static final String DATA_FILE = "mongo.data";
    public static final String COLLECTION_NAME_LINE = "#";
    private static final Logger LOG = LoggerFactory.getLogger(MongoDataLoader.class);
    private static DBCollection currentCollection = null;

    public static void loadData() throws IOException {
        InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(DATA_FILE);
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String jsonLine = "";
        while ((jsonLine = reader.readLine()) != null) {
            if (StringUtils.isNotBlank(jsonLine)) {
                String currentLine = jsonLine.trim();
                if (jsonLine.startsWith(COLLECTION_NAME_LINE)) {
                    setCollectionFromName(currentLine);
                } else {
                    currentCollection.insert((DBObject) JSON.parse(jsonLine), WriteConcern.ACKNOWLEDGED);
                }
            }
        }
        input.close();
        LOG.info("Load data finished.");
    }

    private static void setCollectionFromName(String line) {
        int idx = line.indexOf(COLLECTION_NAME_LINE);
        if (idx != -1) {
            String collectionName = line.substring(++idx, line.length()).trim();
            if (StringUtils.isNotEmpty(collectionName)) {
                LOG.info("Loading data into " + collectionName + " collection");
                currentCollection = MongoDBTestRunner.getDB().getCollectionFromString(collectionName);
            } else {
                new RuntimeException("Incorrect collection name:" + collectionName
                        + ". Please write collection name in correct format: # collectionName");
            }
        } else {
            throw new RuntimeException(
                    "Incorrect format of data file. Please write collection name in correct format: # collectionName");
        }
    }

    public static void clearDBData() {
        DB db = MongoDBTestRunner.getDB();
        if (db != null) {
            db.dropDatabase();
        }
    }
}