Mercurial > hg > thermostat-ng > web-gateway
changeset 191:fb8a7d310fbc
Refactor MongoExecutor to handle queries string and list better
Reviewed-by: jerboaa
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-July/024028.html
author | Jie Kang <jkang@redhat.com> |
---|---|
date | Mon, 10 Jul 2017 14:19:43 -0400 |
parents | cef59083f9a7 |
children | 17a5b2833107 |
files | common/mongodb/src/main/java/com/redhat/thermostat/gateway/common/mongodb/executor/MongoExecutor.java |
diffstat | 1 files changed, 32 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/common/mongodb/src/main/java/com/redhat/thermostat/gateway/common/mongodb/executor/MongoExecutor.java Fri Jul 07 08:24:57 2017 -0400 +++ b/common/mongodb/src/main/java/com/redhat/thermostat/gateway/common/mongodb/executor/MongoExecutor.java Mon Jul 10 14:19:43 2017 -0400 @@ -57,20 +57,24 @@ import com.redhat.thermostat.gateway.common.mongodb.filters.MongoSortFilters; public class MongoExecutor { - public MongoDataResultContainer execGetRequest(MongoCollection<Document> collection, Integer limit, Integer offset, String sort, String queries, String projections) { - FindIterable<Document> documents; + return execGetRequest(collection, limit, offset, sort, buildQueries(queries), projections); + } + + public MongoDataResultContainer execGetRequest(MongoCollection<Document> collection, Integer limit, + Integer offset, String sort, List<String> queries, String projections) { + FindIterable<Document> documents = collection.find(); MongoDataResultContainer queryDataContainer = new MongoDataResultContainer(); - if (queries != null) { - List<String> queriesList = Arrays.asList(queries.split(",")); - final Bson query = MongoRequestFilters.buildQueriesFilter(queriesList); - documents = collection.find(query); + if (queries != null && !queries.isEmpty()) { + final Bson query = MongoRequestFilters.buildQueriesFilter(queries); + documents = documents.filter(query); queryDataContainer.setGetReqCount(collection.count(query)); queryDataContainer.setRemainingNumQueryDocuments((int) (collection.count(query) - (limit + offset))); } else { - documents = collection.find(); + queryDataContainer.setGetReqCount(collection.count()); + queryDataContainer.setRemainingNumQueryDocuments((int) (collection.count() - (limit + offset))); } if (projections != null) { @@ -88,19 +92,16 @@ } public MongoDataResultContainer execPutRequest(MongoCollection<Document> collection, String body, String queries) { + return execPutRequest(collection, body, buildQueries(queries)); + } + + public MongoDataResultContainer execPutRequest(MongoCollection<Document> collection, String body, List<String> queries) { BasicDBObject inputObject = (BasicDBObject) JSON.parse(body); MongoDataResultContainer metaDataContainer = new MongoDataResultContainer(); - final List<String> queriesList; - if (queries != null) { - queriesList = Arrays.asList(queries.split(",")); - } else { - queriesList = Collections.emptyList(); - } - BasicDBObject setObject = (BasicDBObject) inputObject.get("set"); final Bson fields = new Document("$set", setObject); - final Bson bsonQueries = MongoRequestFilters.buildQueriesFilter(queriesList); + final Bson bsonQueries = MongoRequestFilters.buildQueriesFilter(queries); collection.updateMany(bsonQueries, fields); metaDataContainer.setPutReqMatches(collection.count(bsonQueries)); @@ -108,17 +109,20 @@ return metaDataContainer; } + public MongoDataResultContainer execDeleteRequest(MongoCollection<Document> collection, String queries) { - List<String> queriesList; + return execDeleteRequest(collection, buildQueries(queries)); + } + + public MongoDataResultContainer execDeleteRequest(MongoCollection<Document> collection, List<String> queries) { MongoDataResultContainer metaDataContainer = new MongoDataResultContainer(); - if (queries != null) { - queriesList = Arrays.asList(queries.split(",")); - Bson bsonQueries = MongoRequestFilters.buildQueriesFilter(queriesList); + if (queries != null && !queries.isEmpty()) { + Bson bsonQueries = MongoRequestFilters.buildQueriesFilter(queries); collection.deleteMany(bsonQueries); metaDataContainer.setDeleteReqMatches(collection.count(bsonQueries)); - return metaDataContainer; } else { + metaDataContainer.setDeleteReqMatches(collection.count()); collection.drop(); } @@ -136,4 +140,12 @@ return metaDataContainer; } + + private List<String> buildQueries(String queries) { + if (queries != null) { + return Arrays.asList(queries.split(",")); + } else { + return Collections.emptyList(); + } + } } \ No newline at end of file