Skip to content

Commit

Permalink
Fix polling implementations
Browse files Browse the repository at this point in the history
  • Loading branch information
pasqualino-cristaudo-acn committed Apr 5, 2024
1 parent 4ce9d57 commit 5e85797
Show file tree
Hide file tree
Showing 12 changed files with 177 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,17 @@
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

import java.util.UUID;


@Getter
@Builder
@Setter
public class PnPollingParameter {

private String value;
private int user = 0;
private PollingType pollingType;
private UUID streamId;
public enum PollingType {SLOW,RAPID,SHORT}

}
private PollingType pollingType;
public enum PollingType {SLOW, RAPID, SHORT}
private String value;
private PnPollingPredicate pnPollingPredicate;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package it.pagopa.pn.client.b2b.pa.polling.dto;

import lombok.Getter;
import lombok.Setter;
import java.util.function.Predicate;


@Getter
@Setter
public class PnPollingPredicate {
private Predicate<it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v1.TimelineElement> timelineElementPredicateV1;
private Predicate<it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v2.TimelineElementV20> timelineElementPredicateV20;
private Predicate<it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v21.TimelineElementV20> timelineElementPredicateV21;
private Predicate<it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model.TimelineElementV23> timelineElementPredicateV23;
private Predicate<it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v1.NotificationStatusHistoryElement> notificationStatusHistoryElementPredicateV1;
private Predicate<it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v2.NotificationStatusHistoryElement> notificationStatusHistoryElementPredicateV20;
private Predicate<it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v21.NotificationStatusHistoryElement> notificationStatusHistoryElementPredicateV21;
private Predicate<it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model.NotificationStatusHistoryElement> notificationStatusHistoryElementPredicateV23;
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.lang.invoke.MethodHandles;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.function.Predicate;

Expand Down Expand Up @@ -58,7 +60,7 @@ protected Predicate<PnPollingResponseV1> checkCondition(String iun, PnPollingPar
return false;
}

if(!isEqualState(pnPollingResponse, pnPollingParameter.getValue())) {
if(!isEqualStatus(pnPollingResponse, pnPollingParameter)) {
pnPollingResponse.setResult(false);
return false;
}
Expand Down Expand Up @@ -102,13 +104,17 @@ public ApiKeyType getApiKeySetted() {
return this.pnPaB2bClient.getApiKeySetted();
}

private boolean isEqualState(PnPollingResponseV1 pnPollingResponse, String value) {
private boolean isEqualStatus(PnPollingResponseV1 pnPollingResponse, PnPollingParameter pnPollingParameter) {
NotificationStatusHistoryElement notificationStatusHistoryElement = pnPollingResponse.getNotification()
.getNotificationStatusHistory()
.stream()
.filter(notification -> notification
.getStatus()
.getValue().equals(value))
.filter(pnPollingParameter.getPnPollingPredicate() == null
?
statusHistory -> statusHistory
.getStatus()
.getValue().equals(pnPollingParameter.getValue())
:
pnPollingParameter.getPnPollingPredicate().getNotificationStatusHistoryElementPredicateV1())
.findAny()
.orElse(null);
return notificationStatusHistoryElement != null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.lang.invoke.MethodHandles;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.function.Predicate;

Expand Down Expand Up @@ -58,7 +59,7 @@ protected Predicate<PnPollingResponseV20> checkCondition(String iun, PnPollingPa
return false;
}

if(!isEqualState(pnPollingResponse, pnPollingParameter.getValue())) {
if(!isEqualStatus(pnPollingResponse, pnPollingParameter)) {
pnPollingResponse.setResult(false);
return false;
}
Expand Down Expand Up @@ -102,13 +103,17 @@ public ApiKeyType getApiKeySetted() {
return this.pnPaB2bClient.getApiKeySetted();
}

private boolean isEqualState(PnPollingResponseV20 pnPollingResponse, String value) {
private boolean isEqualStatus(PnPollingResponseV20 pnPollingResponse, PnPollingParameter pnPollingParameter) {
NotificationStatusHistoryElement notificationStatusHistoryElement = pnPollingResponse.getNotification()
.getNotificationStatusHistory()
.stream()
.filter(notification -> notification
.getStatus()
.getValue().equals(value))
.filter(pnPollingParameter.getPnPollingPredicate() == null
?
statusHistory -> statusHistory
.getStatus()
.getValue().equals(pnPollingParameter.getValue())
:
pnPollingParameter.getPnPollingPredicate().getNotificationStatusHistoryElementPredicateV20())
.findAny()
.orElse(null);
return notificationStatusHistoryElement != null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.lang.invoke.MethodHandles;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.function.Predicate;

Expand Down Expand Up @@ -58,7 +59,7 @@ protected Predicate<PnPollingResponseV21> checkCondition(String iun, PnPollingPa
return false;
}

if(!isEqualState(pnPollingResponse, pnPollingParameter.getValue())) {
if(!isEqualStatus(pnPollingResponse, pnPollingParameter)) {
pnPollingResponse.setResult(false);
return false;
}
Expand Down Expand Up @@ -102,13 +103,17 @@ public ApiKeyType getApiKeySetted() {
return this.pnPaB2bClient.getApiKeySetted();
}

private boolean isEqualState(PnPollingResponseV21 pnPollingResponse, String value) {
private boolean isEqualStatus(PnPollingResponseV21 pnPollingResponse, PnPollingParameter pnPollingParameter) {
NotificationStatusHistoryElement notificationStatusHistoryElement = pnPollingResponse.getNotification()
.getNotificationStatusHistory()
.stream()
.filter(notification -> notification
.getStatus()
.getValue().equals(value))
.filter(pnPollingParameter.getPnPollingPredicate() == null
?
statusHistory -> statusHistory
.getStatus()
.getValue().equals(pnPollingParameter.getValue())
:
pnPollingParameter.getPnPollingPredicate().getNotificationStatusHistoryElementPredicateV21())
.findAny()
.orElse(null);
return notificationStatusHistoryElement != null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.lang.invoke.MethodHandles;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.function.Predicate;

Expand Down Expand Up @@ -58,7 +59,7 @@ protected Predicate<PnPollingResponseV23> checkCondition(String iun, PnPollingPa
return false;
}

if(!isEqualState(pnPollingResponse, pnPollingParameter.getValue())) {
if(!isEqualStatus(pnPollingResponse, pnPollingParameter)) {
pnPollingResponse.setResult(false);
return false;
}
Expand Down Expand Up @@ -102,13 +103,17 @@ public ApiKeyType getApiKeySetted() {
return this.pnPaB2bClient.getApiKeySetted();
}

private boolean isEqualState(PnPollingResponseV23 pnPollingResponse, String value) {
private boolean isEqualStatus(PnPollingResponseV23 pnPollingResponse, PnPollingParameter pnPollingParameter) {
NotificationStatusHistoryElement notificationStatusHistoryElement = pnPollingResponse.getNotification()
.getNotificationStatusHistory()
.stream()
.filter(notification -> notification
.getStatus()
.getValue().equals(value))
.filter(pnPollingParameter.getPnPollingPredicate() == null
?
statusHistory -> statusHistory
.getStatus()
.getValue().equals(pnPollingParameter.getValue())
:
pnPollingParameter.getPnPollingPredicate().getNotificationStatusHistoryElementPredicateV23())
.findAny()
.orElse(null);
return notificationStatusHistoryElement != null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package it.pagopa.pn.client.b2b.pa.polling.impl;

import it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model.TimelineElementV23;
import it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v1.FullSentNotification;
import it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v1.TimelineElement;
import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingStrategy;
import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingTemplate;
import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingParameter;
import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV1;
import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV23;
import it.pagopa.pn.client.b2b.pa.polling.exception.PnPollingException;
import it.pagopa.pn.client.b2b.pa.service.IPnPaB2bClient;
import it.pagopa.pn.client.b2b.pa.utils.TimingForTimeline;
Expand All @@ -15,6 +17,7 @@
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.lang.invoke.MethodHandles;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.function.Predicate;

Expand Down Expand Up @@ -59,7 +62,7 @@ protected Predicate<PnPollingResponseV1> checkCondition(String iun, PnPollingPar
}

if(pnPollingResponse.getNotification().getTimeline().isEmpty() ||
!isPresentCategory(pnPollingResponse, pnPollingParameter.getValue())) {
!isPresentCategory(pnPollingResponse, pnPollingParameter)) {
pnPollingResponse.setResult(false);
return false;
}
Expand Down Expand Up @@ -103,17 +106,21 @@ public ApiKeyType getApiKeySetted() {
return this.pnPaB2bClient.getApiKeySetted();
}

private boolean isPresentCategory(PnPollingResponseV1 pnPollingResponse, String value) {
TimelineElement timelineElementV1 = pnPollingResponse
.getNotification()
.getTimeline()
.stream()
.filter(timelineElement ->
timelineElement.getCategory() != null
&& timelineElement.getCategory().getValue().equals(value))
.findAny()
.orElse(null);

private boolean isPresentCategory(PnPollingResponseV1 pnPollingResponse, PnPollingParameter pnPollingParameter) {
TimelineElement timelineElementV1 = pnPollingResponse
.getNotification()
.getTimeline()
.stream()
.filter(pnPollingParameter.getPnPollingPredicate() == null
?
timelineElement->
timelineElement.getCategory() != null
&& Objects.requireNonNull(timelineElement.getCategory().getValue()).equals(pnPollingParameter.getValue())
:
pnPollingParameter.getPnPollingPredicate().getTimelineElementPredicateV1())
.findAny()
.orElse(null);
return timelineElementV1 != null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.lang.invoke.MethodHandles;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.function.Predicate;

Expand Down Expand Up @@ -59,7 +60,7 @@ protected Predicate<PnPollingResponseV20> checkCondition(String iun, PnPollingPa
}

if(pnPollingResponse.getNotification().getTimeline().isEmpty() ||
!isPresentCategory(pnPollingResponse, pnPollingParameter.getValue())) {
!isPresentCategory(pnPollingResponse, pnPollingParameter)) {
pnPollingResponse.setResult(false);
return false;
}
Expand Down Expand Up @@ -103,14 +104,18 @@ public ApiKeyType getApiKeySetted() {
return this.pnPaB2bClient.getApiKeySetted();
}

private boolean isPresentCategory(PnPollingResponseV20 pnPollingResponse, String value) {
private boolean isPresentCategory(PnPollingResponseV20 pnPollingResponse, PnPollingParameter pnPollingParameter) {
TimelineElementV20 timelineElementV20 = pnPollingResponse
.getNotification()
.getTimeline()
.stream()
.filter(timelineElement ->
timelineElement.getCategory() != null
&& timelineElement.getCategory().getValue().equals(value))
.filter(pnPollingParameter.getPnPollingPredicate() == null
?
timelineElement->
timelineElement.getCategory() != null
&& Objects.requireNonNull(timelineElement.getCategory().getValue()).equals(pnPollingParameter.getValue())
:
pnPollingParameter.getPnPollingPredicate().getTimelineElementPredicateV20())
.findAny()
.orElse(null);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package it.pagopa.pn.client.b2b.pa.polling.impl;

import it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model.TimelineElementV23;
import it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v21.FullSentNotificationV21;
import it.pagopa.pn.client.b2b.pa.generated.openapi.clients.externalb2bpa.model_v21.TimelineElementV20;
import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingStrategy;
import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingTemplate;
import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingParameter;
import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV21;
import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV23;
import it.pagopa.pn.client.b2b.pa.polling.exception.PnPollingException;
import it.pagopa.pn.client.b2b.pa.service.IPnPaB2bClient;
import it.pagopa.pn.client.b2b.pa.utils.TimingForTimeline;
Expand All @@ -15,6 +17,7 @@
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.lang.invoke.MethodHandles;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.function.Predicate;

Expand Down Expand Up @@ -59,7 +62,7 @@ protected Predicate<PnPollingResponseV21> checkCondition(String iun, PnPollingPa
}

if(pnPollingResponse.getNotification().getTimeline().isEmpty() ||
!isPresentCategory(pnPollingResponse, pnPollingParameter.getValue())) {
!isPresentCategory(pnPollingResponse, pnPollingParameter)) {
pnPollingResponse.setResult(false);
return false;
}
Expand Down Expand Up @@ -103,17 +106,20 @@ public ApiKeyType getApiKeySetted() {
return this.pnPaB2bClient.getApiKeySetted();
}

private boolean isPresentCategory(PnPollingResponseV21 pnPollingResponse, String value) {
private boolean isPresentCategory(PnPollingResponseV21 pnPollingResponse, PnPollingParameter pnPollingParameter) {
TimelineElementV20 timelineElementV20 = pnPollingResponse
.getNotification()
.getTimeline()
.stream()
.filter(timelineElement ->
.getNotification()
.getTimeline()
.stream()
.filter(pnPollingParameter.getPnPollingPredicate() == null
?
timelineElement->
timelineElement.getCategory() != null
&& timelineElement.getCategory().getValue().equals(value))
.findAny()
.orElse(null);

&& Objects.requireNonNull(timelineElement.getCategory().getValue()).equals(pnPollingParameter.getValue())
:
pnPollingParameter.getPnPollingPredicate().getTimelineElementPredicateV21())
.findAny()
.orElse(null);
return timelineElementV20 != null;
}
}
Loading

0 comments on commit 5e85797

Please sign in to comment.