Search in sources :

Example 6 with AcademicTerm

use of fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm in project pyramus by otavanopisto.

the class CalendarRESTService method updateAcademicTerm.

@Path("/academicTerms/{ID:[0-9]*}")
@PUT
@RESTPermit(CalendarPermissions.UPDATE_ACADEMICTERM)
public Response updateAcademicTerm(@PathParam("ID") Long id, fi.otavanopisto.pyramus.rest.model.AcademicTerm entity) {
    AcademicTerm academicTerm = calendarController.findAcademicTermById(id);
    String name = entity.getName();
    OffsetDateTime startDate = entity.getStartDate();
    OffsetDateTime endDate = entity.getEndDate();
    if (StringUtils.isBlank(name)) {
        return Response.status(Status.BAD_REQUEST).build();
    }
    if (startDate == null || endDate == null) {
        return Response.status(Status.BAD_REQUEST).build();
    }
    return Response.ok(objectFactory.createModel(calendarController.updateAcademicTerm(academicTerm, name, Date.from(startDate.toInstant()), Date.from(endDate.toInstant())))).build();
}
Also used : AcademicTerm(fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm) OffsetDateTime(java.time.OffsetDateTime) Path(javax.ws.rs.Path) RESTPermit(fi.otavanopisto.pyramus.rest.annotation.RESTPermit) PUT(javax.ws.rs.PUT)

Example 7 with AcademicTerm

use of fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm in project pyramus by otavanopisto.

the class BaseService method listAcademicTerms.

public AcademicTermEntity[] listAcademicTerms() {
    AcademicTermDAO academicTermDAO = DAOFactory.getInstance().getAcademicTermDAO();
    List<AcademicTerm> academicTerms = academicTermDAO.listUnarchived();
    Collections.sort(academicTerms, new Comparator<AcademicTerm>() {

        public int compare(AcademicTerm o1, AcademicTerm o2) {
            return o1.getStartDate() == null ? -1 : o2.getStartDate() == null ? 1 : o1.getStartDate().compareTo(o2.getStartDate());
        }
    });
    return (AcademicTermEntity[]) EntityFactoryVault.buildFromDomainObjects(academicTerms);
}
Also used : AcademicTerm(fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm) AcademicTermDAO(fi.otavanopisto.pyramus.dao.base.AcademicTermDAO)

Example 8 with AcademicTerm

use of fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm in project pyramus by otavanopisto.

the class BaseService method getAcademicTermById.

public AcademicTermEntity getAcademicTermById(@WebParam(name = "academicTermId") Long academicTermId) {
    AcademicTermDAO academicTermDAO = DAOFactory.getInstance().getAcademicTermDAO();
    AcademicTerm academicTerm = academicTermDAO.findById(academicTermId);
    return EntityFactoryVault.buildFromDomainObject(academicTerm);
}
Also used : AcademicTerm(fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm) AcademicTermDAO(fi.otavanopisto.pyramus.dao.base.AcademicTermDAO)

Example 9 with AcademicTerm

use of fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm in project pyramus by otavanopisto.

the class BaseService method createAcademicTerm.

/*Dateformat: [-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm] */
public AcademicTermEntity createAcademicTerm(@WebParam(name = "name") String name, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate) {
    AcademicTermDAO academicTermDAO = DAOFactory.getInstance().getAcademicTermDAO();
    AcademicTerm academicTerm = academicTermDAO.create(name, startDate, endDate);
    validateEntity(academicTerm);
    return EntityFactoryVault.buildFromDomainObject(academicTerm);
}
Also used : AcademicTerm(fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm) AcademicTermDAO(fi.otavanopisto.pyramus.dao.base.AcademicTermDAO)

Example 10 with AcademicTerm

use of fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm in project pyramus by otavanopisto.

the class EditStudentProjectViewController method process.

/**
 * Processes the page request by including the corresponding JSP page to the response.
 *
 * @param pageRequestContext Page request context
 */
public void process(PageRequestContext pageRequestContext) {
    StaffMemberDAO userDAO = DAOFactory.getInstance().getStaffMemberDAO();
    StudentDAO studentDAO = DAOFactory.getInstance().getStudentDAO();
    CourseStudentDAO courseStudentDAO = DAOFactory.getInstance().getCourseStudentDAO();
    StudentProjectDAO studentProjectDAO = DAOFactory.getInstance().getStudentProjectDAO();
    StudentProjectModuleDAO studentProjectModuleDAO = DAOFactory.getInstance().getStudentProjectModuleDAO();
    GradingScaleDAO gradingScaleDAO = DAOFactory.getInstance().getGradingScaleDAO();
    ProjectAssessmentDAO projectAssessmentDAO = DAOFactory.getInstance().getProjectAssessmentDAO();
    AcademicTermDAO academicTermDAO = DAOFactory.getInstance().getAcademicTermDAO();
    EducationalTimeUnitDAO educationalTimeUnitDAO = DAOFactory.getInstance().getEducationalTimeUnitDAO();
    CreditLinkDAO creditLinkDAO = DAOFactory.getInstance().getCreditLinkDAO();
    CourseAssessmentDAO courseAssessmentDAO = DAOFactory.getInstance().getCourseAssessmentDAO();
    TransferCreditDAO transferCreditDAO = DAOFactory.getInstance().getTransferCreditDAO();
    Long studentProjectId = pageRequestContext.getLong("studentproject");
    List<GradingScale> gradingScales = gradingScaleDAO.listUnarchived();
    StudentProject studentProject = studentProjectDAO.findById(studentProjectId);
    List<StudentProjectModule> studentProjectModules = studentProjectModuleDAO.listByStudentProject(studentProject);
    List<CourseStudent> courseStudents = courseStudentDAO.listByStudent(studentProject.getStudent());
    List<CourseAssessment> allStudentCourseAssessments = courseAssessmentDAO.listByStudent(studentProject.getStudent());
    List<TransferCredit> allStudentTransferCredits = transferCreditDAO.listByStudent(studentProject.getStudent());
    List<CreditLink> allStudentCreditLinks = creditLinkDAO.listByStudent(studentProject.getStudent());
    JSONArray studentProjectModulesJSON = new JSONArray();
    JSONArray courseStudentsJSON = new JSONArray();
    for (CreditLink creditLink : allStudentCreditLinks) {
        switch(creditLink.getCredit().getCreditType()) {
            case CourseAssessment:
                allStudentCourseAssessments.add((CourseAssessment) creditLink.getCredit());
                break;
            case TransferCredit:
                allStudentTransferCredits.add((TransferCredit) creditLink.getCredit());
                break;
        }
    }
    Collections.sort(studentProjectModules, new Comparator<StudentProjectModule>() {

        @Override
        public int compare(StudentProjectModule o1, StudentProjectModule o2) {
            return o1.getModule().getName().compareTo(o2.getModule().getName());
        }
    });
    for (StudentProjectModule studentProjectModule : studentProjectModules) {
        JSONArray moduleCourseStudents = new JSONArray();
        JSONArray moduleCredits = new JSONArray();
        boolean hasPassingGrade = false;
        List<CourseStudent> projectCourseCourseStudents = courseStudentDAO.listByModuleAndStudent(studentProjectModule.getModule(), studentProject.getStudent());
        for (CourseStudent courseStudent : projectCourseCourseStudents) {
            JSONObject courseStudentJson = new JSONObject();
            courseStudentJson.put("courseStudentParticipationType", courseStudent.getParticipationType().getName());
            // courseStudents.remove(courseStudent);
            moduleCourseStudents.add(courseStudentJson);
        }
        for (CourseAssessment assessment : allStudentCourseAssessments) {
            if (assessment.getCourseStudent().getCourse().getModule().getId().equals(studentProjectModule.getModule().getId())) {
                if (assessment.getGrade() != null) {
                    JSONObject courseAssessment = new JSONObject();
                    courseAssessment.put("creditType", assessment.getCreditType().toString());
                    courseAssessment.put("courseName", assessment.getCourseStudent().getCourse().getName());
                    courseAssessment.put("gradeName", assessment.getGrade().getName());
                    moduleCredits.add(courseAssessment);
                    hasPassingGrade = hasPassingGrade || assessment.getGrade().getPassingGrade();
                }
            }
        }
        if ((studentProjectModule.getModule().getCourseNumber() != null) && (studentProjectModule.getModule().getCourseNumber() != -1) && (studentProjectModule.getModule().getSubject() != null)) {
            for (TransferCredit tc : allStudentTransferCredits) {
                if ((tc.getCourseNumber() != null) && (tc.getCourseNumber() != -1) && (tc.getSubject() != null)) {
                    if (tc.getCourseNumber().equals(studentProjectModule.getModule().getCourseNumber()) && tc.getSubject().equals(studentProjectModule.getModule().getSubject())) {
                        if (tc.getGrade() != null) {
                            JSONObject transferCredit = new JSONObject();
                            transferCredit.put("creditType", tc.getCreditType().toString());
                            transferCredit.put("courseName", tc.getCourseName());
                            transferCredit.put("gradeName", tc.getGrade().getName());
                            moduleCredits.add(transferCredit);
                            hasPassingGrade = hasPassingGrade || tc.getGrade().getPassingGrade();
                        }
                    }
                }
            }
        }
        JSONObject obj = new JSONObject();
        obj.put("projectModuleId", studentProjectModule.getId().toString());
        obj.put("projectModuleOptionality", studentProjectModule.getOptionality().toString());
        obj.put("projectModuleAcademicTermId", studentProjectModule.getAcademicTerm() != null ? studentProjectModule.getAcademicTerm().getId().toString() : "");
        obj.put("projectModuleHasPassingGrade", hasPassingGrade ? "1" : "0");
        obj.put("moduleId", studentProjectModule.getModule().getId());
        obj.put("moduleName", studentProjectModule.getModule().getName());
        obj.put("moduleCourseStudents", moduleCourseStudents);
        obj.put("moduleCredits", moduleCredits);
        studentProjectModulesJSON.add(obj);
    }
    List<Student> students = studentDAO.listByPerson(studentProject.getStudent().getPerson());
    Collections.sort(students, new Comparator<Student>() {

        @Override
        public int compare(Student o1, Student o2) {
            /**
             * Ordering study programmes as follows
             *  1. studies that have start date but no end date (ongoing)
             *  2. studies that have no start nor end date
             *  3. studies that have ended
             *  4. studies that are archived
             *  5. other
             */
            int o1class = (o1.getArchived()) ? 4 : (o1.getStudyStartDate() != null && o1.getStudyEndDate() == null) ? 1 : (o1.getStudyStartDate() == null && o1.getStudyEndDate() == null) ? 2 : (o1.getStudyEndDate() != null) ? 3 : 5;
            int o2class = (o2.getArchived()) ? 4 : (o2.getStudyStartDate() != null && o2.getStudyEndDate() == null) ? 1 : (o2.getStudyStartDate() == null && o2.getStudyEndDate() == null) ? 2 : (o2.getStudyEndDate() != null) ? 3 : 5;
            if (o1class == o2class) {
                // classes are the same, we try to do last comparison from the start dates
                return ((o1.getStudyStartDate() != null) && (o2.getStudyStartDate() != null)) ? o2.getStudyStartDate().compareTo(o1.getStudyStartDate()) : 0;
            } else
                return o1class < o2class ? -1 : o1class == o2class ? 0 : 1;
        }
    });
    List<EducationalTimeUnit> educationalTimeUnits = educationalTimeUnitDAO.listUnarchived();
    Collections.sort(educationalTimeUnits, new StringAttributeComparator("getName"));
    List<AcademicTerm> academicTerms = academicTermDAO.listUnarchived();
    Collections.sort(academicTerms, new Comparator<AcademicTerm>() {

        public int compare(AcademicTerm o1, AcademicTerm o2) {
            return o1.getStartDate() == null ? -1 : o2.getStartDate() == null ? 1 : o1.getStartDate().compareTo(o2.getStartDate());
        }
    });
    List<ProjectAssessment> assessments = projectAssessmentDAO.listByProjectAndArchived(studentProject, Boolean.FALSE);
    Collections.sort(assessments, new Comparator<ProjectAssessment>() {

        @Override
        public int compare(ProjectAssessment o1, ProjectAssessment o2) {
            return o2.getDate().compareTo(o1.getDate());
        }
    });
    Collections.sort(courseStudents, new Comparator<CourseStudent>() {

        @Override
        public int compare(CourseStudent o1, CourseStudent o2) {
            return o1.getCourse().getName().compareTo(o2.getCourse().getName());
        }
    });
    for (CourseStudent courseStudent : courseStudents) {
        CourseAssessment courseAssessment = courseAssessmentDAO.findLatestByCourseStudentAndArchived(courseStudent, Boolean.FALSE);
        Grade grade = courseAssessment != null ? courseAssessment.getGrade() : null;
        JSONObject obj = new JSONObject();
        String courseName = courseStudent.getCourse().getName();
        if (!StringUtils.isEmpty(courseStudent.getCourse().getNameExtension()))
            courseName = courseName + " (" + courseStudent.getCourse().getNameExtension() + ")";
        obj.put("courseName", courseName);
        if (courseStudent.getParticipationType() != null) {
            obj.put("participationType", courseStudent.getParticipationType().getName());
        }
        if (courseStudent.getCourse().getBeginDate() != null) {
            obj.put("courseBeginDate", courseStudent.getCourse().getBeginDate().getTime());
        }
        if (courseStudent.getCourse().getEndDate() != null) {
            obj.put("courseEndDate", courseStudent.getCourse().getEndDate().getTime());
        }
        obj.put("gradeName", grade != null ? grade.getName() : "");
        if (courseStudent.getOptionality() != null) {
            obj.put("optionality", courseStudent.getOptionality().toString());
        }
        obj.put("moduleId", courseStudent.getCourse().getModule().getId().toString());
        obj.put("courseId", courseStudent.getCourse().getId().toString());
        obj.put("courseStudentId", courseStudent.getId().toString());
        courseStudentsJSON.add(obj);
    }
    Map<Long, String> verbalAssessments = new HashMap<>();
    for (ProjectAssessment pAss : assessments) {
        // Shortened descriptions
        String description = pAss.getVerbalAssessment();
        if (description != null) {
            description = StringEscapeUtils.unescapeHtml(description.replaceAll("\\<.*?>", ""));
            description = description.replaceAll("\\n", "");
            verbalAssessments.put(pAss.getId(), description);
        }
    }
    /* Tags */
    StringBuilder tagsBuilder = new StringBuilder();
    Iterator<Tag> tagIterator = studentProject.getTags().iterator();
    while (tagIterator.hasNext()) {
        Tag tag = tagIterator.next();
        tagsBuilder.append(tag.getText());
        if (tagIterator.hasNext())
            tagsBuilder.append(' ');
    }
    pageRequestContext.getRequest().setAttribute("projectAssessments", assessments);
    pageRequestContext.getRequest().setAttribute("verbalAssessments", verbalAssessments);
    pageRequestContext.getRequest().setAttribute("studentProject", studentProject);
    pageRequestContext.getRequest().setAttribute("students", students);
    pageRequestContext.getRequest().setAttribute("optionalStudiesLengthTimeUnits", educationalTimeUnits);
    pageRequestContext.getRequest().setAttribute("academicTerms", academicTerms);
    pageRequestContext.getRequest().setAttribute("users", userDAO.listAll());
    pageRequestContext.getRequest().setAttribute("gradingScales", gradingScales);
    pageRequestContext.getRequest().setAttribute("tags", tagsBuilder.toString());
    setJsDataVariable(pageRequestContext, "studentProjectModules", studentProjectModulesJSON.toString());
    setJsDataVariable(pageRequestContext, "courseStudents", courseStudentsJSON.toString());
    pageRequestContext.setIncludeJSP("/templates/projects/editstudentproject.jsp");
}
Also used : GradingScale(fi.otavanopisto.pyramus.domainmodel.grading.GradingScale) GradingScaleDAO(fi.otavanopisto.pyramus.dao.grading.GradingScaleDAO) HashMap(java.util.HashMap) StudentProjectModuleDAO(fi.otavanopisto.pyramus.dao.projects.StudentProjectModuleDAO) StudentProjectDAO(fi.otavanopisto.pyramus.dao.projects.StudentProjectDAO) CreditLink(fi.otavanopisto.pyramus.domainmodel.grading.CreditLink) EducationalTimeUnit(fi.otavanopisto.pyramus.domainmodel.base.EducationalTimeUnit) EducationalTimeUnitDAO(fi.otavanopisto.pyramus.dao.base.EducationalTimeUnitDAO) CourseStudentDAO(fi.otavanopisto.pyramus.dao.courses.CourseStudentDAO) CourseAssessmentDAO(fi.otavanopisto.pyramus.dao.grading.CourseAssessmentDAO) Grade(fi.otavanopisto.pyramus.domainmodel.grading.Grade) Student(fi.otavanopisto.pyramus.domainmodel.students.Student) CourseStudent(fi.otavanopisto.pyramus.domainmodel.courses.CourseStudent) CourseStudentDAO(fi.otavanopisto.pyramus.dao.courses.CourseStudentDAO) StudentDAO(fi.otavanopisto.pyramus.dao.students.StudentDAO) JSONObject(net.sf.json.JSONObject) StudentProjectModule(fi.otavanopisto.pyramus.domainmodel.projects.StudentProjectModule) ProjectAssessment(fi.otavanopisto.pyramus.domainmodel.grading.ProjectAssessment) ProjectAssessmentDAO(fi.otavanopisto.pyramus.dao.grading.ProjectAssessmentDAO) StringAttributeComparator(fi.otavanopisto.pyramus.util.StringAttributeComparator) StaffMemberDAO(fi.otavanopisto.pyramus.dao.users.StaffMemberDAO) TransferCreditDAO(fi.otavanopisto.pyramus.dao.grading.TransferCreditDAO) AcademicTermDAO(fi.otavanopisto.pyramus.dao.base.AcademicTermDAO) CourseStudent(fi.otavanopisto.pyramus.domainmodel.courses.CourseStudent) JSONArray(net.sf.json.JSONArray) CreditLinkDAO(fi.otavanopisto.pyramus.dao.grading.CreditLinkDAO) CourseAssessment(fi.otavanopisto.pyramus.domainmodel.grading.CourseAssessment) AcademicTerm(fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm) TransferCredit(fi.otavanopisto.pyramus.domainmodel.grading.TransferCredit) Tag(fi.otavanopisto.pyramus.domainmodel.base.Tag) StudentProject(fi.otavanopisto.pyramus.domainmodel.projects.StudentProject)

Aggregations

AcademicTerm (fi.otavanopisto.pyramus.domainmodel.base.AcademicTerm)12 AcademicTermDAO (fi.otavanopisto.pyramus.dao.base.AcademicTermDAO)9 Date (java.util.Date)4 CourseStudentDAO (fi.otavanopisto.pyramus.dao.courses.CourseStudentDAO)3 StudentDAO (fi.otavanopisto.pyramus.dao.students.StudentDAO)3 Course (fi.otavanopisto.pyramus.domainmodel.courses.Course)3 CourseStudent (fi.otavanopisto.pyramus.domainmodel.courses.CourseStudent)3 Student (fi.otavanopisto.pyramus.domainmodel.students.Student)3 EducationalTimeUnitDAO (fi.otavanopisto.pyramus.dao.base.EducationalTimeUnitDAO)2 CourseDAO (fi.otavanopisto.pyramus.dao.courses.CourseDAO)2 ProjectAssessmentDAO (fi.otavanopisto.pyramus.dao.grading.ProjectAssessmentDAO)2 ModuleDAO (fi.otavanopisto.pyramus.dao.modules.ModuleDAO)2 StudentProjectDAO (fi.otavanopisto.pyramus.dao.projects.StudentProjectDAO)2 StudentProjectModuleDAO (fi.otavanopisto.pyramus.dao.projects.StudentProjectModuleDAO)2 StaffMemberDAO (fi.otavanopisto.pyramus.dao.users.StaffMemberDAO)2 EducationalTimeUnit (fi.otavanopisto.pyramus.domainmodel.base.EducationalTimeUnit)2 Tag (fi.otavanopisto.pyramus.domainmodel.base.Tag)2 CourseParticipationType (fi.otavanopisto.pyramus.domainmodel.courses.CourseParticipationType)2 Grade (fi.otavanopisto.pyramus.domainmodel.grading.Grade)2 ProjectAssessment (fi.otavanopisto.pyramus.domainmodel.grading.ProjectAssessment)2