View Javadoc

1   package com.atlassian.scheduler.core.impl;
2   
3   import com.atlassian.scheduler.config.JobConfig;
4   import com.atlassian.scheduler.config.JobId;
5   import com.atlassian.scheduler.core.RunningJob;
6   
7   import javax.annotation.Nonnull;
8   import javax.annotation.Nullable;
9   import javax.annotation.concurrent.ThreadSafe;
10  import java.util.Date;
11  import java.util.Objects;
12  
13  import static com.atlassian.util.concurrent.Assertions.notNull;
14  
15  /**
16   * @since v1.0
17   */
18  @ThreadSafe
19  public final class RunningJobImpl implements RunningJob {
20      private final long startTime;
21      private final JobId jobId;
22      private final JobConfig jobConfig;
23  
24      private volatile boolean cancelled;
25  
26      public RunningJobImpl(final Date startTime, final JobId jobId,
27                            final JobConfig jobConfig) {
28          this.startTime = notNull("startTime", startTime).getTime();
29          this.jobId = notNull("jobId", jobId);
30          this.jobConfig = notNull("jobConfig", jobConfig);
31      }
32  
33  
34      @Nonnull
35      @Override
36      public Date getStartTime() {
37          return new Date(startTime);
38      }
39  
40      @Nonnull
41      @Override
42      public JobId getJobId() {
43          return jobId;
44      }
45  
46      @Nonnull
47      @Override
48      public JobConfig getJobConfig() {
49          return jobConfig;
50      }
51  
52      @Override
53      public boolean isCancellationRequested() {
54          return cancelled;
55      }
56  
57      @Override
58      public void cancel() {
59          cancelled = true;
60      }
61  
62      @Override
63      public boolean equals(@Nullable final Object o) {
64          if (this == o) {
65              return true;
66          }
67          if (o == null || getClass() != o.getClass()) {
68              return false;
69          }
70  
71          final RunningJobImpl other = (RunningJobImpl) o;
72          return startTime == other.startTime
73                  && jobId.equals(other.jobId)
74                  && jobConfig.equals(other.jobConfig);
75      }
76  
77      @Override
78      public int hashCode() {
79          return Objects.hash(startTime, jobId, jobConfig);
80      }
81  
82      @Override
83      public String toString() {
84          return "RunningJobImpl[startTime=" + startTime +
85                  ",jobId=" + jobId +
86                  ",jobConfig=" + jobConfig +
87                  ",cancelled=" + cancelled +
88                  ']';
89      }
90  }