Skip to content
This repository was archived by the owner on Oct 6, 2023. It is now read-only.

Commit 160bec5

Browse files
author
sowerstl
committed
Switch MetadataSnapshotKey to @embeddable for @EmbeddedId usage. Was not correctly converting Status enum to string in some cases.
1 parent 6b36a26 commit 160bec5

File tree

3 files changed

+34
-50
lines changed

3 files changed

+34
-50
lines changed

src/main/java/gov/osti/entity/MetadataSnapshot.java

Lines changed: 16 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,12 @@
33

44
import com.fasterxml.jackson.annotation.JsonFormat;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
6-
import gov.osti.entity.DOECodeMetadata.Status;
76
import java.io.Serializable;
87
import java.util.Date;
98
import javax.persistence.Basic;
109
import javax.persistence.Column;
10+
import javax.persistence.EmbeddedId;
1111
import javax.persistence.Entity;
12-
import javax.persistence.EnumType;
13-
import javax.persistence.Enumerated;
14-
import javax.persistence.Id;
15-
import javax.persistence.IdClass;
1612
import javax.persistence.Lob;
1713
import javax.persistence.NamedQueries;
1814
import javax.persistence.NamedQuery;
@@ -25,30 +21,24 @@
2521

2622
/**
2723
* A storage cache Entity for Approved Metadata values.
28-
*
24+
*
2925
3026
*/
3127
@Entity
32-
@IdClass (MetadataSnapshotKey.class)
3328
@Table (name = "metadata_snapshot",
34-
uniqueConstraints = {
29+
uniqueConstraints = {
3530
@UniqueConstraint (columnNames = {"code_id", "snapshot_status"})
3631
}
3732
)
3833
@JsonIgnoreProperties (ignoreUnknown = true)
3934
@NamedQueries ({
40-
@NamedQuery (name = "MetadataSnapshot.findByCodeIdAndStatus", query = "SELECT s FROM MetadataSnapshot s WHERE s.codeId=:codeId AND s.snapshotStatus=:status"),
41-
@NamedQuery (name = "MetadataSnapshot.findAllByStatus", query = "SELECT s FROM MetadataSnapshot s WHERE s.snapshotStatus=:status"),
42-
@NamedQuery (name = "MetadataSnapshot.findByCodeIdLastNotStatus", query = "SELECT s FROM MetadataSnapshot s WHERE s.codeId=:codeId AND s.snapshotStatus<>:status ORDER BY s.dateRecordUpdated DESC")
35+
@NamedQuery (name = "MetadataSnapshot.findByCodeIdAndStatus", query = "SELECT s FROM MetadataSnapshot s WHERE s.snapshotKey.codeId=:codeId AND s.snapshotKey.snapshotStatus=:status"),
36+
@NamedQuery (name = "MetadataSnapshot.findAllByStatus", query = "SELECT s FROM MetadataSnapshot s WHERE s.snapshotKey.snapshotStatus=:status"),
37+
@NamedQuery (name = "MetadataSnapshot.findByCodeIdLastNotStatus", query = "SELECT s FROM MetadataSnapshot s WHERE s.snapshotKey.codeId=:codeId AND s.snapshotKey.snapshotStatus<>:status ORDER BY s.dateRecordUpdated DESC")
4338
})
4439
public class MetadataSnapshot implements Serializable {
45-
@Id
46-
@Column (name = "code_id")
47-
private Long codeId;
48-
@Id
49-
@Enumerated (EnumType.STRING)
50-
@Column (name = "snapshot_status")
51-
private Status snapshotStatus;
40+
@EmbeddedId
41+
private MetadataSnapshotKey snapshotKey = new MetadataSnapshotKey();
5242
@Lob
5343
@Column (name = "json")
5444
private String json;
@@ -65,19 +55,19 @@ public class MetadataSnapshot implements Serializable {
6555
private Date dateRecordUpdated;
6656

6757
/**
68-
* Get the CODE ID identifier.
69-
* @return the codeId
58+
* Get the SnapshotKey of the Metadata Object.
59+
* @return a MetadataSnapshotKey object
7060
*/
71-
public Long getCodeId() {
72-
return codeId;
61+
public MetadataSnapshotKey getSnapshotKey() {
62+
return snapshotKey;
7363
}
7464

7565
/**
76-
* Set the unique CODE ID value.
77-
* @param codeId the codeId to set
66+
* Set the SnapshotKey of the Metadata Object.
67+
* @param key MetadataSnapshotKey object
7868
*/
79-
public void setCodeId(Long codeId) {
80-
this.codeId = codeId;
69+
public void setSnapshotKey(MetadataSnapshotKey key) {
70+
this.snapshotKey = key;
8171
}
8272

8373
/**
@@ -96,20 +86,6 @@ public void setJson(String json) {
9686
this.json = json;
9787
}
9888

99-
/**
100-
* @return the snapshotStatus
101-
*/
102-
public Status getSnapshotStatus() {
103-
return snapshotStatus;
104-
}
105-
106-
/**
107-
* @param snapshotStatus the snapshotStatus to set
108-
*/
109-
public void setSnapshotStatus(Status snapshotStatus) {
110-
this.snapshotStatus = snapshotStatus;
111-
}
112-
11389
/**
11490
* Method called when a record is first created. Sets dates added and
11591
* updated.

src/main/java/gov/osti/entity/MetadataSnapshotKey.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,22 @@
55
import gov.osti.entity.DOECodeMetadata.Status;
66
import java.io.Serializable;
77
import java.util.Objects;
8+
import javax.persistence.Column;
9+
import javax.persistence.Embeddable;
10+
import javax.persistence.EnumType;
11+
import javax.persistence.Enumerated;
812

913
/**
1014
* Implement a primary composite key for the METADATA_SNAPSHOT Entity.
11-
*
15+
*
1216
* @author ensornl
1317
*/
18+
@Embeddable
1419
public class MetadataSnapshotKey implements Serializable {
20+
@Column (name = "code_id")
1521
private Long codeId;
22+
@Enumerated (EnumType.STRING)
23+
@Column (name = "snapshot_status")
1624
private Status snapshotStatus;
1725

1826
/**
@@ -42,14 +50,14 @@ public Status getSnapshotStatus() {
4250
public void setSnapshotStatus(Status snapshotStatus) {
4351
this.snapshotStatus = snapshotStatus;
4452
}
45-
53+
4654
@Override
4755
public boolean equals(Object o) {
4856
if (o instanceof MetadataSnapshotKey ) {
4957
return ((MetadataSnapshotKey)o).getCodeId().equals(getCodeId()) &&
5058
((MetadataSnapshotKey)o).getSnapshotStatus().equals(getSnapshotStatus());
5159
}
52-
60+
5361
return false;
5462
}
5563

src/main/java/gov/osti/services/Metadata.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ public Response listProjects(
509509
String lastApprovalFor = "";
510510
List<MetadataSnapshot> results = querySnapshot.setMaxResults(1).getResultList();
511511
for ( MetadataSnapshot ms : results ) {
512-
lastApprovalFor = ms.getSnapshotStatus().toString();
512+
lastApprovalFor = ms.getSnapshotKey().getSnapshotStatus().toString();
513513
}
514514

515515
// add "approve as" status indicator to response record, if not blank
@@ -1111,8 +1111,8 @@ private Response doSubmit(String json, InputStream file, FormDataContentDisposit
11111111

11121112
// store the snapshot copy of Metadata
11131113
MetadataSnapshot snapshot = new MetadataSnapshot();
1114-
snapshot.setCodeId(md.getCodeId());
1115-
snapshot.setSnapshotStatus(md.getWorkflowStatus());
1114+
snapshot.getSnapshotKey().setCodeId(md.getCodeId());
1115+
snapshot.getSnapshotKey().setSnapshotStatus(md.getWorkflowStatus());
11161116
snapshot.setJson(md.toJson().toString());
11171117

11181118
em.merge(snapshot);
@@ -1255,8 +1255,8 @@ private Response doAnnounce(String json, InputStream file, FormDataContentDispos
12551255
}
12561256
// store the snapshot copy of Metadata in SPECIAL STATUS
12571257
MetadataSnapshot snapshot = new MetadataSnapshot();
1258-
snapshot.setCodeId(md.getCodeId());
1259-
snapshot.setSnapshotStatus(md.getWorkflowStatus());
1258+
snapshot.getSnapshotKey().setCodeId(md.getCodeId());
1259+
snapshot.getSnapshotKey().setSnapshotStatus(md.getWorkflowStatus());
12601260
snapshot.setJson(md.toJson().toString());
12611261

12621262
em.merge(snapshot);
@@ -1535,8 +1535,8 @@ public Response approve(@PathParam("codeId") Long codeId) {
15351535

15361536
// store the snapshot copy of Metadata
15371537
MetadataSnapshot snapshot = new MetadataSnapshot();
1538-
snapshot.setCodeId(md.getCodeId());
1539-
snapshot.setSnapshotStatus(md.getWorkflowStatus());
1538+
snapshot.getSnapshotKey().setCodeId(md.getCodeId());
1539+
snapshot.getSnapshotKey().setSnapshotStatus(md.getWorkflowStatus());
15401540
snapshot.setJson(md.toJson().toString());
15411541

15421542
em.merge(snapshot);

0 commit comments

Comments
 (0)