![JAR search and dependency download from the Maven repository](/logo.png)
com.github.ltsopensource.queue.mongo.MongoNodeGroupStore Maven / Gradle / Ivy
package com.github.ltsopensource.queue.mongo;
import com.github.ltsopensource.core.cluster.Config;
import com.github.ltsopensource.core.cluster.NodeType;
import com.github.ltsopensource.core.commons.utils.CollectionUtils;
import com.github.ltsopensource.core.commons.utils.StringUtils;
import com.github.ltsopensource.core.domain.NodeGroupGetReq;
import com.github.ltsopensource.core.support.JobQueueUtils;
import com.github.ltsopensource.core.support.SystemClock;
import com.github.ltsopensource.queue.NodeGroupStore;
import com.github.ltsopensource.queue.domain.NodeGroupPo;
import com.github.ltsopensource.store.mongo.MongoRepository;
import com.github.ltsopensource.admin.response.PaginationRsp;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.DuplicateKeyException;
import org.mongodb.morphia.query.Query;
import java.util.List;
/**
* @author Robert HG ([email protected]) on 6/7/15.
*/
public class MongoNodeGroupStore extends MongoRepository implements NodeGroupStore {
public MongoNodeGroupStore(Config config) {
super(config);
setTableName(JobQueueUtils.NODE_GROUP_STORE);
// create table
DBCollection dbCollection = template.getCollection();
List indexInfo = dbCollection.getIndexInfo();
// create index if not exist
if (CollectionUtils.sizeOf(indexInfo) <= 1) {
template.ensureIndex("idx_nodeType_name", "nodeType,name", true, true);
}
}
@Override
public void addNodeGroup(NodeType nodeType, String name) {
try {
NodeGroupPo nodeGroupPo = new NodeGroupPo();
nodeGroupPo.setNodeType(nodeType);
nodeGroupPo.setName(name);
nodeGroupPo.setGmtCreated(SystemClock.now());
template.save(nodeGroupPo);
} catch (DuplicateKeyException e) {
// ignore
}
}
@Override
public void removeNodeGroup(NodeType nodeType, String name) {
Query query = template.createQuery(NodeGroupPo.class);
query.field("nodeType").equal(nodeType).field("name").equal(name);
template.delete(query);
}
@Override
public List getNodeGroup(NodeType nodeType) {
Query query = template.createQuery(NodeGroupPo.class);
query.field("nodeType").equal(nodeType);
return query.asList();
}
@Override
public PaginationRsp getNodeGroup(NodeGroupGetReq request) {
Query query = template.createQuery(NodeGroupPo.class);
if (request.getNodeType() != null) {
query.field("nodeType").equal(request.getNodeType());
}
if (StringUtils.isNotEmpty(request.getNodeGroup())) {
query.field("name").equal(request.getNodeGroup());
}
PaginationRsp response = new PaginationRsp();
Long results = template.getCount(query);
response.setResults(results.intValue());
if (results == 0) {
return response;
}
query.order("-gmtCreated").offset(request.getStart()).limit(request.getLimit());
response.setRows(query.asList());
return response;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy