private boolean studentsNeedUpdate(Laboratory laboratory, LaboratoryDto laboratoryDto) { boolean groupMatches = laboratory.getGroup().getName().equals(laboratoryDto.getGroup()); boolean subgroupMathces = laboratory.getSubgroup().getName().equals(laboratoryDto.getSubgroup()); return !(subgroupMathces && groupMatches); }
private void populateLaboratoryFields(Laboratory laboratory) throws DaoEntityNotFoundException { Hour from = hourDao.getHourByValue(laboratory.getFrom().getValue()); Hour to = hourDao.getHourByValue(laboratory.getTo().getValue()); Professor professor = professorDao.getProfessorByPnc(laboratory.getProfessor().getPnc()); Room room = roomDao.getRoomByName(laboratory.getRoom().getName()); Day day = dayDao.getDayByValue(laboratory.getDay().getValue()); Section section = sectionDao.getSectionByName(laboratory.getSection().getName()); Group group = groupDao.getGroupByName(laboratory.getGroup().getName()); Subgroup subgroup = subgroupDao.getSubgroupByName(laboratory.getSubgroup().getName()); Year year = yearDao.getYearByValue(laboratory.getYear().getValue()); Semester semester = semesterDao.getSemesterByValue(laboratory.getSemester().getValue()); WeeklyOccurrence weeklyOccurrence = weeklyOccurrenceDao.getWeeklyOccurrenceByName(laboratory.getWeeklyOccurrence().getName()); List<Student> students = studentDao.getStudents(section, year, semester, group, subgroup); laboratory.setFrom(from); laboratory.setTo(to); laboratory.setProfessor(professor); laboratory.setRoom(room); laboratory.setDay(day); laboratory.setSection(section); laboratory.setGroup(group); laboratory.setSubgroup(subgroup); laboratory.setYear(year); laboratory.setSemester(semester); laboratory.setWeeklyOccurrence(weeklyOccurrence); laboratory.setStudents(students); }
@Override public void updateLaboratory(LaboratoryDto laboratoryDto) throws ServiceEntityNotFoundException { try { Laboratory laboratory = laboratoryDao.getLaboratoryById(laboratoryDto.getId()); boolean studentsNeedUpdate = studentsNeedUpdate(laboratory, laboratoryDto); updateLaboratoryFields(laboratory, laboratoryDto); laboratoryDao.updateLaboratory(laboratory); if (studentsNeedUpdate) { laboratory.getStudents().clear(); List<Student> students = studentDao.getStudents( laboratory.getSection(), laboratory.getYear(), laboratory.getSemester(), laboratory.getGroup(), laboratory.getSubgroup()); laboratory.setStudents(students); } } catch (DaoEntityNotFoundException e) { LOGGER.debug("DaoEntityNotFoundException"); throw new ServiceEntityNotFoundException(e); } }