All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
io.cloudboost.SearchFilter Maven / Gradle / Ivy
package io.cloudboost;
import io.cloudboost.json.JSONException;
import io.cloudboost.json.JSONObject;
import java.util.ArrayList;
/**
*
* @author cloudboost
*
*/
public class SearchFilter{
JSONObject bool;
ArrayList $include;
ArrayList must;
ArrayList should;
ArrayList must_not;
/**
* Constructor
*/
public SearchFilter(){
bool = new JSONObject();
$include = new ArrayList();
must = new ArrayList();
should = new ArrayList();
must_not = new ArrayList();
try{
this.bool.put("must", this.must);
this.bool.put("should", this.should);
this.bool.put("must_not", this.must_not);
} catch (JSONException e) {
e.printStackTrace();
}
}
/**
*
* Not Equal To
*
* @param columnName
* @param data
* @return
*/
public SearchFilter notEqualTo(String columnName, Object data){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject term = new JSONObject();
JSONObject column = new JSONObject();
try{
column.put(columnName, data);
term.put("term", column);
this.must_not.add(term);
this.bool.put("must_not", this.must_not);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Not Equal To Overload
*
* @param columnName
* @param data
* @return
*/
public SearchFilter notEqualTo(String columnName, Object[] data){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject term = new JSONObject();
JSONObject column = new JSONObject();
try{
column.put(columnName, data);
term.put("terms", column);
this.must_not.add(term);
this.bool.put("must_not", this.must_not);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Equal To
*
* @param columnName
* @param data
* @return
*/
public SearchFilter equalTo(String columnName, Object data){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject term = new JSONObject();
JSONObject column = new JSONObject();
try{
column.put(columnName, data);
term.put("term", column);
this.must.add(term);
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Equal To Overload
*
* @param columnName
* @param data
* @return
*/
public SearchFilter equalTo(String columnName, Object[] data){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject term = new JSONObject();
JSONObject column = new JSONObject();
try{
column.put(columnName, data);
term.put("terms", column);
this.must.add(term);
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Exists
*
* @param columnName
* @return
*/
public SearchFilter exists(String columnName){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject obj = new JSONObject();
JSONObject field = new JSONObject();
try{
field.put("field", columnName);
obj.put("exists", field);
this.must.add(obj);
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Does Not Exists
*
* @param columnName
* @return
*/
public SearchFilter doesNotExists(String columnName){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject obj = new JSONObject();
JSONObject field = new JSONObject();
try{
field.put("field", columnName);
obj.put("missing", field);
this.must.add(obj);
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Greater Than Equal To
*
* @param columnName
* @param data
* @return
*/
public SearchFilter greaterThanEqualTo(String columnName, Object data){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject obj = new JSONObject();
JSONObject range = new JSONObject();
JSONObject column = new JSONObject();
try{
column.put("gte", data);
range.put(columnName, column);
obj.put("range", range);
this.must.add(obj);
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Greater Than
*
* @param columnName
* @param data
* @return
*/
public SearchFilter greaterThan(String columnName, Object data){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject obj = new JSONObject();
JSONObject range = new JSONObject();
JSONObject column = new JSONObject();
try{
column.put("gt", data);
range.put(columnName, column);
obj.put("range", range);
this.must.add(obj);
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Less Than
*
* @param columnName
* @param data
* @return
*/
public SearchFilter lessThan(String columnName, Object data){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject obj = new JSONObject();
JSONObject range = new JSONObject();
JSONObject column = new JSONObject();
try{
column.put("lt", data);
range.put(columnName, column);
obj.put("range", range);
this.must.add(obj);
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Less Than Or Equal To
*
* @param columnName
* @param data
* @return
*/
public SearchFilter lessThanOrEqualTo(String columnName, Object data){
if (columnName.equals("id") || columnName.equals("isSearchable") || columnName.equals("expires"))
columnName = "_" + columnName;
JSONObject obj = new JSONObject();
JSONObject range = new JSONObject();
JSONObject column = new JSONObject();
try{
column.put("lte", data);
range.put(columnName, column);
obj.put("range", range);
this.must.add(obj);
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* AND
*
* @param object
* @return
* @throws CloudException
*/
public SearchFilter and(SearchFilter object) throws CloudException{
if(object.$include.size() > 0){
throw new CloudException("You cannot have an include over AND. Have an CloudSearch Include over parent SearchFilter instead");
}
object.$include.clear();
this.must.add(object);
try {
this.bool.put("must", this.must);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* OR
*
* @param object
* @return
* @throws CloudException
*/
public SearchFilter or(SearchFilter object) throws CloudException{
if(object.$include.size() > 0){
throw new CloudException("You cannot have an include over OR. Have an CloudSearch Include over parent SearchFilter instead");
}
object.$include.clear();
this.should.add(object);
try {
this.bool.put("should", this.should);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* NOT
*
* @param object
* @return
* @throws CloudException
*/
public SearchFilter not(SearchFilter object) throws CloudException{
if(object.$include.size() > 0){
throw new CloudException("You cannot have an include over NOT. Have an CloudSearch Include over parent SearchFilter instead");
}
object.$include.clear();
this.must_not.add(object);
try {
this.bool.put("must_not", this.must_not);
} catch (JSONException e) {
e.printStackTrace();
}
return this;
}
/**
*
* Include
*
* @param columnName
* @return
*/
public SearchFilter include(String columnName){
if (columnName.equals("id") || columnName.equals("expires"))
columnName = "_" + columnName;
this.$include.add(columnName);
return this;
}
public SearchFilter near(String columnName,CloudGeoPoint point,int distance){
return this;
}
}