/** * проверяем, согласовал ли РП заявление на отпуск. Возвращаем его решение. если письмо * руководителю проекта не посылалось, то выбрасывается VacationApprovalServiceException */ private Boolean getProjectManagerApproveResult( List<VacationApproval> projectManagerApprovals, Project project) throws VacationApprovalServiceException { if (project != null) { if (project.getManager() != null) { Integer projectManagerId = project.getManager().getId(); for (VacationApproval approval : projectManagerApprovals) { Integer managerId = approval.getManager().getId(); if (managerId.equals(projectManagerId)) { return approval.getResult(); } } Integer vacationId = projectManagerApprovals.get(0).getVacation().getId(); throw new VacationApprovalServiceException( String.format( "В БД не найдены данные о письме руководителю проекта %s для подтверждения отпуска №%s!", project.getName(), vacationId)); } else { throw new VacationApprovalServiceException( String.format("В БД не найдены данные о руководителе проекта %s", project.getName())); } } else { throw new VacationApprovalServiceException("В БД не найдены данные о проекте"); } }
public void createOrUpdateProject(NamedNodeMap nodeMap, ProjectDAO dao) { Project project = new Project(); // проект из БД // поля синхронизации String name = nodeMap.getNamedItem("name").getNodeValue().trim(); // название проекта String idProject = nodeMap.getNamedItem("id").getNodeValue(); // id проекта String status = nodeMap.getNamedItem("status").getNodeValue(); // статус проекта String pmLdap = nodeMap.getNamedItem("pm").getNodeValue(); // руководитель проекта String hcLdap = nodeMap.getNamedItem("hc").getNodeValue(); // hc // ищем в БД запись о проекте Project findingProject = dao.findByProjectId(idProject); if (findingProject == null) { // если проекта еще нет в БД project.setActive(newStatus.contains(status)); // установим ему новый статус } else { // если проект уже существовал - статус менять не будем // см. //APLANATS-408 project.setActive(findingProject.isActive()); } project.setName(name); project.setProjectId(idProject); if (project.isActive()) { if (!setPM(project, pmLdap)) { return; // если не указан РП или его нет в БД, то проект не сохраняем, переходим к // следующему } setDivision(project, hcLdap); // установим подразделение пользователя } dao.store(project); // запишем в БД }
private void setDivision(Project project, String hcLdap) { Employee employee = this.employeeDAO.findByLdapName(hcLdap.split("/")[0]); if (employee != null) { Set<Division> divisions = new TreeSet<Division>(); divisions.add(employee.getDivision()); project.setDivisions(divisions); } }
private boolean setPM(Project project, String pmLdap) { // APLANATS-429 if ((pmLdap == null) || (pmLdap.equals(""))) { trace .append("Проект ") .append(project.getName()) .append(" пропущен, т.к. не указан руководитель проекта \n"); return false; } Employee projectLeader = this.employeeDAO.findByLdapName(pmLdap.split("/")[0]); if (projectLeader == null) { trace .append("Проект ") .append(project.getName()) .append(" проигнорирован, " + "т.к. руководитель проекта ") .append(pmLdap) .append(" не найден в базе ldap\n"); return false; } project.setManager(projectLeader); return true; }