package fi.otavanopisto.muikku.plugins.schooldatapyramus; import java.util.logging.Logger; import javax.inject.Inject; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import fi.otavanopisto.muikku.schooldata.SchoolDataIdentifier; import fi.otavanopisto.pyramus.rest.model.UserRole; public class PyramusIdentifierMapper { @Inject private Logger logger; private static final String STUDENT_PREFIX = "STUDENT-"; private static final String STAFF_PREFIX = "STAFF-"; private static final String WORKSPACE_STUDENT_PREFIX = "STUDENT-"; private static final String WORKSPACE_STAFF_PREFIX = "STAFF-"; private static final String WORKSPACE_STAFF_ROLE_PREFIX = "WS-"; private static final String ENVIRONMENT_ROLE_PREFIX = "ENV-"; private static final String STUDENTGROUP_PREFIX = "USERGROUP-"; private static final String STUDENTGROUPSTUDENT_PREFIX = "USERGROUPSTUDENT-"; private static final String STUDENTGROUPSTAFFMEMBER_PREFIX = "USERGROUPSTAFFMEMBER-"; private static final String STUDYPROGRAMME_PREFIX = "STUDYPROGRAMME-"; private static final String STUDYPROGRAMMESTUDENT_PREFIX = "STUDYPROGRAMMESTUDENT-"; private static final String TRANSFERCREDIT_PREFIX = "STC-"; private static final String SCHOOL_PREFIX = "SC-"; public String getWorkspaceIdentifier(Long courseId) { return courseId != null ? courseId.toString() : null; } public Long getPyramusCourseId(String workspaceIdentifier) { return NumberUtils.createLong(workspaceIdentifier); } public String getWorkspaceStudentIdentifier(Long id) { return WORKSPACE_STUDENT_PREFIX + id.toString(); } public SchoolDataIdentifier getGradeIdentifier(Long gradeId) { if (gradeId == null) { return null; } return new SchoolDataIdentifier(gradeId.toString(), SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); } public SchoolDataIdentifier getGradingScaleIdentifier(Long gradingScaleId) { if (gradingScaleId == null) { return null; } return new SchoolDataIdentifier(gradingScaleId.toString(), SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); } public Long getPyramusCourseStudentId(String workspaceStudentIdentifier) { if (StringUtils.startsWith(workspaceStudentIdentifier, WORKSPACE_STUDENT_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(workspaceStudentIdentifier, WORKSPACE_STUDENT_PREFIX.length())); } return null; } public String getWorkspaceStaffIdentifier(Long id) { return WORKSPACE_STAFF_PREFIX + id.toString(); } public Long getPyramusCourseStaffId(String workspaceStudentIdentifier) { if (StringUtils.startsWith(workspaceStudentIdentifier, WORKSPACE_STAFF_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(workspaceStudentIdentifier, WORKSPACE_STAFF_PREFIX.length())); } return null; } public String getStaffIdentifier(Long id) { return STAFF_PREFIX + id.toString(); } public Long getPyramusStaffId(String identifier) { if (StringUtils.startsWith(identifier, STAFF_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(identifier, STAFF_PREFIX.length())); } return null; } public String getStudentIdentifier(Long id) { return STUDENT_PREFIX + id.toString(); } public Long getPyramusStudentId(String identifier) { if (StringUtils.startsWith(identifier, STUDENT_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(identifier, STUDENT_PREFIX.length())); } return null; } public String getWorkspaceStaffRoleIdentifier(Long id) { return WORKSPACE_STAFF_ROLE_PREFIX + id; } public String getPyramusCourseRoleId(String identifier) { if (StringUtils.startsWith(identifier, WORKSPACE_STAFF_ROLE_PREFIX)) { return StringUtils.substring(identifier, WORKSPACE_STAFF_ROLE_PREFIX.length()); } return null; } public String getEnvironmentRoleIdentifier(UserRole id) { return ENVIRONMENT_ROLE_PREFIX + id.name(); } public UserRole getPyramusUserRole(String identifier) { if (StringUtils.startsWith(identifier, ENVIRONMENT_ROLE_PREFIX)) { return UserRole.valueOf(StringUtils.substring(identifier, ENVIRONMENT_ROLE_PREFIX.length())); } return null; } public String getWorkspaceStudentRoleIdentifier() { return "WS-STUDENT"; } public String getSubjectIdentifier(Long pyramusSubjectId) { return pyramusSubjectId == null ? null : String.valueOf(pyramusSubjectId); } public Long getPyramusSubjectId(String subjectIdentifier) { return NumberUtils.createLong(subjectIdentifier); } public SchoolDataIdentifier getEducationTypeIdentifier(Long pyramusEducationTypeId) { return pyramusEducationTypeId == null ? null : new SchoolDataIdentifier(String.valueOf(pyramusEducationTypeId), SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); } public Long getPyramusEducationTypeId(String educationTypeIdentifier) { return NumberUtils.createLong(educationTypeIdentifier); } public String getCourseLengthUnitIdentifier(Long pyramusEducationalTimeUnitId) { return pyramusEducationalTimeUnitId == null ? null : String.valueOf(pyramusEducationalTimeUnitId); } public Long getPyramusEducationalTimeUnitId(String lengthUnitIdentifier) { if (!StringUtils.isNumeric(lengthUnitIdentifier)) { return null; } return NumberUtils.createLong(lengthUnitIdentifier); } public SchoolDataIdentifier getWorkspaceTypeIdentifier(Long pyramusCourseTypeId) { return pyramusCourseTypeId == null ? null : new SchoolDataIdentifier(String.valueOf(pyramusCourseTypeId), SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); } public Long getPyramusCourseTypeId(SchoolDataIdentifier workspaceTypeIdentifier) { return workspaceTypeIdentifier != null ? NumberUtils.createLong(workspaceTypeIdentifier.getIdentifier()) : null; } public String getWorkspaceCourseIdentifier(Long subjectId, Integer courseNumber) { return (subjectId == null)||(courseNumber == null) ? null : String.format("%d/%d", subjectId, courseNumber); } public Long getPyramusStudentGroupId(String studentGroupIdentifier){ if (StringUtils.startsWith(studentGroupIdentifier, STUDENTGROUP_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(studentGroupIdentifier, STUDENTGROUP_PREFIX.length())); } return null; } public String getStudentGroupIdentifier(Long pyramusStudentGroupId){ return pyramusStudentGroupId == null ? null : STUDENTGROUP_PREFIX + String.valueOf(pyramusStudentGroupId); } public Long getPyramusStudentGroupStudentId(String groupUserIdentifier) { if (StringUtils.startsWith(groupUserIdentifier, STUDENTGROUPSTUDENT_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(groupUserIdentifier, STUDENTGROUPSTUDENT_PREFIX.length())); } return null; } public String getStudentGroupStudentIdentifier(Long pyramusGroupUserId){ return pyramusGroupUserId == null ? null : STUDENTGROUPSTUDENT_PREFIX + String.valueOf(pyramusGroupUserId); } public Long getPyramusStudentGroupStaffMemberId(String groupUserIdentifier) { if (StringUtils.startsWith(groupUserIdentifier, STUDENTGROUPSTAFFMEMBER_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(groupUserIdentifier, STUDENTGROUPSTAFFMEMBER_PREFIX.length())); } return null; } public String getStudentGroupStaffMemberIdentifier(Long pyramusGroupUserId){ return pyramusGroupUserId == null ? null : STUDENTGROUPSTAFFMEMBER_PREFIX + String.valueOf(pyramusGroupUserId); } public StudentGroupUserType getStudentGroupUserType(String identifier) { if (StringUtils.startsWith(identifier, STUDENTGROUPSTAFFMEMBER_PREFIX)) return StudentGroupUserType.STAFFMEMBER; if (StringUtils.startsWith(identifier, STUDENTGROUPSTUDENT_PREFIX)) return StudentGroupUserType.STUDENT; return null; } enum StudentGroupUserType { STUDENT, STAFFMEMBER } public Long getPyramusStudyProgrammeId(String studyProgrammeIdentifier) { if (StringUtils.startsWith(studyProgrammeIdentifier, STUDYPROGRAMME_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(studyProgrammeIdentifier, STUDYPROGRAMME_PREFIX.length())); } return null; } public String getStudyProgrammeIdentifier(Long pyramusStudyProgrammeId){ return pyramusStudyProgrammeId == null ? null : STUDYPROGRAMME_PREFIX + String.valueOf(pyramusStudyProgrammeId); } public StudentGroupType getStudentGroupType(String identifier) { if (StringUtils.startsWith(identifier, STUDENTGROUP_PREFIX)) return StudentGroupType.STUDENTGROUP; if (StringUtils.startsWith(identifier, STUDYPROGRAMME_PREFIX)) return StudentGroupType.STUDYPROGRAMME; return null; } public enum StudentGroupType { STUDENTGROUP, STUDYPROGRAMME } public String getStudyProgrammeStudentIdentifier(Long pyramusStudentId) { return pyramusStudentId == null ? null : STUDYPROGRAMMESTUDENT_PREFIX + String.valueOf(pyramusStudentId); } public Long getPyramusStudyProgrammeStudentId(String studyProgrammeStudentIdentifier) { if (StringUtils.startsWith(studyProgrammeStudentIdentifier, STUDYPROGRAMMESTUDENT_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(studyProgrammeStudentIdentifier, STUDYPROGRAMMESTUDENT_PREFIX.length())); } return null; } public Long getPyramusTransferCredit(SchoolDataIdentifier transferCreditIdentifier) { if (transferCreditIdentifier == null) { return null; } if (transferCreditIdentifier.getDataSource().equals(SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE)) { if (StringUtils.startsWith(transferCreditIdentifier.getIdentifier(), TRANSFERCREDIT_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(transferCreditIdentifier.getIdentifier(), TRANSFERCREDIT_PREFIX.length())); } } logger.severe(String.format("Could not translate %s to pyramus transfer credit id", transferCreditIdentifier)); return null; } public SchoolDataIdentifier getTransferCreditIdentifier(Long transferCreditId) { if (transferCreditId == null) { return null; } return new SchoolDataIdentifier(String.format("%s%d", TRANSFERCREDIT_PREFIX, transferCreditId), SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); } public Long getPyramusSchool(SchoolDataIdentifier schoolIdentifier) { if (schoolIdentifier == null) { return null; } if (schoolIdentifier.getDataSource().equals(SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE)) { if (StringUtils.startsWith(schoolIdentifier.getIdentifier(), SCHOOL_PREFIX)) { return NumberUtils.createLong(StringUtils.substring(schoolIdentifier.getIdentifier(), SCHOOL_PREFIX.length())); } } logger.severe(String.format("Could not translate %s to pyramus transfer school id", schoolIdentifier)); return null; } public SchoolDataIdentifier getSchoolIdentifier(Long schoolId) { if (schoolId == null) { return null; } return new SchoolDataIdentifier(String.format("%s%d", SCHOOL_PREFIX, schoolId), SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); } public Long getPyramusGradeId(String gradeIdentifier) { if (StringUtils.isBlank(gradeIdentifier)) { return null; } if (!StringUtils.isNumeric(gradeIdentifier)) { return null; } return Long.parseLong(gradeIdentifier); } public Long getPyramusGradingScaleId(String gradingScaleIdentifier) { if (StringUtils.isBlank(gradingScaleIdentifier)) { return null; } if (!StringUtils.isNumeric(gradingScaleIdentifier)) { return null; } return Long.parseLong(gradingScaleIdentifier); } public String getEmailIdentifier(Long emailId) { return emailId != null ? emailId.toString() : null; } public SchoolDataIdentifier getAddressIdentifier(Long addressId) { if (addressId == null) { return null; } else { return new SchoolDataIdentifier(String.valueOf(addressId), SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); } } public Long getPyramusAddressId(String identifier) { return NumberUtils.createLong(identifier); } public Long getPyramusEmailId(String emailIdentifier) { return NumberUtils.createLong(emailIdentifier); } public Long getPyramusCourseAssessmentId(String identifier) { return NumberUtils.createLong(identifier); } public SchoolDataIdentifier getCurriculumIdentifier(Long pyramusCurriculumId) { return pyramusCurriculumId == null ? null : new SchoolDataIdentifier(String.valueOf(pyramusCurriculumId), SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); } public Long getPyramusCurriculumId(String curriculumIdentifier) { return NumberUtils.createLong(curriculumIdentifier); } }