use of org.akaza.openclinica.domain.datamap.StudyUserRoleId in project OpenClinica by OpenClinica.
the class UserProcessor method process.
@Override
public ProcessorEnum process(SubmissionContainer container) throws Exception {
logger.info("Executing User Processor.");
Errors errors = container.getErrors();
String contextStudySubjectOid = container.getSubjectContext().get("studySubjectOID");
String studySubjectOid = container.getSubject().getOcOid();
String parentStudyOid = getParentStudy(container.getStudy().getOc_oid()).getOc_oid();
String userAccountId = container.getSubjectContext().get("userAccountID");
// Check if UserAccount is specified in subject context
if (!StringUtils.isEmpty(userAccountId)) {
UserAccount existingAccount = userAccountDao.findByUserId(Integer.valueOf(userAccountId));
if (existingAccount == null) {
logger.info("Could not find existing user account from provided context. Aborting submission.");
errors.reject("Could not find existing user account from provided context. Aborting submission.");
throw new Exception("Could not find existing user account from provided context. Aborting submission.");
}
container.setUser(existingAccount);
// if study subject oid is not null, just look up user account
} else if (contextStudySubjectOid != null) {
String userName = parentStudyOid + "." + contextStudySubjectOid;
UserAccount existingAccount = userAccountDao.findByUserName(userName);
if (existingAccount == null) {
logger.info("Could not find existing user account. Aborting submission.");
errors.reject("Could not find existing user account. Aborting submission.");
throw new Exception("Could not find existing user account. Aborting submission.");
}
container.setUser(existingAccount);
} else {
String userName = parentStudyOid + "." + studySubjectOid;
UserAccount existingAccount = userAccountDao.findByUserName(userName);
if (existingAccount != null) {
container.setUser(existingAccount);
} else {
//Create user account
UserAccount rootUser = userAccountDao.findByUserId(1);
UserAccount createdUser = new UserAccount();
createdUser.setUserName(parentStudyOid + "." + container.getSubject().getOcOid());
createdUser.setFirstName(INPUT_FIRST_NAME);
createdUser.setLastName(INPUT_LAST_NAME);
createdUser.setEmail(INPUT_EMAIL);
createdUser.setInstitutionalAffiliation(INPUT_INSTITUTION);
createdUser.setActiveStudy(container.getStudy());
String passwordHash = UserAccountBean.LDAP_PASSWORD;
createdUser.setPasswd(passwordHash);
createdUser.setPasswdTimestamp(null);
createdUser.setDateLastvisit(null);
createdUser.setStatus(Status.DELETED);
createdUser.setPasswdChallengeQuestion("");
createdUser.setPasswdChallengeAnswer("");
createdUser.setPhone("");
createdUser.setUserAccount(rootUser);
createdUser.setRunWebservices(false);
createdUser.setActiveStudy(container.getStudy());
UserType type = userTypeDao.findByUserTypeId(2);
createdUser.setUserType(type);
createdUser.setEnabled(true);
createdUser.setAccountNonLocked(true);
createdUser.setAccessCode("");
createdUser.setApiKey("");
createdUser = userAccountDao.saveOrUpdate(createdUser);
container.setUser(createdUser);
//Create study user role
Date date = new Date();
StudyUserRoleId studyUserRoleId = new StudyUserRoleId(Role.RESEARCHASSISTANT2.getName(), container.getStudy().getStudyId(), Status.AUTO_DELETED.getCode(), rootUser.getUserId(), date, createdUser.getUserName());
StudyUserRole studyUserRole = new StudyUserRole(studyUserRoleId);
studyUserRoleDao.saveOrUpdate(studyUserRole);
//TODO: StudyUserRole object had to be heavily modified. May need fixing. Also roleName specified
// doesn't exist in role table. May need to fix that.
// This table should also foreign key to user_account but doesn't.
}
}
return ProcessorEnum.PROCEED;
}
use of org.akaza.openclinica.domain.datamap.StudyUserRoleId in project OpenClinica by OpenClinica.
the class OdmImportServiceImpl method importOdmToOC.
@Transactional
public void importOdmToOC(ODM odm) {
UserAccount userAccount = getCurrentUser();
// TODO add validation to all entities
ODMcomplexTypeDefinitionStudy odmStudy = odm.getStudy().get(0);
Study study = saveOrUpdateStudy(odm, userAccount, odmStudy);
ParticipantPortalRegistrar portal = new ParticipantPortalRegistrar();
portal.registerStudy(study.getOc_oid(), study.getOc_oid(), study.getName());
StudyParameterValue spv = getStudyParameterValueDao().findByStudyIdParameter(study.getStudyId(), "participantPortal");
// Update OC Study configuration
if (spv == null) {
spv = new StudyParameterValue();
spv.setStudy(study);
}
spv.setValue("enabled");
spv = getStudyParameterValueDao().saveOrUpdate(spv);
StudyUserRole studyUserRole = null;
StudyUserRoleId studyUserRoleId = null;
Form[] fmCrfs = getAllCrfsByProtIdFromFormManager(study);
ArrayList<StudyUserRole> surRoles = getStudyUserRoleDao().findAllUserRolesByUserAccount(userAccount, study.getStudyId(), study.getStudyId());
if (surRoles.size() == 0) {
studyUserRoleId = new StudyUserRoleId();
studyUserRole = new StudyUserRole();
studyUserRole = getStudyUserRoleDao().saveOrUpdate(populateUserRole(study, userAccount, studyUserRole, studyUserRoleId));
}
StudyEventDefinition studyEventDefinition = null;
List<ODMcomplexTypeDefinitionMetaDataVersion> odmMetadataVersions = odmStudy.getMetaDataVersion();
List<ODMcomplexTypeDefinitionStudyEventDef> odmStudyEventDefs = saveOrUpdateEvent(userAccount, study, odmMetadataVersions);
CrfBean crf = null;
FormLayout formLayout = null;
saveOrUpdateCrf(userAccount, study, odmMetadataVersions, fmCrfs);
List<ODMcomplexTypeDefinitionStudyEventRef> odmStudyEventRefs = odmMetadataVersions.get(0).getProtocol().getStudyEventRef();
for (ODMcomplexTypeDefinitionStudyEventRef odmStudyEventRef : odmStudyEventRefs) {
for (ODMcomplexTypeDefinitionStudyEventDef odmStudyEventDef : odmStudyEventDefs) {
if (odmStudyEventDef.getOID().equals(odmStudyEventRef.getStudyEventOID())) {
studyEventDefinition = getStudyEventDefDao().findByOcOID(odmStudyEventDef.getOID());
studyEventDefinition.setOrdinal(odmStudyEventRef.getOrderNumber().intValue());
studyEventDefinition = getStudyEventDefDao().saveOrUpdate(studyEventDefinition);
List<EventDefinitionCrf> jsonEventDefCrfList = new ArrayList<>();
EventDefinitionCrf eventDefinitionCrf = null;
for (ODMcomplexTypeDefinitionFormRef odmFormRef : odmStudyEventDef.getFormRef()) {
crf = getCrfDao().findByOcOID(odmFormRef.getFormOID());
eventDefinitionCrf = getEventDefinitionCrfDao().findByStudyEventDefinitionIdAndCRFIdAndStudyId(studyEventDefinition.getStudyEventDefinitionId(), crf.getCrfId(), study.getStudyId());
String defaultVersionName = null;
OCodmComplexTypeDefinitionConfigurationParameters conf = odmFormRef.getConfigurationParameters();
List<OCodmComplexTypeDefinitionFormLayoutRef> formLayoutRefs = odmFormRef.getFormLayoutRef();
if (formLayoutRefs.size() == 1 && formLayoutRefs.get(0).getIsDefaultVersion() == null) {
defaultVersionName = formLayoutRefs.get(0).getOID();
} else {
for (OCodmComplexTypeDefinitionFormLayoutRef formLayoutRef : formLayoutRefs) {
if (formLayoutRef.getIsDefaultVersion().equalsIgnoreCase("Yes")) {
defaultVersionName = formLayoutRef.getOID();
}
}
}
if (defaultVersionName == null) {
defaultVersionName = formLayoutRefs.get(0).getOID();
}
formLayout = getFormLayoutDao().findByNameCrfId(defaultVersionName, crf.getCrfId());
EventDefinitionCrfDTO edcObj = new EventDefinitionCrfDTO();
edcObj.setUserAccount(userAccount);
edcObj.setConf(conf);
edcObj.setCrf(crf);
edcObj.setEventDefinitionCrf(eventDefinitionCrf);
edcObj.setOdmFormRef(odmFormRef);
edcObj.setStudy(study);
edcObj.setFormLayout(formLayout);
edcObj.setStudyEventDefinition(studyEventDefinition);
EDCTagDTO populateEDCTagParameter = new EDCTagDTO();
populateEDCTagParameter.setConf(conf);
populateEDCTagParameter.setConf(conf);
populateEDCTagParameter.setEventDefinitionCrf(eventDefinitionCrf);
populateEDCTagParameter.setUserAccount(userAccount);
eventDefinitionCrf = saveOrUpdateEventDefnCrf(new EventDefinitionCrfDTO(edcObj));
saveOrUpdateEDCTag(new EDCTagDTO(populateEDCTagParameter), studyEventDefinition, crf);
jsonEventDefCrfList.add(eventDefinitionCrf);
}
List<EventDefinitionCrf> ocEventDefCrfList = getEventDefinitionCrfDao().findAvailableByStudyEventDefStudy(studyEventDefinition.getStudyEventDefinitionId(), study.getStudyId());
for (EventDefinitionCrf ocEventDefCrf : ocEventDefCrfList) {
if (!jsonEventDefCrfList.contains(ocEventDefCrf)) {
ocEventDefCrf.setStatusId(Status.DELETED.getCode());
getEventDefinitionCrfDao().saveOrUpdate(ocEventDefCrf);
}
}
}
}
}
}
Aggregations