View Javadoc
1   /*
2    * The coLAB project
3    * Copyright (C) 2021-2023 AlbaSim, MEI, HEIG-VD, HES-SO
4    *
5    * Licensed under the MIT License
6    */
7   package ch.colabproject.colab.api.model.monitoring;
8   
9   import ch.colabproject.colab.api.model.tools.EntityHelper;
10  import ch.colabproject.colab.generator.model.interfaces.WithId;
11  import ch.colabproject.colab.generator.model.interfaces.WithJsonDiscriminator;
12  import ch.colabproject.colab.generator.model.tools.DateSerDe;
13  
14  import javax.json.bind.annotation.JsonbTypeDeserializer;
15  import javax.json.bind.annotation.JsonbTypeSerializer;
16  import javax.persistence.*;
17  import javax.validation.constraints.NotNull;
18  import java.time.OffsetDateTime;
19  
20  /**
21   * Store cronjob related information
22   *
23   * @author mikkelvestergaard
24   */
25  @Entity
26  @Table
27  @NamedQuery(name = "CronJobLog.findAll", query = "SELECT c from CronJobLog c")
28  @NamedQuery(name = "CronJobLog.findByName",
29          query = "SELECT c from CronJobLog c where c.jobName = :jobName")
30  public class CronJobLog implements WithJsonDiscriminator, WithId {
31  
32      private static final long serialVersionUID = 1L;
33  
34      /** cron job log sequence name */
35      public static final String CRONJOBLOG_SEQUENCE_NAME = "monitoring_seq";
36  
37      /**
38       * Unique id
39       */
40      @Id
41      @SequenceGenerator(name = CRONJOBLOG_SEQUENCE_NAME, allocationSize = 1)
42      @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = CRONJOBLOG_SEQUENCE_NAME)
43      private Long id;
44  
45      /**
46       * Name of cronJob
47       */
48      @NotNull
49      @Enumerated(EnumType.STRING)
50      private CronJobLogName jobName;
51  
52      /**
53       * persisted cronJob time
54       */
55      @JsonbTypeDeserializer(DateSerDe.class)
56      @JsonbTypeSerializer(DateSerDe.class)
57      private OffsetDateTime lastRunTime;
58  
59      // ---------------------------------------------------------------------------------------------
60      // getters and setters
61      // ---------------------------------------------------------------------------------------------
62  
63      /**
64       * @return the project ID
65       */
66      @Override
67      public Long getId() {
68          return id;
69      }
70  
71      /**
72       * Set id
73       *
74       * @param id id
75       */
76      public void setId(Long id) {
77          this.id = id;
78      }
79  
80      /**
81       * @return the cronJob name
82       */
83      public CronJobLogName getJobName() {
84          return jobName;
85      }
86  
87      /**
88       * Set cronJob name
89       *
90       * @param jobName name
91       */
92      public void setJobName(CronJobLogName jobName) {
93          this.jobName = jobName;
94      }
95  
96      /**
97       * @return cronjob time
98       */
99      public OffsetDateTime getLastRunTime() {
100         return lastRunTime;
101     }
102 
103     /**
104      * @param lastRunTime new cronJobTime
105      */
106     public void setLastRunTime(OffsetDateTime lastRunTime) {
107         this.lastRunTime = lastRunTime;
108     }
109 
110     // ---------------------------------------------------------------------------------------------
111     // concerning the whole class
112     // ---------------------------------------------------------------------------------------------
113 
114     @Override
115     public int hashCode() {
116         return EntityHelper.hashCode(this);
117     }
118 
119     @Override
120     @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
121     public boolean equals(Object obj) {
122         return EntityHelper.equals(this, obj);
123     }
124 
125     @Override
126     public String toString() {
127         return "CronJobLog{" + "id=" + id + ", jobName=" + getJobName()
128                 + ", lastRunTime=" + getLastRunTime() + '}';
129     }
130 
131 }