public static void scheduleDeadlinesForTask(final InternalTask task, TaskContext taskContext, DeadlineType ...types) { TaskDeadlinesService deadlineService = taskContext.getTaskDeadlinesService(); final long now = System.currentTimeMillis(); List<DeadlineType> deadlineTypes = Arrays.asList(types); Deadlines deadlines = task.getDeadlines(); if (deadlines != null) { final List<? extends Deadline> startDeadlines = deadlines.getStartDeadlines(); if (startDeadlines != null && deadlineTypes.contains(DeadlineType.START)) { scheduleDeadlines(startDeadlines, now, task.getId(), DeadlineType.START, deadlineService); } final List<? extends Deadline> endDeadlines = deadlines.getEndDeadlines(); if (endDeadlines != null && deadlineTypes.contains(DeadlineType.END)) { scheduleDeadlines(endDeadlines, now, task.getId(), DeadlineType.END, deadlineService); } } }
TaskDeadlinesService deadlineService = context.getTaskDeadlinesService(); TaskQueryService queryService = context.getTaskQueryService(); TaskPersistenceContext persistenceContext = context.getPersistenceContext();
@Override public Void execute(Context context) { TaskContext ctx = (TaskContext) context; TaskPersistenceContext persistenceContext = ctx.getPersistenceContext(); TaskDeadlinesService deadlineService = ctx.getTaskDeadlinesService(); try { long now = System.currentTimeMillis(); List<DeadlineSummary> resultList = persistenceContext.queryInTransaction("UnescalatedStartDeadlines", ClassUtil.<List<DeadlineSummary>>castClass(List.class)); for (DeadlineSummary summary : resultList) { long delay = summary.getDate().getTime() - now; deadlineService.schedule(summary.getTaskId(), summary.getDeadlineId(), delay, DeadlineType.START); } resultList = persistenceContext.queryInTransaction("UnescalatedEndDeadlines", ClassUtil.<List<DeadlineSummary>>castClass(List.class)); for (DeadlineSummary summary : resultList) { long delay = summary.getDate().getTime() - now; deadlineService.schedule(summary.getTaskId(), summary.getDeadlineId(), delay, DeadlineType.END); } } catch (Exception e) { logger.error("Error when executing deadlines", e); } return null; }