com.conventus.mongodb.dao.MongoDBGenericDAO.java Source code

Java tutorial

Introduction

Here is the source code for com.conventus.mongodb.dao.MongoDBGenericDAO.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.conventus.mongodb.dao;

import com.conventus.entity.IEntity;
import com.conventus.mongodb.converter.IObjectConverter;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import java.util.ArrayList;
import java.util.List;
import org.bson.types.ObjectId;

/**
 *
 * @author JuanAlejandro
 */
public class MongoDBGenericDAO<T> implements IMongoDBGenericDAO<T> {
    protected DBCollection col;
    protected IObjectConverter<T> converter;

    public MongoDBGenericDAO(IObjectConverter<T> conv) {
        this.converter = conv;
    }

    public T create(T obj) {
        DBObject doc = this.converter.toDBObject(obj);
        this.col.insert(doc);
        ObjectId id = (ObjectId) doc.get("_id");
        ((IEntity) obj).setId(id.toString());
        return obj;
    }

    public List<T> createAll(List<T> list) {
        List<DBObject> insertList = new ArrayList<DBObject>();

        for (T obj : list) {
            DBObject doc = this.converter.toDBObject(obj);
            insertList.add(doc);
        }

        this.col.insert(insertList);

        for (Integer i = 0; i < list.size(); i++) {
            DBObject doc = insertList.get(i);
            T obj = list.get(i);
            ObjectId id = (ObjectId) doc.get("_id");
            ((IEntity) obj).setId(id.toString());
        }

        return list;
    }

    public void update(T obj) {
        DBObject query = BasicDBObjectBuilder.start().append("_id", new ObjectId(((IEntity) obj).getId())).get();
        this.col.update(query, this.converter.toDBObject(obj));
    }

    public List<T> readAll() {
        List<T> data = new ArrayList<T>();
        DBCursor cursor = this.col.find();
        while (cursor.hasNext()) {
            DBObject doc = cursor.next();
            T obj = this.converter.toObject(doc);
            data.add(obj);
        }
        return data;
    }

    public void delete(T obj) {
        DBObject query = BasicDBObjectBuilder.start().append("_id", new ObjectId(((IEntity) obj).getId())).get();
        this.col.remove(query);
    }

    public T read(T obj) {
        DBObject query = BasicDBObjectBuilder.start().append("_id", new ObjectId(((IEntity) obj).getId())).get();
        DBObject data = this.col.findOne(query);
        return this.converter.toObject(data);
    }
}