/*
* OpenClinica is distributed under the
* GNU Lesser General Public License (GNU LGPL).
* For details see: http://www.openclinica.org/license
*
* Copyright 2003-2008 Akaza Research
*/
package org.akaza.openclinica.bean.rule.expression;
import org.akaza.openclinica.exception.OpenClinicaSystemException;
import org.akaza.openclinica.logic.expressionTree.ExpressionNode;
import org.akaza.openclinica.logic.expressionTree.OpenClinicaExpressionParser;
import org.akaza.openclinica.service.rule.expression.ExpressionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.ResourceBundle;
import java.util.regex.Pattern;
import javax.sql.DataSource;
/**
* @author Krikor Krumlian
*
*/
public class OpenClinicaV1ExpressionProcessor implements ExpressionProcessor {
protected final Logger logger = LoggerFactory.getLogger(getClass().getName());
ExpressionBean e;
Pattern[] pattern;
ExpressionNode node;
OpenClinicaExpressionParser oep;
DataSource ds;
ExpressionService expressionService;
ExpressionObjectWrapper expressionWrapper;
ResourceBundle respage;
public OpenClinicaV1ExpressionProcessor(ExpressionObjectWrapper expressionWrapper) {
this.expressionWrapper = expressionWrapper;
this.e = expressionWrapper.getExpressionBean();
}
public String isRuleAssignmentExpressionValid() {
try {
expressionService = null;// new ExpressionService(expressionWrapper);
if (expressionService.ruleSetExpressionChecker(e.getValue())) {
return null;
} else {
return "Expression Syntax InValid";
}
} catch (OpenClinicaSystemException e) {
return e.getMessage();
}
}
public String isRuleExpressionValid() {
try {
oep = null; // new OpenClinicaExpressionParser(expressionWrapper);
String result = oep.parseAndTestEvaluateExpression(e.getValue());
logger.info("Test Result : " + result);
return null;
} catch (OpenClinicaSystemException e) {
return e.getMessage();
}
}
public String testEvaluateExpression() {
try {
oep = null; // new OpenClinicaExpressionParser(expressionWrapper);
String result = oep.parseAndTestEvaluateExpression(e.getValue());
logger.info("Test Result : " + result);
return "Pass : " + result;
} catch (OpenClinicaSystemException e) {
return "Fail : " + e.getMessage();
}
}
public HashMap<String, String> testEvaluateExpression(HashMap<String, String> testValues) {
try {
oep = null; // new OpenClinicaExpressionParser(expressionWrapper);
HashMap<String, String> resultAndTestValues = oep.parseAndTestEvaluateExpression(e.getValue(), testValues);
String returnedResult = resultAndTestValues.get("result");
logger.info("Test Result : " + returnedResult);
resultAndTestValues.put("result", "Pass : " + returnedResult);
return resultAndTestValues;
} catch (OpenClinicaSystemException e) {
testValues.put("result", "Fail : " + e.getMessage());
return testValues;
}
}
public boolean process() {
return false;
}
public void setExpression(ExpressionBean e) {
this.e = e;
}
public void setRespage(ResourceBundle respage) {
this.respage = respage;
}
}