11package org .folio .rest .workflow .model ;
22
33import com .fasterxml .jackson .annotation .JsonIgnoreProperties ;
4+ import jakarta .annotation .Nullable ;
45import jakarta .persistence .CollectionTable ;
56import jakarta .persistence .Column ;
67import jakarta .persistence .Convert ;
1516import jakarta .validation .constraints .Min ;
1617import jakarta .validation .constraints .NotNull ;
1718import jakarta .validation .constraints .Size ;
19+ import java .time .Instant ;
1820import java .util .ArrayList ;
1921import java .util .HashMap ;
2022import java .util .List ;
2123import java .util .Map ;
2224import org .folio .rest .workflow .model .converter .JsonNodeConverter ;
25+ import org .folio .rest .workflow .model .has .HasChecksum ;
26+ import org .folio .rest .workflow .model .has .HasCreatedOn ;
2327import org .folio .rest .workflow .model .has .HasDeploymentId ;
2428import org .folio .rest .workflow .model .has .HasId ;
2529import org .folio .rest .workflow .model .has .HasInformational ;
2630import org .folio .rest .workflow .model .has .HasName ;
2731import org .folio .rest .workflow .model .has .HasNodes ;
32+ import org .folio .rest .workflow .model .has .HasUpdatedOn ;
2833import org .folio .rest .workflow .model .has .HasVersionTag ;
2934import org .folio .rest .workflow .model .has .common .HasWorkflowCommon ;
3035import org .folio .spring .domain .model .AbstractBaseEntity ;
3439
3540@ Entity
3641@ JsonIgnoreProperties ({ "hibernateLazyInitializer" , "handler" })
37- public class Workflow extends AbstractBaseEntity implements HasDeploymentId , HasId , HasInformational , HasName , HasNodes , HasVersionTag , HasWorkflowCommon {
42+ public class Workflow extends AbstractBaseEntity implements HasChecksum , HasCreatedOn , HasDeploymentId , HasId , HasInformational , HasName , HasNodes , HasUpdatedOn , HasVersionTag , HasWorkflowCommon {
3843
3944 @ Column (nullable = true )
4045 @ ColumnDefault ("false" )
4146 private Boolean active ;
4247
48+ @ Nullable
49+ @ Column
50+ private String checksum ;
51+
52+ @ NotNull
53+ @ Column (columnDefinition ="TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()" )
54+ private Instant createdOn ;
55+
4356 @ Column (unique = true )
4457 private String deploymentId ;
4558
@@ -70,6 +83,10 @@ public class Workflow extends AbstractBaseEntity implements HasDeploymentId, Has
7083 @ Embedded
7184 private Setup setup ;
7285
86+ @ NotNull
87+ @ Column (columnDefinition ="TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()" )
88+ private Instant updatedOn ;
89+
7390 @ Version
7491 @ NotNull
7592 @ Size (min = 1 , max = 64 )
@@ -80,10 +97,13 @@ public Workflow() {
8097 super ();
8198
8299 active = false ;
100+ checksum = null ;
101+ createdOn = now ();
83102 name = "" ;
84103 historyTimeToLive = 0 ;
85104 initialContext = new HashMap <>();
86105 nodes = new ArrayList <>();
106+ updatedOn = now ();
87107 versionTag = "1.0" ;
88108 }
89109
@@ -93,6 +113,10 @@ public void prePersist() {
93113 active = false ;
94114 }
95115
116+ if (createdOn == null ) {
117+ createdOn = now ();
118+ }
119+
96120 if (historyTimeToLive == null ) {
97121 historyTimeToLive = 0 ;
98122 }
@@ -109,6 +133,10 @@ public void prePersist() {
109133 nodes = new ArrayList <>();
110134 }
111135
136+ if (updatedOn == null ) {
137+ updatedOn = now ();
138+ }
139+
112140 if (versionTag == null ) {
113141 versionTag = "1.0" ;
114142 }
@@ -124,6 +152,16 @@ public Boolean getActive() {
124152 return active ;
125153 }
126154
155+ @ Override
156+ public String getChecksum () {
157+ return checksum ;
158+ }
159+
160+ @ Override
161+ public Instant getCreatedOn () {
162+ return createdOn ;
163+ }
164+
127165 @ Override
128166 public Integer getHistoryTimeToLive () {
129167 return historyTimeToLive ;
@@ -139,6 +177,11 @@ public Setup getSetup() {
139177 return setup ;
140178 }
141179
180+ @ Override
181+ public Instant getUpdatedOn () {
182+ return updatedOn ;
183+ }
184+
142185 @ Override
143186 public String getVersionTag () {
144187 return versionTag ;
@@ -169,6 +212,16 @@ public void setActive(Boolean active) {
169212 this .active = active ;
170213 }
171214
215+ @ Override
216+ public void setChecksum (String checksum ) {
217+ this .checksum = checksum ;
218+ }
219+
220+ @ Override
221+ public void setCreatedOn (Instant createdOn ) {
222+ this .createdOn = createdOn ;
223+ }
224+
172225 @ Override
173226 public void setHistoryTimeToLive (Integer historyTimeToLive ) {
174227 this .historyTimeToLive = historyTimeToLive ;
@@ -184,6 +237,11 @@ public void setSetup(Setup setup) {
184237 this .setup = setup ;
185238 }
186239
240+ @ Override
241+ public void setUpdatedOn (Instant updatedOn ) {
242+ this .updatedOn = updatedOn ;
243+ }
244+
187245 @ Override
188246 public void setVersionTag (String versionTag ) {
189247 this .versionTag = versionTag ;
@@ -209,4 +267,16 @@ public void setDeploymentId(String deploymentId) {
209267 this .deploymentId = deploymentId ;
210268 }
211269
270+ /**
271+ * Get the current time.
272+ *
273+ * This is used to allow for easier unit testing where the unit tests need only override this method through mocks or similar.
274+ *
275+ * @return The current instant.
276+ */
277+ Instant now () {
278+
279+ return Instant .now ();
280+ }
281+
212282}
0 commit comments