diff options
author | Jim Hahn <jrh3@att.com> | 2021-06-18 16:03:04 -0400 |
---|---|---|
committer | Ajith Sreekumar <ajith.sreekumar@bell.ca> | 2021-06-22 08:37:55 +0000 |
commit | f144c7386aff063dc9f696cc2e1bbb393e9e3f93 (patch) | |
tree | 26df0aaa4cdc551d83810bc85a93adfcb17ec5fd /models-pdp/src/main/java | |
parent | 9e01b2e7180f61d8a57e55fed6a2fa5619f9f947 (diff) |
Add timestamp to Pdp records
To support the case where multiple PAPs are running, added a timestamp
to the PDP records so the PAPs can all be kept in sync as far as when a
PDP was last responsive.
Issue-ID: POLICY-2898
Change-Id: Ia7e0fd17363ff5827564cbc1537e516156b7f53a
Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'models-pdp/src/main/java')
-rw-r--r-- | models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/Pdp.java | 11 | ||||
-rw-r--r-- | models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java | 43 |
2 files changed, 37 insertions, 17 deletions
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/Pdp.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/Pdp.java index 034374c29..978dd7cc8 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/Pdp.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/Pdp.java @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2019 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ package org.onap.policy.models.pdp.concepts; +import java.time.Instant; import lombok.Data; import lombok.NoArgsConstructor; import lombok.NonNull; @@ -48,6 +49,13 @@ public class Pdp { private String message; /** + * Time when the record was last updated as a result of receiving a message from the + * PDP. + */ + private Instant lastUpdate; + + + /** * Constructs the object, creating a deep copy of the fields from the source. * * @param source source from which to copy the fields @@ -57,5 +65,6 @@ public class Pdp { this.pdpState = source.pdpState; this.healthy = source.healthy; this.message = source.message; + this.lastUpdate = source.lastUpdate; } } diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java index daa327d9f..7c584f3e6 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java @@ -24,6 +24,7 @@ package org.onap.policy.models.pdp.persistence.concepts; import java.io.Serializable; +import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.EmbeddedId; @@ -31,10 +32,12 @@ import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; -import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.builder.CompareToBuilder; import org.onap.policy.common.parameters.BeanValidationResult; import org.onap.policy.common.parameters.annotations.NotBlank; import org.onap.policy.common.parameters.annotations.NotNull; @@ -77,6 +80,10 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl @NotBlank private String message; + @Column(precision = 0) + @Temporal(TemporalType.TIMESTAMP) + private Date lastUpdate; + /** * The Default Constructor creates a {@link JpaPdp} object with a null key. */ @@ -101,10 +108,11 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl * @param healthy the health state of the PDP */ public JpaPdp(@NonNull final PfReferenceKey key, @NonNull final PdpState pdpState, - @NonNull PdpHealthStatus healthy) { + @NonNull PdpHealthStatus healthy) { this.key = key; this.pdpState = pdpState; this.healthy = healthy; + this.lastUpdate = new Date(); } /** @@ -118,6 +126,7 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl this.pdpState = copyConcept.pdpState; this.healthy = copyConcept.healthy; this.message = copyConcept.message; + this.lastUpdate = copyConcept.lastUpdate; } /** @@ -137,6 +146,7 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl pdp.setPdpState(pdpState); pdp.setHealthy(healthy); pdp.setMessage(message); + pdp.setLastUpdate(lastUpdate.toInstant()); return pdp; } @@ -151,6 +161,12 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl this.setPdpState(pdp.getPdpState()); this.setHealthy(pdp.getHealthy()); this.setMessage(pdp.getMessage()); + + if (pdp.getLastUpdate() == null) { + this.setLastUpdate(new Date()); + } else { + this.setLastUpdate(Date.from(pdp.getLastUpdate())); + } } @Override @@ -193,20 +209,15 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl } final JpaPdp other = (JpaPdp) otherConcept; - if (!key.equals(other.key)) { - return key.compareTo(other.key); - } - - int result = ObjectUtils.compare(pdpState, other.pdpState); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(healthy, other.healthy); - if (result != 0) { - return result; - } - return ObjectUtils.compare(message, other.message); + // @formatter:off + return new CompareToBuilder() + .append(this.key, other.key) + .append(this.pdpState, other.pdpState) + .append(this.healthy, other.healthy) + .append(this.message, other.message) + .append(this.lastUpdate, other.lastUpdate) + .toComparison(); + // @formatter:on } } |