package org.akaza.openclinica.ws.validator; import org.akaza.openclinica.bean.core.Role; import org.akaza.openclinica.bean.core.Status; import org.akaza.openclinica.bean.managestudy.StudyBean; import org.akaza.openclinica.dao.login.UserAccountDAO; import org.akaza.openclinica.dao.managestudy.StudyDAO; import org.akaza.openclinica.ws.bean.BaseStudyDefinitionBean; import org.springframework.validation.Errors; import org.springframework.validation.Validator; import javax.sql.DataSource; public class CRFDataImportValidator implements Validator { DataSource dataSource; StudyDAO studyDAO; UserAccountDAO userAccountDAO; BaseVSValidatorImplementation helper; public CRFDataImportValidator(DataSource dataSource) { this.dataSource = dataSource; helper = new BaseVSValidatorImplementation(); } @SuppressWarnings("rawtypes") public boolean supports(Class clazz) { // return CRFDataImportBean.class.equals(clazz); return BaseStudyDefinitionBean.class.equals(clazz); } public void validate(Object obj, Errors e) { //CRFDataImportBean crfDataImportBean = (CRFDataImportBean) obj; BaseStudyDefinitionBean crfDataImportBean = (BaseStudyDefinitionBean) obj; if (crfDataImportBean.getStudyUniqueId() == null ) { e.reject("studyEventDefinitionRequestValidator.study_does_not_exist"); return; } Status[] included_status= new Status[]{Status.AVAILABLE , Status.PENDING}; StudyBean study = helper.verifyStudyByOID( getStudyDAO(), crfDataImportBean.getStudyUniqueId(), included_status, e); if (study == null) return; boolean isRoleVerified = helper.verifyRole(crfDataImportBean.getUser(), study.getId(), -1, Role.MONITOR, e); if ( !isRoleVerified ) return; // StudyBean study = getStudyDAO().findByOid(crfDataImportBean.getStudyUniqueId()); // if (study == null) { // e.reject("subjectTransferValidator.study_does_not_exist", new Object[] { crfDataImportBean.getStudyUniqueId() }, "Study identifier you specified " // + crfDataImportBean.getStudyUniqueId() + " does not correspond to a valid study."); // return; // } // //validate study status // if ( !( study.getStatus().isAvailable() || study.getStatus().isPending() )) { // e.reject("subjectTransferValidator.study_status_wrong", new Object[] { crfDataImportBean.getStudyUniqueId() }, "Study " // + crfDataImportBean.getStudyUniqueId() +" has wrong status."); // return; // } // //not monitor // StudyUserRoleBean role = crfDataImportBean.getUser().getRoleByStudy(study); // if (role.getId() == 0 || role.getRole().equals(Role.MONITOR) || role.getStatus() != Status.AVAILABLE) { // e.reject("studyEventDefinitionRequestValidator.insufficient_permissions", // "You do not have sufficient privileges to proceed with this operation."); // return; // } // crfDataImportBean.setStudy(study); } public StudyDAO getStudyDAO() { return this.studyDAO != null ? studyDAO : new StudyDAO(dataSource); } public UserAccountDAO getUserAccountDAO() { return this.userAccountDAO != null ? userAccountDAO : new UserAccountDAO(dataSource); } }