* @throws ParserException
* @throws ExpressionParserException
*/
public DatasourceFilter getPreparedFilter(CRConfig config, Datasource ds) throws ParserException,
ExpressionParserException {
DatasourceFilter dsFilter;
String filter = "";
if (ds == null) {
ds = config.getDatasource();
}
if ((this.getRequestFilter() == null || this.getRequestFilter().equals("")) && this.getContentid() != null
&& !this.getContentid().equals("")) {
this.setRequestFilter("object.contentid=='" + this.getContentid() + "'");
}
// TEST IF REQUEST FILTER IS SAVE
Expression expression = PortalConnectorFactory.createExpression(this.getRequestFilter());
// IF NO EXCEPTION IS THROWN IN THE ABOVE STATEMENT, FILTER IS
// CONSIDERED TO BE SAVE
// ADD APPLICATION RULE IF IT IS SET
if (config.getApplicationRule() == null || config.getApplicationRule().equals("")) {
filter = this.getRequestFilter();
} else if (config.getApplicationRule() != null && !config.getApplicationRule().equals("")
&& this.getRequestFilter() != null && !this.getRequestFilter().equals("")) {
filter = "(" + this.getRequestFilter() + ") AND " + config.getApplicationRule();
} else if (config.getApplicationRule() != null && !config.getApplicationRule().equals("")
&& (this.getRequestFilter() == null || this.getRequestFilter().equals(""))) {
filter = config.getApplicationRule();
}
log.debug("Using rule: " + filter);
expression = PortalConnectorFactory.createExpression(filter);
dsFilter = ds.createDatasourceFilter(expression);
Iterator<String> it = this.getObjectsToDeploy().keySet().iterator();
while (it.hasNext()) {
String key = it.next();
dsFilter.addBaseResolvable(key, this.getObjectsToDeploy().get(key));
}
return (dsFilter);
}