/src/main/java/com/aliyun/openservices/log/common/JobSchedule.java

https://github.com/aliyun/aliyun-log-java-sdk · Java · 335 lines · 251 code · 65 blank · 19 comment · 75 complexity · 5427da53ac8d0108e6c3bd05d8e1c0ba MD5 · raw file

  1. package com.aliyun.openservices.log.common;
  2. import com.alibaba.fastjson.annotation.JSONField;
  3. import com.aliyun.openservices.log.util.JsonUtils;
  4. import com.alibaba.fastjson.JSONObject;
  5. import java.io.Serializable;
  6. import java.util.Date;
  7. import static com.aliyun.openservices.log.util.Args.checkDuration;
  8. public class JobSchedule implements Serializable {
  9. private static final long serialVersionUID = 8400426178465652937L;
  10. private String id;
  11. @JSONField
  12. private String displayName;
  13. @JSONField
  14. private String description;
  15. @JSONField
  16. private String jobName;
  17. @JSONField
  18. private JobScheduleType type;
  19. // TODO Move schedule info to a separate class
  20. /**
  21. * Interval in duration format e,g "60s", "1h". Required for {@code JobScheduleType.FIXED_RATE} only.
  22. */
  23. @JSONField
  24. private String interval;
  25. /**
  26. * Cron expression for CRON type.
  27. */
  28. @JSONField
  29. private String cronExpression;
  30. /**
  31. * An optional delay to avoid missing data.
  32. */
  33. @JSONField
  34. private Integer delay;
  35. /**
  36. * sunday, monday, tuesday, wednesday, thursday, friday and saturday
  37. */
  38. @JSONField
  39. private Integer dayOfWeek;
  40. /**
  41. * hour at a day
  42. */
  43. @JSONField
  44. private Integer hour;
  45. @JSONField
  46. private Integer fromTime;
  47. @JSONField
  48. private Integer toTime;
  49. private String status;
  50. private Date createTime;
  51. private Date lastModifiedTime;
  52. private Date startTime;
  53. private Date completeTime;
  54. private boolean runImmediately = false;
  55. /**
  56. * timeZone eg. +0800
  57. */
  58. @JSONField
  59. private String timeZone;
  60. public String getId() {
  61. return id;
  62. }
  63. public void setId(String id) {
  64. this.id = id;
  65. }
  66. public String getDisplayName() {
  67. return displayName;
  68. }
  69. public void setDisplayName(String displayName) {
  70. this.displayName = displayName;
  71. }
  72. public String getJobName() {
  73. return jobName;
  74. }
  75. public void setJobName(String jobName) {
  76. this.jobName = jobName;
  77. }
  78. public JobScheduleType getType() {
  79. return type;
  80. }
  81. public void setType(JobScheduleType type) {
  82. this.type = type;
  83. }
  84. public String getInterval() {
  85. return interval;
  86. }
  87. public void setInterval(String interval) {
  88. checkDuration(interval);
  89. this.interval = interval;
  90. }
  91. public String getCronExpression() {
  92. return cronExpression;
  93. }
  94. public void setCronExpression(String cronExpression) {
  95. this.cronExpression = cronExpression;
  96. }
  97. public Integer getDelay() {
  98. return delay;
  99. }
  100. public void setDelay(Integer delay) {
  101. this.delay = delay;
  102. }
  103. public Integer getDayOfWeek() {
  104. return dayOfWeek;
  105. }
  106. public void setDayOfWeek(Integer dayOfWeek) {
  107. this.dayOfWeek = dayOfWeek;
  108. }
  109. public Integer getHour() {
  110. return hour;
  111. }
  112. public void setHour(Integer hour) {
  113. this.hour = hour;
  114. }
  115. public String getStatus() {
  116. return status;
  117. }
  118. public void setStatus(String status) {
  119. this.status = status;
  120. }
  121. public Date getCreateTime() {
  122. return createTime;
  123. }
  124. public void setCreateTime(Date createTime) {
  125. this.createTime = createTime;
  126. }
  127. public Date getLastModifiedTime() {
  128. return lastModifiedTime;
  129. }
  130. public void setLastModifiedTime(Date lastModifiedTime) {
  131. this.lastModifiedTime = lastModifiedTime;
  132. }
  133. public Date getStartTime() {
  134. return startTime;
  135. }
  136. public void setStartTime(Date startTime) {
  137. this.startTime = startTime;
  138. }
  139. public Date getCompleteTime() {
  140. return completeTime;
  141. }
  142. public void setCompleteTime(Date completeTime) {
  143. this.completeTime = completeTime;
  144. }
  145. @Deprecated
  146. public Integer getFromTime() {
  147. return fromTime;
  148. }
  149. @Deprecated
  150. public void setFromTime(Integer fromTime) {
  151. this.fromTime = fromTime;
  152. }
  153. @Deprecated
  154. public Integer getToTime() {
  155. return toTime;
  156. }
  157. @Deprecated
  158. public void setToTime(Integer toTime) {
  159. this.toTime = toTime;
  160. }
  161. public String getDescription() {
  162. return description;
  163. }
  164. public void setDescription(String description) {
  165. this.description = description;
  166. }
  167. public boolean isRunImmediately() {
  168. return runImmediately;
  169. }
  170. public void setRunImmediately(boolean runImmediately) {
  171. this.runImmediately = runImmediately;
  172. }
  173. public String getTimeZone() {
  174. return timeZone;
  175. }
  176. public void setTimeZone(String timeZone) {
  177. this.timeZone = timeZone;
  178. }
  179. public void deserialize(JSONObject value) {
  180. id = JsonUtils.readOptionalString(value, "id");
  181. displayName = JsonUtils.readOptionalString(value, "displayName");
  182. jobName = JsonUtils.readOptionalString(value, "jobName");
  183. type = JobScheduleType.fromString(value.getString("type"));
  184. delay = JsonUtils.readOptionalInt(value, "delay");
  185. fromTime = JsonUtils.readOptionalInt(value, "fromTime");
  186. toTime = JsonUtils.readOptionalInt(value, "toTime");
  187. switch (type) {
  188. case CRON:
  189. cronExpression = value.getString("cronExpression");
  190. break;
  191. case FIXED_RATE:
  192. interval = value.getString("interval");
  193. break;
  194. case DAILY:
  195. hour = value.getIntValue("hour");
  196. break;
  197. case WEEKLY:
  198. dayOfWeek = value.getIntValue("dayOfWeek");
  199. hour = value.getIntValue("hour");
  200. break;
  201. }
  202. status = JsonUtils.readOptionalString(value, "status");
  203. timeZone = JsonUtils.readOptionalString(value, "timeZone");
  204. startTime = JsonUtils.readOptionalDate(value, "startTime");
  205. completeTime = JsonUtils.readOptionalDate(value, "completeTime");
  206. createTime = JsonUtils.readOptionalDate(value, "createTime");
  207. lastModifiedTime = JsonUtils.readOptionalDate(value, "lastModifiedTime");
  208. description = JsonUtils.readOptionalString(value, "description");
  209. runImmediately = JsonUtils.readBool(value, "runImmediately", false);
  210. }
  211. @Override
  212. public boolean equals(Object o) {
  213. if (this == o) return true;
  214. if (o == null || getClass() != o.getClass()) return false;
  215. JobSchedule schedule = (JobSchedule) o;
  216. if (getId() != null ? !getId().equals(schedule.getId()) : schedule.getId() != null) return false;
  217. if (getDisplayName() != null ? !getDisplayName().equals(schedule.getDisplayName()) : schedule.getDisplayName() != null)
  218. return false;
  219. if (getDescription() != null ? !getDescription().equals(schedule.getDescription()) : schedule.getDescription() != null)
  220. return false;
  221. if (getJobName() != null ? !getJobName().equals(schedule.getJobName()) : schedule.getJobName() != null)
  222. return false;
  223. if (getType() != schedule.getType()) return false;
  224. if (getInterval() != null ? !getInterval().equals(schedule.getInterval()) : schedule.getInterval() != null)
  225. return false;
  226. if (getCronExpression() != null ? !getCronExpression().equals(schedule.getCronExpression()) : schedule.getCronExpression() != null)
  227. return false;
  228. if (getDelay() != null ? !getDelay().equals(schedule.getDelay()) : schedule.getDelay() != null) return false;
  229. if (getDayOfWeek() != null ? !getDayOfWeek().equals(schedule.getDayOfWeek()) : schedule.getDayOfWeek() != null)
  230. return false;
  231. if (getHour() != null ? !getHour().equals(schedule.getHour()) : schedule.getHour() != null) return false;
  232. if (getFromTime() != null ? !getFromTime().equals(schedule.getFromTime()) : schedule.getFromTime() != null)
  233. return false;
  234. if (getToTime() != null ? !getToTime().equals(schedule.getToTime()) : schedule.getToTime() != null)
  235. return false;
  236. if (getStatus() != null ? !getStatus().equals(schedule.getStatus()) : schedule.getStatus() != null)
  237. return false;
  238. if (getCreateTime() != null ? !getCreateTime().equals(schedule.getCreateTime()) : schedule.getCreateTime() != null)
  239. return false;
  240. if (getLastModifiedTime() != null ? !getLastModifiedTime().equals(schedule.getLastModifiedTime()) : schedule.getLastModifiedTime() != null)
  241. return false;
  242. if (getStartTime() != null ? !getStartTime().equals(schedule.getStartTime()) : schedule.getStartTime() != null)
  243. return false;
  244. if (isRunImmediately() != schedule.isRunImmediately())
  245. return false;
  246. return getCompleteTime() != null ? getCompleteTime().equals(schedule.getCompleteTime()) : schedule.getCompleteTime() == null;
  247. }
  248. @Override
  249. public int hashCode() {
  250. int result = getId() != null ? getId().hashCode() : 0;
  251. result = 31 * result + (getDisplayName() != null ? getDisplayName().hashCode() : 0);
  252. result = 31 * result + (getDescription() != null ? getDescription().hashCode() : 0);
  253. result = 31 * result + (getJobName() != null ? getJobName().hashCode() : 0);
  254. result = 31 * result + (getType() != null ? getType().hashCode() : 0);
  255. result = 31 * result + (getInterval() != null ? getInterval().hashCode() : 0);
  256. result = 31 * result + (getCronExpression() != null ? getCronExpression().hashCode() : 0);
  257. result = 31 * result + (getDelay() != null ? getDelay().hashCode() : 0);
  258. result = 31 * result + (getDayOfWeek() != null ? getDayOfWeek().hashCode() : 0);
  259. result = 31 * result + (getHour() != null ? getHour().hashCode() : 0);
  260. result = 31 * result + (getFromTime() != null ? getFromTime().hashCode() : 0);
  261. result = 31 * result + (getToTime() != null ? getToTime().hashCode() : 0);
  262. result = 31 * result + (getStatus() != null ? getStatus().hashCode() : 0);
  263. result = 31 * result + (getCreateTime() != null ? getCreateTime().hashCode() : 0);
  264. result = 31 * result + (getLastModifiedTime() != null ? getLastModifiedTime().hashCode() : 0);
  265. result = 31 * result + (getStartTime() != null ? getStartTime().hashCode() : 0);
  266. result = 31 * result + (getCompleteTime() != null ? getCompleteTime().hashCode() : 0);
  267. result = 31 * result + (isRunImmediately() ? 1 : 0);
  268. return result;
  269. }
  270. }