@Override public void levelUp(Job job) { synchronized (this.lock) { if (job.getStatus().equals(JobImpl.NONSUBMITTED)) { job.setStatus(JobImpl.SUBMITTED); this.submitted.add(job); this.nonSubmitted.remove(job); } else if (job.getStatus().equals(JobImpl.SUBMITTED)) { job.setStatus(JobImpl.FINISHED); this.finished.add(job); this.submitted.remove(job); } } }
public JobContainer(List<BackupJob> backupJobs, BackMeUpUser user) { this.backupJobs = new ArrayList<Job>(); for (BackupJob j : backupJobs) { Date nextExecTime = j.getNextExecutionTime(); Job job = new Job( j.getId(), j.getSourceProfiles(), j.getSinkProfile(), j.getStart().getTime(), j.getCreated().getTime(), j.getModified().getTime(), j.getJobTitle(), j.getDelay(), j.isOnHold()); job.setLastFail(j.getLastFailed() != null ? j.getLastFailed().getTime() : null); job.setLastSuccessful(j.getLastSuccessful() != null ? j.getLastSuccessful().getTime() : null); job.setStatus(j.getStatus()); job.setTimeExpression(j.getTimeExpression()); JobProtocol protocol = j.lastProtocol(); if (protocol != null) { job.setLastBackup(protocol.getExecutionTime().getTime()); } if (nextExecTime != null && nextExecTime.getTime() > new Date().getTime()) { job.setNextBackup(nextExecTime.getTime()); } this.backupJobs.add(job); } if (this.backupJobs.size() > 0) { Collections.sort( this.backupJobs, new Comparator<Job>() { @Override public int compare(Job a, Job b) { return (int) (a.startDate - b.startDate); } }); Job lastJob = this.backupJobs.get(this.backupJobs.size() - 1); this.lastBackup = lastJob.startDate; } this.user = new UserContainer(user); }
@RequestMapping(value = "/jobs/{jobId}/startAutoChecks") public String doAutoChecks( @PathVariable String jobId, HttpServletRequest request, RedirectAttributes redirectAttrs, ModelMap model) { User user = (User) request.getSession().getAttribute("user"); if (user == null || !user.getRole().equals("manager")) { model.addAttribute("errorMsg", "User has no permission"); return "login"; } try { List<Application> applications = ApplicationsDao.instance.getByJob(ORSKEY, user.getShortKey(), jobId); for (Application a : applications) { AutoCheckRequest req = new AutoCheckRequest(); req.setLicenseNo(a.getLicenseNo()); req.setFullName(a.getFullName()); req.setPostcode(a.getPostcode()); AutoCheckResponse response = autoCheckService.check(req); String pdvResult = response.getPdvResult(); String crvResult = response.getCrvResult(); // save result to API AutoCheckResult newAutoCheckResult = new AutoCheckResult(); newAutoCheckResult.set_appId(a.get_appId()); newAutoCheckResult.setPdvResult(pdvResult); newAutoCheckResult.setCrvResult(crvResult); AutoCheckResultsDao.instance.create(ORSKEY, user.getShortKey(), newAutoCheckResult); } Job j = JobsDao.instance.getById(jobId); if (j.getAssignedTeam() != null) { j.setStatus(RecruitmentStatus.IN_REVIEW); JobsDao.instance.update(ORSKEY, user.getShortKey(), j); // update status for all applications of the job for (Application a : applications) { a.setStatus(ApplicationStatus.IN_REVIEW); ApplicationsDao.instance.update(a); } } redirectAttrs.addFlashAttribute("successMsg", "Auto-checks run successfully"); return "redirect:/jobs"; } catch (Exception e) { e.printStackTrace(); model.addAttribute("errorMsg", e.getMessage()); return "error"; } }
@RequestMapping( value = "/jobs/{jobId}/finalList", method = {RequestMethod.POST}) public String submitfinalList( @PathVariable String jobId, HttpServletRequest request, ModelMap model) { User user = (User) request.getSession().getAttribute("user"); if (user == null || !user.getRole().equals("manager")) { model.addAttribute("errorMsg", "User has no permission"); return "login"; } try { Job j = JobsDao.instance.getById(jobId); if (!j.getStatus().equals(RecruitmentStatus.SENT_INVITATIONS)) { return "redirect:/jobs"; } List<Application> applications = ApplicationsDao.instance.getByJob(ORSKEY, user.getShortKey(), jobId); if (request.getParameter("selectedCandidate") != null) { for (Application a : applications) { if (a.getStatus().equals(ApplicationStatus.ARCHIVED)) { continue; } if (request.getParameter("selectedCandidate").equals(a.get_appId())) { // TODO send notifications } else { // TODO send notifications } a.setStatus(ApplicationStatus.FINALISED); ApplicationsDao.instance.update(a); } j.setStatus(RecruitmentStatus.FINALISED); JobsDao.instance.update(ORSKEY, user.getShortKey(), j); } return "redirect:/jobs"; } catch (Exception e) { e.printStackTrace(); model.addAttribute("errorMsg", e.getMessage()); return "error"; } }
@RequestMapping( value = "/jobs/{jobId}/shortlist", method = {RequestMethod.POST}) public String submitShortlist( @PathVariable String jobId, HttpServletRequest request, ModelMap model) { User user = (User) request.getSession().getAttribute("user"); if (user == null || !user.getRole().equals("manager")) { model.addAttribute("errorMsg", "User has no permission"); return "login"; } try { Job j = JobsDao.instance.getById(jobId); List<Application> applications = ApplicationsDao.instance.getByJob(ORSKEY, user.getShortKey(), jobId); DetailedJob dj = new DetailedJob(j); dj.setApplications(ORSKEY, user.getShortKey(), (ArrayList<Application>) applications); if (!dj.getStatus().equals(RecruitmentStatus.IN_REVIEW) && dj.allApplicationsReviewed()) { return "redirect:/jobs"; } for (Application a : applications) { if (request.getParameter(a.get_appId()) != null) { a.setStatus(ApplicationStatus.SHORTLISTED); // TODO send invitations } else { a.setStatus(ApplicationStatus.FINALISED); // TODO send notifications } ApplicationsDao.instance.update(a); } j.setStatus(RecruitmentStatus.SENT_INVITATIONS); JobsDao.instance.update(ORSKEY, user.getShortKey(), j); return "redirect:/jobs"; } catch (Exception e) { e.printStackTrace(); model.addAttribute("errorMsg", e.getMessage()); return "error"; } }
@RequestMapping( value = "/jobs/{jobId}/update", method = {RequestMethod.POST}) public String updateJob(@PathVariable String jobId, HttpServletRequest request, ModelMap model) { User user = (User) request.getSession().getAttribute("user"); if (user == null) { model.addAttribute("errorMsg", "User has no permission"); return "login"; } String closingDate = request.getParameter("closingDate"); String salary = request.getParameter("salary"); String positionType = request.getParameter("positionType"); String location = request.getParameter("location"); String description = request.getParameter("description"); String status = request.getParameter("status"); String assignedTeam = request.getParameter("assignedTeam"); Job updatedJob = JobsDao.instance.getById(jobId); if (closingDate != null) { updatedJob.setClosingDate(closingDate); } if (salary != null) { updatedJob.setSalary(Integer.parseInt(salary)); } if (positionType != null) { updatedJob.setPositionType(positionType); } if (location != null) { updatedJob.setLocation(location); } if (description != null) { updatedJob.setDescription(description); } if (status != null) { updatedJob.setStatus(RecruitmentStatus.valueOf(status)); } if (assignedTeam != null) { if (assignedTeam.isEmpty()) { assignedTeam = null; } else { // if hiring team is assigned and auto-check is done, proceed to next recruitment // stage DetailedJob j = new DetailedJob(JobsDao.instance.getById(jobId)); j.setApplications( ORSKEY, user.getShortKey(), (ArrayList<Application>) ApplicationsDao.instance.getByJob(ORSKEY, user.getShortKey(), jobId)); if (j.allApplicationsAutoChecked()) { updatedJob.setStatus(RecruitmentStatus.IN_REVIEW); // update status for all applications of the job List<Application> applications = ApplicationsDao.instance.getByJob(ORSKEY, user.getShortKey(), jobId); for (Application a : applications) { a.setStatus(ApplicationStatus.IN_REVIEW); ApplicationsDao.instance.update(a); } } } updatedJob.setAssignedTeam(assignedTeam); } if (!validateInput( closingDate, salary, positionType, location, description, status, assignedTeam)) { model.addAttribute("errorMsg", "Invalid form data"); model.addAttribute("job", updatedJob); return "redirect:/jobs/" + jobId + "/edit"; } try { JobsDao.instance.update(ORSKEY, user.getShortKey(), updatedJob); return "redirect:/jobs/" + jobId; } catch (Exception e) { e.printStackTrace(); model.addAttribute("errorMsg", e.getMessage()); return "error"; } }