Subversion Repositories SmartDukaan

Rev

Rev 21974 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.dtrapi.Storage;


import java.lang.reflect.Type;
import java.net.UnknownHostException;
import java.util.List;

import org.apache.log4j.Logger;

import java.util.ArrayList;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.util.JSON;

import in.shop2020.dtrapi.models.FofoForm;
import in.shop2020.dtrapi.models.MasterData;


public class Mongo {

        private static MongoClient mongo;
        private static final String CATALOG_DB = "Catalog";
        private static final String MASTER_DATA = "MasterData";
        private static final String FOFO_DB = "Fofo";
        private static final String FOFO_FORM_COLLECTION = "RegistrationForm";
        private static Logger log = Logger.getLogger(Mongo.class);

        static {
                try {
                        mongo = new MongoClient( "localhost" , 27017 );
                } catch (UnknownHostException e) {
                        e.printStackTrace();
                }
        }

        public static MasterData getItemByID(long id) throws Exception{
                DB db = mongo.getDB(CATALOG_DB);
                DBCollection collection = db.getCollection(MASTER_DATA);
                BasicDBObject obj = new BasicDBObject();
                obj.append("_id", id);
                DBObject result = collection.findOne(obj);
                if (result==null){
                        throw new Exception();
                }
                Gson gson = new Gson();
                MasterData masterData = gson.fromJson(result.toString(), MasterData.class);
                return masterData;
        }

        public static ArrayList<MasterData> getItemsByBundleId(long bundleId){
                DB db = mongo.getDB(CATALOG_DB);
                DBCollection collection = db.getCollection(MASTER_DATA);
                BasicDBObject obj = new BasicDBObject();
                BasicDBObject in_query = new BasicDBObject();
                obj.append("skuBundleId", bundleId);
                obj.append("in_stock",1);
                in_query.append("$in",new int[] {1,2,3,4});
                obj.append("source_id", in_query);
                ArrayList<MasterData> items = new ArrayList<MasterData>();
                DBCursor result = collection.find(obj);
                Gson gson = new Gson();
                while (result.hasNext()) {
                        MasterData masterData = gson.fromJson(result.next().toString(), MasterData.class);
                        items.add(masterData);
                }
                return items;
        }
        
        public static void persistFofoRegInfo(FofoForm ff){
            DB db = mongo.getDB(FOFO_DB);
                DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
                if(ff.get_id()==0) {
                        BasicDBObject orderBy = new BasicDBObject();
                        orderBy.put("_id", -1);
                        DBCursor cursor = collection.find().sort(orderBy).limit(1);
                        long id = 1l;
                        while (cursor.hasNext()) {
                                Gson gson = new Gson();
                                FofoForm existingFofo = gson.fromJson(cursor.next().toString(), FofoForm.class);
                                id = existingFofo.get_id() + 1;
                        }
                        ff.set_id(id);
                }
                Gson gs = new Gson();
                DBObject dbObject = (DBObject) JSON.parse(gs.toJson(ff));
                collection.save(dbObject);
        }
        
        public static List<FofoForm> getFofoForms(int offset, int limit) {
                List<FofoForm> ffList = new ArrayList<FofoForm>(); 
                DB db = mongo.getDB(FOFO_DB);
                DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
                BasicDBObject orderBy = new BasicDBObject();
                orderBy.put("_id", -1);
                DBCursor dbc = collection.find().sort(orderBy).limit(limit).skip(offset);
                while (dbc.hasNext()) {
                        ffList.add(convertJSONToPojo(dbc.next().toString()));
                }
                return ffList;
        }
        
        public static String getFofoFormJsonStringByFofoId(int fofoId){
                DB db = mongo.getDB(FOFO_DB);
                BasicDBObject filter = new BasicDBObject();
                filter.append("_id", fofoId);
                DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
                DBObject fofoDbOject = collection.find(filter).one();
                return fofoDbOject.toString();
        }
        
        public static FofoForm getFofoForm(int fofoId) {
                String fofoFormJsonString = getFofoFormJsonStringByFofoId(fofoId);
                System.out.println(fofoFormJsonString);
                return new Gson().fromJson(fofoFormJsonString, FofoForm.class);
                //return convertJSONToPojo(fofoDbOject.toString());
        }
        
        private static FofoForm convertJSONToPojo(String json){

            Type type = new TypeToken< FofoForm >(){}.getType();

            return new Gson().fromJson(json, type);

        }

        public static void main(String[] args) throws Exception{
                System.out.println(getFofoForms(0, 10));

        }
}