Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package in.shop2020.server;

import in.shop2020.model.ProductSearchActivity;
import in.shop2020.web.DailySearchQueryAggregatorServlet;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.logging.Logger;

import javax.jdo.Extent;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;

public class ProductSearchActivityRepository {

        private static Logger logger = Logger.getLogger(ProductSearchActivityRepository.class.getName());
        
        public List<ProductSearchActivity> getAll() {
                PersistenceManager pm = PMF.get().getPersistenceManager();
                try {
                        List<ProductSearchActivity> searchActivities = new ArrayList<ProductSearchActivity>();
                    Extent<ProductSearchActivity> extent = pm.getExtent(ProductSearchActivity.class, false);
                    for (ProductSearchActivity searchActivity : extent) {
                        logger.warning(searchActivity.toString());
                        searchActivities.add(searchActivity);
                    }
                    extent.closeAll();
                        
                    return searchActivities;
                } catch(Exception e) {
                        logger.warning(e.toString());
                        e.printStackTrace();
                } finally {
                        pm.close();
                }
                return null;
        }
        
        public void create(ProductSearchActivity searchActivity) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            String key = sdf.format(searchActivity.getDate()) + "-" + searchActivity.getQueryString();
            searchActivity.setKey(key);
                PersistenceManager pm = PMF.get().getPersistenceManager();
                try {
                    pm.makePersistent(searchActivity);
                } catch(Exception e) {
                        logger.warning(e.toString());
                        e.printStackTrace();
                } finally {
                        pm.close();
                }
        }

        public void createAll(List<ProductSearchActivity> searchActivities) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            sdf.setTimeZone(TimeZone.getTimeZone("IST"));
        for (ProductSearchActivity searchActivity : searchActivities) {
            String key = sdf.format(searchActivity.getDate()) + "-" + searchActivity.getQueryString();
                searchActivity.setKey(key);
                logger.warning(searchActivity.toString());
            }
        PersistenceManager pm = PMF.get().getPersistenceManager();
        try {
            pm.makePersistentAll(searchActivities);
        } catch(Exception e) {
                        logger.warning(e.toString());
                        e.printStackTrace();
                } finally {
            pm.close();
        }
    }
        
        public void deleteById(String key) {
                PersistenceManager pm = PMF.get().getPersistenceManager();
                try {
                        pm.deletePersistent(pm.getObjectById(ProductSearchActivity.class, key));
                } finally {
                        pm.close();
                }
        }
        
        public ProductSearchActivity getById(String key) {
        PersistenceManager pm = PMF.get().getPersistenceManager();
        try {
            return pm.getObjectById(ProductSearchActivity.class, key);
        } finally {
            pm.close();
        }
    }
        
        public static List<ProductSearchActivity> getByDate(Date date) {
            PersistenceManager pm = PMF.get().getPersistenceManager();
        Query query = pm.newQuery(ProductSearchActivity.class);
        //query.setFilter("date <= dateParam");
        query.setFilter("date == dateParam");
        query.declareImports("import java.util.Date");
        query.declareParameters("Date dateParam");

        try {
            return (List<ProductSearchActivity>) query.execute(date);
        } finally {
            query.closeAll();
        }
    }
        
}