package org.akaza.openclinica.config;
import java.util.List;
import org.akaza.openclinica.bean.core.Role;
import org.akaza.openclinica.bean.core.Status;
import org.akaza.openclinica.bean.login.StudyUserRoleBean;
import org.akaza.openclinica.bean.login.UserAccountBean;
import org.akaza.openclinica.bean.managestudy.StudyBean;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
public class OpenClinicaRedisSerializer extends JdkSerializationRedisSerializer {
@Override
public Object deserialize(byte[] bytes) {
Object obj = super.deserialize(bytes);
if (obj instanceof UserAccountBean) {
List<StudyUserRoleBean> roles = ((UserAccountBean) obj).getRoles();
for (StudyUserRoleBean studyUserRole:roles) {
if (studyUserRole.getRole() != null) {
Integer roleId = studyUserRole.getRole().getId();
switch (roleId) {
case 0: studyUserRole.setRole(Role.INVALID); break;
case 1: studyUserRole.setRole(Role.ADMIN); break;
case 2: studyUserRole.setRole(Role.COORDINATOR); break;
case 3: studyUserRole.setRole(Role.STUDYDIRECTOR); break;
case 4: studyUserRole.setRole(Role.INVESTIGATOR); break;
case 5: studyUserRole.setRole(Role.RESEARCHASSISTANT); break;
case 6: studyUserRole.setRole(Role.MONITOR); break;
case 7: studyUserRole.setRole(Role.RESEARCHASSISTANT2); break;
}
}
}
}
if (obj instanceof StudyUserRoleBean) {
StudyUserRoleBean studyUserRole = (StudyUserRoleBean) obj;
if (studyUserRole.getRole() != null) {
Integer roleId = studyUserRole.getRole().getId();
switch (roleId) {
case 0: studyUserRole.setRole(Role.INVALID); break;
case 1: studyUserRole.setRole(Role.ADMIN); break;
case 2: studyUserRole.setRole(Role.COORDINATOR); break;
case 3: studyUserRole.setRole(Role.STUDYDIRECTOR); break;
case 4: studyUserRole.setRole(Role.INVESTIGATOR); break;
case 5: studyUserRole.setRole(Role.RESEARCHASSISTANT); break;
case 6: studyUserRole.setRole(Role.MONITOR); break;
case 7: studyUserRole.setRole(Role.RESEARCHASSISTANT2); break;
}
}
}
if (obj instanceof StudyBean) {
StudyBean study = (StudyBean) obj;
if (study.getStatus() != null) {
Integer statusId = study.getStatus().getId();
switch (statusId) {
case 0: study.setStatus(Status.INVALID); break;
case 1: study.setStatus(Status.AVAILABLE); break;
case 2: study.setStatus(Status.UNAVAILABLE); break;
case 3: study.setStatus(Status.PRIVATE); break;
case 4: study.setStatus(Status.PENDING); break;
case 5: study.setStatus(Status.DELETED); break;
case 6: study.setStatus(Status.LOCKED); break;
case 7: study.setStatus(Status.AUTO_DELETED); break;
case 8: study.setStatus(Status.SIGNED); break;
case 9: study.setStatus(Status.FROZEN); break;
case 10: study.setStatus(Status.SOURCE_DATA_VERIFICATION); break;
case 11: study.setStatus(Status.RESET); break;
}
}
}
return obj;
}
@Override
public byte[] serialize(Object object) {
return super.serialize(object);
}
}