protected DataListFilterQueryObject getCriteria(Map properties, DataListFilterQueryObject[] filterQueryObjects) {
Collection<String> params = new ArrayList<String>();
String condition = "";
DataListFilterQueryObject filter = processFilterQueryObjects(filterQueryObjects);
if (filter.getQuery() != null && !filter.getQuery().isEmpty()) {
condition = " WHERE " + filter.getQuery();
if (filter.getValues() != null && filter.getValues().length > 0) {
params.addAll(Arrays.asList(filter.getValues()));
}
}
String extraCondition = (properties.get("extraCondition") != null) ? properties.get("extraCondition").toString() : null;
String keyName = null;
if (properties.get(Userview.USERVIEW_KEY_NAME) != null) {
keyName = properties.get(Userview.USERVIEW_KEY_NAME).toString();
}
String keyValue = null;
if (properties.get(Userview.USERVIEW_KEY_VALUE) != null) {
keyValue = properties.get(Userview.USERVIEW_KEY_VALUE).toString();
}
if (extraCondition != null && extraCondition.contains(USERVIEW_KEY_SYNTAX)) {
if (keyValue == null) {
keyValue = "";
}
extraCondition = extraCondition.replaceAll(USERVIEW_KEY_SYNTAX, keyValue);
} else if (keyName != null && !keyName.isEmpty() && keyValue != null && !keyValue.isEmpty()) {
if (condition.trim().length() > 0) {
condition += " AND ";
} else {
condition += " WHERE ";
}
condition += getColumnName(keyName) + " = ?";
params.add(keyValue);
}
if (extraCondition != null && !extraCondition.isEmpty()) {
if (condition.trim().length() > 0) {
condition += " AND ";
} else {
condition += " WHERE ";
}
condition += extraCondition;
}
DataListFilterQueryObject queryObject = new DataListFilterQueryObject();
queryObject.setQuery(condition);
if (params.size() > 0) {
queryObject.setValues((String[]) params.toArray(new String[0]));
}
return queryObject;
}