View Javadoc
1   package com.atlassian.refapp.demo.scheduler;
2   
3   import java.text.SimpleDateFormat;
4   
5   import javax.annotation.Nullable;
6   import javax.inject.Inject;
7   import javax.inject.Named;
8   
9   import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
10  import com.atlassian.scheduler.JobRunner;
11  import com.atlassian.scheduler.JobRunnerRequest;
12  import com.atlassian.scheduler.JobRunnerResponse;
13  import com.atlassian.scheduler.config.JobRunnerKey;
14  import com.atlassian.streams.api.ActivityObjectTypes;
15  import com.atlassian.streams.api.ActivityVerbs;
16  import com.atlassian.streams.refapp.api.StreamsActivityManager;
17  import com.atlassian.streams.refapp.api.StreamsEntryRequest;
18  
19  import org.joda.time.DateTime;
20  import org.slf4j.Logger;
21  import org.slf4j.LoggerFactory;
22  
23  /**
24   * A demo job runner that visualize the schedule instances as streams entries.
25   */
26  @Named
27  public class DemoJobRunner implements JobRunner
28  {
29      public static JobRunnerKey RUNNER_KEY = JobRunnerKey.of("RefApp-Streams-Job-Runner");
30      private static final String DATE_PATTERN = "dd-MMM-yyyy HH:mm:ss";
31  
32      private static final Logger log = LoggerFactory.getLogger(DemoJobRunner.class);
33  
34      @ComponentImport
35      private final StreamsActivityManager refappStreamsActivityManager;
36  
37  
38      @Inject
39      public DemoJobRunner(StreamsActivityManager refappStreamsActivityManager) {
40          this.refappStreamsActivityManager = refappStreamsActivityManager;
41      }
42  
43      @Nullable
44      @Override
45      public JobRunnerResponse runJob(JobRunnerRequest request) {
46          final StreamsEntryRequest streamsEntryRequest = createStreamsEntryRequest(request);
47  
48          refappStreamsActivityManager.addEntry(streamsEntryRequest);
49  
50          log.debug("Activity streams id '{}' was fired", streamsEntryRequest.getId());
51  
52          return JobRunnerResponse.success("Successfully registered activity streams job");
53      }
54  
55      private StreamsEntryRequest createStreamsEntryRequest(JobRunnerRequest request) {
56          final DateTime startTime = new DateTime(request.getStartTime());
57          final SimpleDateFormat dateFormatter = new SimpleDateFormat(DATE_PATTERN);
58  
59          return new StreamsEntryRequest()
60                  .id(startTime.hashCode())
61                  .title("triggered as per " + request.getJobConfig().getRunMode() + " job, at " + dateFormatter.format(request.getStartTime()))
62                  .postedDate(startTime.plusMinutes(2))
63                  .type(ActivityObjectTypes.article())
64                  .verb(ActivityVerbs.post())
65                  .user("Scheduler");
66      }
67  }