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
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 }