/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.essar.automation.dhaval.invoker.store;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author dhaval
 */
public class OdbUtil {

    private ObjectContainer db;

    public OdbUtil(String fileName) throws Exception{
        db = Db4o.openFile(fileName);

    }

    public void store(Object obj){
        db.ext().store(obj, 10);
    }

    public List get(Class c){
        List objSet = new ArrayList();
        ObjectSet resultSet = db.query(c);
        while(resultSet.hasNext()){
            objSet.add(resultSet.next());
        }
        return objSet;
    }

    public List get(Object obj){
        List objSet = new ArrayList();
        ObjectSet resultSet = db.queryByExample(obj);
        while(resultSet.hasNext()){
            objSet.add(resultSet.next());
        }
        return objSet;
    }

    public Object getSingleton(Class c){
        Object obj = null;
        ObjectSet resultSet = db.query(c);
        while(resultSet.hasNext()){
            obj = resultSet.next();
        }
        return obj;
    }

    public void close(){
        db.close();
    }

    public void commit(){
        commit();
    }

    public boolean isStored(Object ojb){
        return db.ext().isStored(ojb);
    }
    public void delete(Object obj){
        db.delete(obj);
    }
}
