use of org.akaza.openclinica.domain.rule.action.PropertyBean in project OpenClinica by OpenClinica.
the class DynamicsMetadataService method hide.
public void hide(Integer itemDataId, List<PropertyBean> properties) {
ItemDataBean itemDataBean = (ItemDataBean) getItemDataDAO().findByPK(itemDataId);
EventCRFBean eventCrfBean = (EventCRFBean) getEventCRFDAO().findByPK(itemDataBean.getEventCRFId());
for (PropertyBean propertyBean : properties) {
String oid = propertyBean.getOid();
ItemOrItemGroupHolder itemOrItemGroup = getItemOrItemGroup(oid);
// OID is an item
if (itemOrItemGroup.getItemBean() != null) {
ItemDataBean oidBasedItemData = getItemData(itemOrItemGroup.getItemBean(), eventCrfBean, itemDataBean.getOrdinal());
ItemFormMetadataBean itemFormMetadataBean = getItemFormMetadataDAO().findByItemIdAndCRFVersionId(itemOrItemGroup.getItemBean().getId(), eventCrfBean.getCRFVersionId());
DynamicsItemFormMetadataBean dynamicsMetadataBean = getDynamicsItemFormMetadataBean(itemFormMetadataBean, eventCrfBean, oidBasedItemData);
if (dynamicsMetadataBean == null && oidBasedItemData.getValue().equals("")) {
showItem(itemFormMetadataBean, eventCrfBean, oidBasedItemData);
} else if (dynamicsMetadataBean != null && dynamicsMetadataBean.isShowItem() && oidBasedItemData.getValue().equals("")) {
dynamicsMetadataBean.setShowItem(false);
getDynamicsItemFormMetadataDao().saveOrUpdate(dynamicsMetadataBean);
}
} else // OID is a group
{
// ItemGroupBean itemGroupBean = itemOrItemGroup.getItemGroupBean();
}
}
}
use of org.akaza.openclinica.domain.rule.action.PropertyBean in project OpenClinica by OpenClinica.
the class RulesPostImportContainerService method isRuleActionValid.
private void isRuleActionValid(RuleActionBean ruleActionBean, AuditableBeanWrapper<RuleSetBean> ruleSetBeanWrapper, EventDefinitionCRFBean eventDefinitionCRFBean, List<RuleSetBean> eventActionsRuleSetBean) {
RuleActionRunBean ruleActionRun = ruleActionBean.getRuleActionRun();
if (ruleActionBean.getActionType().getCode() != 6 && !ruleActionRun.getInitialDataEntry() && !ruleActionRun.getAdministrativeDataEntry() && !ruleActionRun.getBatch() && !ruleActionRun.getDoubleDataEntry() && !ruleActionRun.getImportDataEntry())
ruleSetBeanWrapper.error(createError("OCRERR_0050"));
String message = "";
String emailSubject = "";
if (ruleActionBean instanceof org.akaza.openclinica.domain.rule.action.NotificationActionBean) {
message = ((NotificationActionBean) ruleActionBean).getMessage();
emailSubject = ((NotificationActionBean) ruleActionBean).getSubject();
if (emailSubject.length() > 330)
ruleSetBeanWrapper.error(createError("OCRERR_0048"));
if (message.length() > 2040)
ruleSetBeanWrapper.error(createError("OCRERR_0049"));
}
if (ruleActionBean instanceof org.akaza.openclinica.domain.rule.action.EmailActionBean)
isUploadedRuleSupportedForEventAction(ruleSetBeanWrapper);
if (ruleActionBean instanceof DiscrepancyNoteActionBean)
isUploadedRuleSupportedForEventAction(ruleSetBeanWrapper);
if (ruleActionBean instanceof ShowActionBean) {
if (!isUploadedRuleSupportedForEventAction(ruleSetBeanWrapper)) {
List<PropertyBean> properties = ((ShowActionBean) ruleActionBean).getProperties();
//if (ruleActionBean.getRuleActionRun().getBatch() == true || ruleActionBean.getRuleActionRun().getImportDataEntry() == true) {
if (ruleActionBean.getRuleActionRun().getBatch() == true) {
ruleSetBeanWrapper.error("ShowAction " + ((ShowActionBean) ruleActionBean).toString() + " is not Valid. You cannot have Batch=\"true\". ");
//+ " is not Valid. You cannot have ImportDataEntry=\"true\" Batch=\"true\". ");
}
for (PropertyBean propertyBean : properties) {
String result = getExpressionService().checkValidityOfItemOrItemGroupOidInCrf(propertyBean.getOid(), ruleSetBeanWrapper.getAuditableBean());
// String result = getExpressionService().isExpressionValid(oid, ruleSetBeanWrapper.getAuditableBean(), 2) ? "OK" : "";
if (!result.equals("OK")) {
ruleSetBeanWrapper.error("ShowAction OID " + result + " is not Valid. ");
}
}
}
}
if (ruleActionBean instanceof HideActionBean) {
if (!isUploadedRuleSupportedForEventAction(ruleSetBeanWrapper)) {
List<PropertyBean> properties = ((HideActionBean) ruleActionBean).getProperties();
//if (ruleActionBean.getRuleActionRun().getBatch() == true || ruleActionBean.getRuleActionRun().getImportDataEntry() == true) {
if (ruleActionBean.getRuleActionRun().getBatch() == true) {
ruleSetBeanWrapper.error("HideAction " + ((HideActionBean) ruleActionBean).toString() + " is not Valid. You cannot have Batch=\"true\". ");
//+ " is not Valid. You cannot have ImportDataEntry=\"true\" Batch=\"true\". ");
}
for (PropertyBean propertyBean : properties) {
String result = getExpressionService().checkValidityOfItemOrItemGroupOidInCrf(propertyBean.getOid(), ruleSetBeanWrapper.getAuditableBean());
// String result = getExpressionService().isExpressionValid(oid, ruleSetBeanWrapper.getAuditableBean(), 2) ? "OK" : "";
if (!result.equals("OK")) {
ruleSetBeanWrapper.error("HideAction OID " + result + " is not Valid. ");
}
}
}
}
if (ruleActionBean instanceof InsertActionBean) {
if (!isUploadedRuleSupportedForEventAction(ruleSetBeanWrapper)) {
DataBinder dataBinder = new DataBinder(ruleActionBean);
Errors errors = dataBinder.getBindingResult();
InsertActionValidator insertActionValidator = getInsertActionValidator();
insertActionValidator.setEventDefinitionCRFBean(eventDefinitionCRFBean);
insertActionValidator.setRuleSetBean(ruleSetBeanWrapper.getAuditableBean());
insertActionValidator.setExpressionService(expressionService);
insertActionValidator.validate(ruleActionBean, errors);
if (errors.hasErrors()) {
ruleSetBeanWrapper.error("InsertAction is not valid: " + errors.getAllErrors().get(0).getCode());
}
}
}
if (ruleActionBean instanceof RandomizeActionBean) {
if (!isUploadedRuleSupportedForEventAction(ruleSetBeanWrapper)) {
DataBinder dataBinder = new DataBinder(ruleActionBean);
Errors errors = dataBinder.getBindingResult();
RandomizeActionValidator randomizeActionValidator = getRandomizeActionValidator();
randomizeActionValidator.setEventDefinitionCRFBean(eventDefinitionCRFBean);
randomizeActionValidator.setRuleSetBean(ruleSetBeanWrapper.getAuditableBean());
randomizeActionValidator.setExpressionService(expressionService);
randomizeActionValidator.validate(ruleActionBean, errors);
RandomizeActionBean randomizeActionBean = (RandomizeActionBean) ruleActionBean;
// ruleSetBeanWrapper.error(createError("OCRERR_0050"));
if (randomizeActionBean.getStratificationFactors() != null) {
for (StratificationFactorBean factor : randomizeActionBean.getStratificationFactors()) {
if (factor.getStratificationFactor() != null && factor.getStratificationFactor().getValue() != null && factor.getStratificationFactor().getValue().length() != 0) {
String expressionContextName = factor.getStratificationFactor().getContextName();
Context context = expressionContextName != null ? Context.getByName(expressionContextName) : Context.OC_RULES_V1;
factor.getStratificationFactor().setContext(context);
ExpressionBean expBean = factor.getStratificationFactor();
String expValue = expBean.getValue();
String prefix = "STUDYGROUPCLASSLIST";
boolean sgcExist = false;
if (expValue.startsWith("SS.")) {
String param = expValue.split("\\.", -1)[1].trim();
if (param.startsWith(prefix)) {
String gcName = param.substring(21, param.indexOf("\"]"));
StudyGroupClassDAO studyGroupClassDAO = new StudyGroupClassDAO(ds);
ArrayList<StudyGroupClassBean> studyGroupClasses = studyGroupClassDAO.findAllByStudy(currentStudy);
for (StudyGroupClassBean studyGroupClass : studyGroupClasses) {
if (studyGroupClass.getName().equalsIgnoreCase(gcName.trim())) {
sgcExist = true;
break;
}
}
}
if (!param.equalsIgnoreCase("BIRTHDATE") && !param.equalsIgnoreCase("SEX") && !sgcExist) {
ruleSetBeanWrapper.error(createError("OCRERR_0051", expBean.getValue()));
}
} else {
isStratificationExpressionValid(expBean, ruleSetBeanWrapper);
}
}
}
}
if (errors.hasErrors())
ruleSetBeanWrapper.error("Randomize Action is not valid: " + errors.getAllErrors().get(0).getCode());
}
}
if (ruleActionBean instanceof EventActionBean) {
DataBinder dataBinder = new DataBinder(ruleActionBean);
Errors errors = dataBinder.getBindingResult();
eventActionValidator.setRuleSetBeanWrapper(ruleSetBeanWrapper);
eventActionValidator.setExpressionService(expressionService);
eventActionValidator.setRespage(respage);
eventActionValidator.validate(ruleActionBean, errors);
String currentTarget = null;
currentTarget = ruleSetBeanWrapper.getAuditableBean().getOriginalTarget().getValue();
if (currentTarget.contains(".STARTDATE") || currentTarget.contains(".STATUS")) {
if (ruleActionBean.getActionType().getCode() == 6)
//Validation , move to Validate Rule page under eventActinValidator
inValidateInfiniteLoop(ruleActionBean, ruleSetBeanWrapper, eventActionsRuleSetBean);
} else {
ruleSetBeanWrapper.error(createError("OCRERR_0044"));
}
if (errors.hasErrors()) {
ruleSetBeanWrapper.error("EventAction is not valid: " + errors.getAllErrors().get(0).getDefaultMessage());
}
}
}
use of org.akaza.openclinica.domain.rule.action.PropertyBean in project OpenClinica by OpenClinica.
the class EventActionValidator method validate.
public void validate(Object obj, Errors e) {
EventActionBean eventActionBean = (EventActionBean) obj;
validateOidInAction(eventActionBean.getOc_oid_reference(), e);
boolean foundStartDate = false;
for (int i = 0; i < eventActionBean.getProperties().size(); i++) {
PropertyBean propertyBean = eventActionBean.getProperties().get(i);
if (!foundStartDate && propertyBean.getProperty().equals("STARTDATE")) {
foundStartDate = true;
if (!isEventActionValueExpressionValid(propertyBean, ruleSetBeanWrapper))
getRuleSetBeanWrapper().error(createError("OCRERR_0035"));
} else //Throw error for getting more than one STARTDATE property
if (propertyBean.getProperty().equals("STARTDATE") && foundStartDate)
getRuleSetBeanWrapper().error(createError("OCRERR_0037"));
else
//Throw error for unknown Property value
getRuleSetBeanWrapper().error(createError("OCRERR_0036"));
}
}
use of org.akaza.openclinica.domain.rule.action.PropertyBean in project OpenClinica by OpenClinica.
the class InsertActionValidator method validate.
public void validate(Object obj, Errors e) {
InsertActionBean insertActionBean = (InsertActionBean) obj;
for (int i = 0; i < insertActionBean.getProperties().size(); i++) {
String p = "properties[" + i + "].";
PropertyBean propertyBean = insertActionBean.getProperties().get(i);
ValidationUtils.rejectIfEmpty(e, p + "oid", "oid.empty");
validateOidInPropertyBean(propertyBean, e, p);
if (propertyBean.getValueExpression() != null && propertyBean.getValueExpression().getValue() != null && propertyBean.getValueExpression().getValue().length() != 0) {
String expressionContextName = propertyBean.getValueExpression().getContextName();
Context context = expressionContextName != null ? Context.getByName(expressionContextName) : Context.OC_RULES_V1;
propertyBean.getValueExpression().setContext(context);
validateValueExpressionInPropertyBean(propertyBean, e, p);
} else {
if (propertyBean.getValue() == null || propertyBean.getValue().length() == 0) {
ValidationUtils.rejectIfEmpty(e, p + "value", "value.empty");
} else {
checkValidity(getExpressionService().getItemBeanFromExpression(propertyBean.getOid()), propertyBean.getValue(), p, e);
}
}
}
}
use of org.akaza.openclinica.domain.rule.action.PropertyBean in project OpenClinica by OpenClinica.
the class RandomizeActionValidator method validate.
public void validate(Object obj, Errors e) {
RandomizeActionBean randomizeActionBean = (RandomizeActionBean) obj;
String p = "";
for (int i = 0; i < randomizeActionBean.getProperties().size(); i++) {
p = "properties[" + i + "].";
PropertyBean propertyBean = randomizeActionBean.getProperties().get(i);
ValidationUtils.rejectIfEmpty(e, p + "oid", "oid.empty");
validateOidInPropertyBean(propertyBean, e, p);
}
}
Aggregations