Skip to content

Commit e5e4937

Browse files
authored
Merge pull request #160 from folio-org/MODWRKFLOW-69
MODWRKFLOW-69: Support checksums, created on date, and updated on date.
2 parents 56d22d6 + 9f47279 commit e5e4937

8 files changed

Lines changed: 248 additions & 36 deletions

File tree

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package org.folio.rest.workflow.dto;
22

3+
import org.folio.rest.workflow.model.has.HasChecksum;
4+
import org.folio.rest.workflow.model.has.HasCreatedOn;
35
import org.folio.rest.workflow.model.has.HasDeploymentId;
46
import org.folio.rest.workflow.model.has.HasId;
57
import org.folio.rest.workflow.model.has.HasInformational;
68
import org.folio.rest.workflow.model.has.HasName;
79
import org.folio.rest.workflow.model.has.HasNodes;
10+
import org.folio.rest.workflow.model.has.HasUpdatedOn;
811
import org.folio.rest.workflow.model.has.HasVersionTag;
912
import org.folio.rest.workflow.model.has.common.HasWorkflowCommon;
1013

1114
/**
1215
* This is a DTO design for providing the entire {@link org.folio.rest.workflow.model.Workflow Workflow} model.
1316
*/
14-
public interface WorkflowDto extends HasDeploymentId, HasId, HasInformational, HasName, HasNodes, HasVersionTag, HasWorkflowCommon {
17+
public interface WorkflowDto extends HasChecksum, HasCreatedOn, HasDeploymentId, HasId, HasInformational, HasName, HasNodes, HasUpdatedOn, HasVersionTag, HasWorkflowCommon {
1518

1619
}

components/src/main/java/org/folio/rest/workflow/model/Workflow.java

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.folio.rest.workflow.model;
22

33
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import jakarta.annotation.Nullable;
45
import jakarta.persistence.CollectionTable;
56
import jakarta.persistence.Column;
67
import jakarta.persistence.Convert;
@@ -15,16 +16,20 @@
1516
import jakarta.validation.constraints.Min;
1617
import jakarta.validation.constraints.NotNull;
1718
import jakarta.validation.constraints.Size;
19+
import java.time.Instant;
1820
import java.util.ArrayList;
1921
import java.util.HashMap;
2022
import java.util.List;
2123
import java.util.Map;
2224
import 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;
2327
import org.folio.rest.workflow.model.has.HasDeploymentId;
2428
import org.folio.rest.workflow.model.has.HasId;
2529
import org.folio.rest.workflow.model.has.HasInformational;
2630
import org.folio.rest.workflow.model.has.HasName;
2731
import org.folio.rest.workflow.model.has.HasNodes;
32+
import org.folio.rest.workflow.model.has.HasUpdatedOn;
2833
import org.folio.rest.workflow.model.has.HasVersionTag;
2934
import org.folio.rest.workflow.model.has.common.HasWorkflowCommon;
3035
import org.folio.spring.domain.model.AbstractBaseEntity;
@@ -34,12 +39,20 @@
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
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.folio.rest.workflow.model.has;
2+
3+
/**
4+
* This interface provides the Checksum methods.
5+
*/
6+
public interface HasChecksum {
7+
8+
public String getChecksum();
9+
10+
public void setChecksum(String checksum);
11+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.folio.rest.workflow.model.has;
2+
3+
import java.time.Instant;
4+
5+
/**
6+
* This interface provides the CreatedOn methods.
7+
*/
8+
public interface HasCreatedOn {
9+
10+
public Instant getCreatedOn();
11+
12+
public void setCreatedOn(Instant createdOn);
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.folio.rest.workflow.model.has;
2+
3+
import java.time.Instant;
4+
5+
/**
6+
* This interface provides the UpdatedOn methods.
7+
*/
8+
public interface HasUpdatedOn {
9+
10+
public Instant getUpdatedOn();
11+
12+
public void setUpdatedOn(Instant updatedOn);
13+
}

0 commit comments

Comments
 (0)