package com.sissi.resource.impl;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DBObject;
import com.sissi.config.MongoConfig;
import com.sissi.resource.ResourceCounter;
/**
* 索引策略: 无需索引
*
* @author kim 2014年1月15日
*/
public class MongoResourceCounter implements ResourceCounter {
/**
* {"$inc":{"count":1}}
*/
private final DBObject incr = BasicDBObjectBuilder.start("$inc", BasicDBObjectBuilder.start("inc", 1).get()).get();
/**
* {"$inc":{"count":1}}
*/
private final DBObject decr = BasicDBObjectBuilder.start("$inc", BasicDBObjectBuilder.start("dec", 1).get()).get();
private final String resource = "resource";
private final MongoConfig config;
public MongoResourceCounter(MongoConfig config) {
super();
this.config = config.reset();
}
@Override
public ResourceCounter increment(String resource) {
return this.statistics(this.incr, resource);
}
@Override
public ResourceCounter decrement(String resource) {
return this.statistics(this.decr, resource);
}
private ResourceCounter statistics(DBObject op, String resource) {
this.config.collection().update(BasicDBObjectBuilder.start(this.resource, resource).get(), op, true, false);
return this;
}
}