package org.oliot.epcis.service.query.sql;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
public class MysqlQueryUtil {
static DBObject getINQueryObject(String field, String csv) {
String[] eqArr = csv.split(",");
BasicDBList subStringList = new BasicDBList();
for (int i = 0; i < eqArr.length; i++) {
String eqString = eqArr[i].trim();
subStringList.add(eqString);
}
if (subStringList.isEmpty() == false) {
DBObject query = new BasicDBObject();
query.put(field, new BasicDBObject("$in", subStringList));
return query;
}
return null;
}
static List<String> getStringList(String csv){
String[] eqArr = csv.split(",");
List<String> subStringList=new ArrayList<String>();
for (int i = 0; i < eqArr.length; i++){
String eqString = eqArr[i].trim();
subStringList.add(eqString);
}
return subStringList;
}
static List<String> getepcList(String csv){
String[] eqArr = csv.split(",");
List<String> subStringList=new ArrayList<String>();
for (int i = 0; i < eqArr.length; i++){
String eqString = eqArr[i].trim();
String[] pat=eqString.split(":");
if(pat[3].equals("idpat")){
String[] pat2=pat[4].split("\\.");
String conc=pat[0]+":"+pat[1]+":id"+":"+pat[3]+":"+pat2[0]+".%";
subStringList.add(conc);
subStringList.add(eqString);
}else{
subStringList.add(eqString);
}
}
return subStringList;
}
static DBObject getINFamilyQueryObject(String type, String field, String csv) {
String[] paramValueArr = csv.split(",");
BasicDBList subObjectList = new BasicDBList();
for (int i = 0; i < paramValueArr.length; i++) {
String val = paramValueArr[i].trim();
DBObject dbo = new BasicDBObject();
dbo.put(type, val);
subObjectList.add(dbo);
}
if (subObjectList.isEmpty() == false) {
DBObject query = new BasicDBObject();
query.put(field, new BasicDBObject("$in", subObjectList));
return query;
}
return null;
}
static DBObject getINExtensionQueryObject(String type, String[] fields,
String csv) {
String[] paramValueArr = csv.split(",");
BasicDBList subStringList = new BasicDBList();
for (int i = 0; i < paramValueArr.length; i++) {
String val = paramValueArr[i].trim();
subStringList.add(val);
}
if (subStringList.isEmpty() == false) {
BasicDBList subList = new BasicDBList();
for (int i = 0; i < fields.length; i++) {
DBObject sub = new BasicDBObject();
sub.put(fields[i], new BasicDBObject("$in", subStringList));
subList.add(sub);
}
DBObject subBase = new BasicDBObject();
subBase.put("$or", subList);
return subBase;
}
return null;
}
static DBObject getCompExtensionQueryObject(String type, String[] fields,
String value, String comp) {
if( comp.equals("GT"))
{
BasicDBList subList = new BasicDBList();
for (int i = 0; i < fields.length; i++) {
DBObject sub = new BasicDBObject();
sub.put(fields[i], new BasicDBObject("$gt", value));
subList.add(sub);
}
DBObject subBase = new BasicDBObject();
subBase.put("$or", subList);
return subBase;
}else if( comp.equals("GE"))
{
BasicDBList subList = new BasicDBList();
for (int i = 0; i < fields.length; i++) {
DBObject sub = new BasicDBObject();
sub.put(fields[i], new BasicDBObject("$gte", value));
subList.add(sub);
}
DBObject subBase = new BasicDBObject();
subBase.put("$or", subList);
return subBase;
}else if( comp.equals("LT"))
{
BasicDBList subList = new BasicDBList();
for (int i = 0; i < fields.length; i++) {
DBObject sub = new BasicDBObject();
sub.put(fields[i], new BasicDBObject("$lt", value));
subList.add(sub);
}
DBObject subBase = new BasicDBObject();
subBase.put("$or", subList);
return subBase;
}else if( comp.equals("LE"))
{
BasicDBList subList = new BasicDBList();
for (int i = 0; i < fields.length; i++) {
DBObject sub = new BasicDBObject();
sub.put(fields[i], new BasicDBObject("$lte", value));
subList.add(sub);
}
DBObject subBase = new BasicDBObject();
subBase.put("$or", subList);
return subBase;
}
return null;
}
static DBObject getINQueryObject(String[] fields, String csv) {
String[] eqArr = csv.split(",");
BasicDBList subStringList = new BasicDBList();
for (int i = 0; i < eqArr.length; i++) {
String eqString = eqArr[i].trim();
subStringList.add(eqString);
}
if (subStringList.isEmpty() == false) {
BasicDBList subList = new BasicDBList();
for (int i = 0; i < fields.length; i++) {
DBObject sub = new BasicDBObject();
sub.put(fields[i], new BasicDBObject("$in", subStringList));
subList.add(sub);
}
DBObject subBase = new BasicDBObject();
subBase.put("$or", subList);
return subBase;
}
return null;
}
static DBObject getRegexQueryObject(String field, String csv) {
String[] wdArr = csv.split(",");
BasicDBList subPatternList = new BasicDBList();
for (int i = 0; i < wdArr.length; i++) {
String wdString = wdArr[i].trim();
DBObject subRegex = new BasicDBObject();
subRegex.put("$regex", Pattern.compile("^" + wdString + ".*"));
subPatternList.add(new BasicDBObject(field, subRegex));
}
DBObject subBase = new BasicDBObject();
subBase.put("$or", subPatternList);
return subBase;
}
}