Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 2013-2014 sagyf Yang. The Four Group.
   */
  package com.jfinal.ext.plugin.monogodb;
  
  import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import com.mongodb.DB;
 
 public class MongoKit {
 
     protected static Logger logger = Logger.getLogger(MongoKit.class);
 
     private static MongoClient client;
     private static DB defaultDb;
 
     public static void init(MongoClient clientString database) {
         . = client;
         . = client.getDB(database);
 
     }
 
     public static void updateFirst(String collectionNameMap<StringObjectqMap<StringObjecto) {
         MongoKit.getCollection(collectionName).findAndModify(toDBObject(q), toDBObject(o));
     }
 
     public static int removeAll(String collectionName) {
         return MongoKit.getCollection(collectionName).remove(new BasicDBObject()).getN();
     }
 
     public static int remove(String collectionNameMap<StringObjectfilter) {
         return MongoKit.getCollection(collectionName).remove(toDBObject(filter)).getN();
     }
 
     public static int save(String collectionNameList<Recordrecords) {
         List<DBObjectobjs = new ArrayList<DBObject>();
         for (Record record : records) {
             objs.add(toDbObject(record));
         }
         return MongoKit.getCollection(collectionName).insert(objs).getN();
 
     }
 
     public static int save(String collectionNameRecord record) {
         return MongoKit.getCollection(collectionName).save(toDbObject(record)).getN();
     }
 
     public static Record findFirst(String collectionName) {
         return toRecord(MongoKit.getCollection(collectionName).findOne());
     }
 
     public static Page<Recordpaginate(String collectionint pageNumberint pageSize) {
         return paginate(collectionpageNumberpageSizenullnullnull);
     }
 
     public static Page<Recordpaginate(String collectionint pageNumberint pageSizeMap<StringObjectfilter) {
         return paginate(collectionpageNumberpageSizefilternullnull);
     }
 
     public static Page<Recordpaginate(String collectionint pageNumberint pageSizeMap<StringObjectfilter,
             Map<StringObjectlike) {
         return paginate(collectionpageNumberpageSizefilterlikenull);
     }
 
     public static Page<Recordpaginate(String collectionint pageNumberint pageSizeMap<StringObjectfilter,
             Map<StringObjectlikeMap<StringObjectsort) {
         DBCollection logs = MongoKit.getCollection(collection);
         BasicDBObject conditons = new BasicDBObject();
         buildFilter(filterconditons);
         buildLike(likeconditons);
         DBCursor dbCursor = logs.find(conditons);
         page(pageNumberpageSizedbCursor);
         sort(sortdbCursor);
         List<Recordrecords = new ArrayList<Record>();
         while (dbCursor.hasNext()) {
             records.add(toRecord(dbCursor.next()));
         }
         int totalRow = dbCursor.count();
         if (totalRow <= 0) {
             return new Page<Record>(new ArrayList<Record>(0), pageNumberpageSize, 0, 0);
         }
         int totalPage = totalRow / pageSize;
         if (totalRow % pageSize != 0) {
             totalPage++;
        }
        Page<Recordpage = new Page<Record>(recordspageNumberpageSizetotalPagetotalRow);
        return page;
    }
    private static void page(int pageNumberint pageSizeDBCursor dbCursor) {
        dbCursor = dbCursor.skip((pageNumber - 1) * pageSize).limit(pageSize);
    }
    private static void sort(Map<StringObjectsortDBCursor dbCursor) {
        if (sort != null) {
            DBObject dbo = new BasicDBObject();
            Set<Entry<StringObject>> entrySet = sort.entrySet();
            for (Entry<StringObjectentry : entrySet) {
                String key = entry.getKey();
                Object val = entry.getValue();
                dbo.put(key"asc".equalsIgnoreCase(val + "") ? 1 : -1);
            }
            dbCursor = dbCursor.sort(dbo);
        }
    }
    private static void buildLike(Map<StringObjectlikeBasicDBObject conditons) {
        if (like != null) {
            Set<Entry<StringObject>> entrySet = like.entrySet();
            for (Entry<StringObjectentry : entrySet) {
                String key = entry.getKey();
                Object val = entry.getValue();
                conditons.put(key, MongoKit.getLikeStr(val));
            }
        }
    }
    private static void buildFilter(Map<StringObjectfilterBasicDBObject conditons) {
        if (filter != null) {
            Set<Entry<StringObject>> entrySet = filter.entrySet();
            for (Entry<StringObjectentry : entrySet) {
                String key = entry.getKey();
                Object val = entry.getValue();
                conditons.put(keyval);
            }
        }
    }
    @SuppressWarnings("unchecked")
    public static Record toRecord(DBObject dbObject) {
        Record record = new Record();
        record.setColumns(dbObject.toMap());
        return record;
    }
    public static BasicDBObject getLikeStr(Object findStr) {
        Pattern pattern = Pattern.compile("^.*" + findStr + ".*$".);
        return new BasicDBObject("$regex"pattern);
    }
    public static DB getDB() {
        return ;
    }
    public static DB getDB(String dbName) {
        return .getDB(dbName);
    }
    public static DBCollection getCollection(String name) {
        return .getCollection(name);
    }
    public static DBCollection getDBCollection(String dbNameString collectionName) {
        return getDB(dbName).getCollection(collectionName);
    }
    public static MongoClient getClient() {
        return ;
    }
    public static void setMongoClient(MongoClient client) {
        . = client;
    }
    private static BasicDBObject toDBObject(Map<StringObjectmap) {
        BasicDBObject dbObject = new BasicDBObject();
        Set<Entry<StringObject>> entrySet = map.entrySet();
        for (Entry<StringObjectentry : entrySet) {
            String key = entry.getKey();
            Object val = entry.getValue();
            dbObject.append(keyval);
        }
        return dbObject;
    }
    private static BasicDBObject toDbObject(Record record) {
        BasicDBObject object = new BasicDBObject();
        for (Entry<StringObjecte : record.getColumns().entrySet()) {
            object.append(e.getKey(), e.getValue());
        }
        return object;
    }
New to GrepCode? Check out our FAQ X