fixed the OR clause

This commit is contained in:
Francesco Mangiacrapa 2021-12-10 15:04:45 +01:00
parent c9586c8594
commit cca77a169f
2 changed files with 23 additions and 3 deletions

View File

@ -23,6 +23,7 @@ import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBObjectBuilder;
@ -178,8 +179,20 @@ public class MongoServiceCommon {
bs.append("$regex", searchFields.get(key));
bs.append("$options", "i");
builder.append(key, bs);
}
query = new Document(builder.get().toMap());
//Building list of Document in OR clause
BasicDBList list = new BasicDBList();
Map map = builder.get().toMap();
for (Object key : map.keySet()) {
BasicDBObject value = (BasicDBObject) map.get(key);
Document doc = new Document((String) key, value);
list.add(doc);
}
query = new Document();
query.put("$or", list);
request.setFilter(query);
}

View File

@ -1,5 +1,8 @@
package org.gcube.application;
import java.util.HashMap;
import java.util.Map;
import org.gcube.application.geoportalcommon.GeoportalCommon;
import org.gcube.application.geoportalcommon.MongoServiceCommon;
import org.gcube.application.geoportalcommon.config.GNADataConfigProfileReader;
@ -47,14 +50,18 @@ public class TestGNACommon {
return links;
}
//@Test
@Test
public void queryConcessioniTest() throws Exception {
try {
ScopeProvider.instance.set(CONTEXT);
MongoServiceCommon msc = new MongoServiceCommon();
SearchingFilter filter = new SearchingFilter();
// filter.setSearchInto(new Se);
Map<String, Object> searchInto = new HashMap<String, Object>();
//searchInto.put("nome", "mock");
searchInto.put("authors", "annalisa");
filter.setSearchInto(searchInto);
ResultSetPaginatedData result = msc.queryOnMongo(30, 0, 30, filter, "concessione");
int i = 0;