From 854df6332773a2f8025767f6c34ce67375afb37b Mon Sep 17 00:00:00 2001 From: Mihai Postelnicu Date: Wed, 28 Feb 2018 13:48:59 +0200 Subject: [PATCH] OCE-399 OCUA: single bid only, but 12 flags related to bid price --- .../ocds/persistence/mongo/Detail.java | 51 +++++++++++++++++++ .../FlaggedReleasePredicates.java | 7 +++ .../release/ReleaseFlagI002Processor.java | 1 + .../release/ReleaseFlagI004Processor.java | 11 ++-- .../release/ReleaseFlagI007Processor.java | 18 ++++--- 5 files changed, 75 insertions(+), 13 deletions(-) diff --git a/persistence-mongodb/src/main/java/org/devgateway/ocds/persistence/mongo/Detail.java b/persistence-mongodb/src/main/java/org/devgateway/ocds/persistence/mongo/Detail.java index ba29ab673..b1e8f5899 100644 --- a/persistence-mongodb/src/main/java/org/devgateway/ocds/persistence/mongo/Detail.java +++ b/persistence-mongodb/src/main/java/org/devgateway/ocds/persistence/mongo/Detail.java @@ -1,9 +1,11 @@ package org.devgateway.ocds.persistence.mongo; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; @@ -12,7 +14,9 @@ import org.devgateway.ocds.persistence.mongo.merge.MergeStrategy; import java.util.Date; +import java.util.HashMap; import java.util.LinkedHashSet; +import java.util.Map; import java.util.Set; @@ -222,4 +226,51 @@ public boolean equals(Object other) { ).isEquals(); } + + /** + * see https://github.com/open-contracting/ocds_bid_extension/blob/master/codelists/bidStatus.csv + */ + public enum Status { + + invited("invited"), + cancelled("pending"), + valid("valid"), + disqualified("disqualified"), + withdrawn("withdrawn"); + + private final String value; + private static final Map CONSTANTS = new HashMap(); + + static { + for (Detail.Status c : values()) { + CONSTANTS.put(c.value, c); + } + } + + Status(String value) { + this.value = value; + } + + @Override + public String toString() { + return this.value; + } + + @JsonValue + public String value() { + return this.value; + } + + @JsonCreator + public static Detail.Status fromValue(String value) { + Detail.Status constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException(value); + } else { + return constant; + } + } + + } + } diff --git a/persistence-mongodb/src/main/java/org/devgateway/ocds/persistence/mongo/flags/preconditions/FlaggedReleasePredicates.java b/persistence-mongodb/src/main/java/org/devgateway/ocds/persistence/mongo/flags/preconditions/FlaggedReleasePredicates.java index 847047abd..49aa6da9a 100644 --- a/persistence-mongodb/src/main/java/org/devgateway/ocds/persistence/mongo/flags/preconditions/FlaggedReleasePredicates.java +++ b/persistence-mongodb/src/main/java/org/devgateway/ocds/persistence/mongo/flags/preconditions/FlaggedReleasePredicates.java @@ -4,6 +4,7 @@ import org.devgateway.ocds.persistence.mongo.Award; import org.devgateway.ocds.persistence.mongo.FlaggedRelease; import org.devgateway.ocds.persistence.mongo.Tender; +import org.springframework.util.ObjectUtils; /** * @author mpostelnicu @@ -51,6 +52,12 @@ private FlaggedReleasePredicates() { && Tender.ProcurementMethod.limited.equals(p.getTender().getProcurementMethod()) ); + public static final NamedPredicate BIDS = + new NamedPredicate<>( + "Needs to have at least one bid", + p -> !ObjectUtils.isEmpty(p.getBids()) && !ObjectUtils.isEmpty(p.getBids().getDetails()) + ); + public static final NamedPredicate ACTIVE_AWARD_WITH_DATE = new NamedPredicate<>( "Needs to have at least one active award with date", diff --git a/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI002Processor.java b/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI002Processor.java index e2949581f..3443c9235 100644 --- a/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI002Processor.java +++ b/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI002Processor.java @@ -33,6 +33,7 @@ public class ReleaseFlagI002Processor extends AbstractFlaggedReleaseFlagProcesso protected void setPredicates() { preconditionsPredicates = Collections.synchronizedList(Arrays.asList( FlaggedReleasePredicates.ACTIVE_AWARD, + FlaggedReleasePredicates.BIDS, FlaggedReleasePredicates.UNSUCCESSFUL_AWARD, FlaggedReleasePredicates.ELECTRONIC_SUBMISSION, FlaggedReleasePredicates.OPEN_PROCUREMENT_METHOD diff --git a/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI004Processor.java b/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI004Processor.java index 4c4edf8df..c1e1302c7 100644 --- a/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI004Processor.java +++ b/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI004Processor.java @@ -1,17 +1,18 @@ package org.devgateway.ocds.web.flags.release; import com.google.common.collect.ImmutableMap; -import java.math.BigDecimal; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; import org.devgateway.ocds.persistence.mongo.FlaggedRelease; import org.devgateway.ocds.persistence.mongo.flags.AbstractFlaggedReleaseFlagProcessor; import org.devgateway.ocds.persistence.mongo.flags.Flag; import org.devgateway.ocds.persistence.mongo.flags.FlagType; import org.devgateway.ocds.persistence.mongo.flags.preconditions.FlaggedReleasePredicates; +import java.math.BigDecimal; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + /** * @author mpostelnicu *

diff --git a/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI007Processor.java b/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI007Processor.java index 8d7f7b84c..2e2cf7663 100644 --- a/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI007Processor.java +++ b/web/src/main/java/org/devgateway/ocds/web/flags/release/ReleaseFlagI007Processor.java @@ -1,11 +1,6 @@ package org.devgateway.ocds.web.flags.release; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; -import javax.annotation.PostConstruct; import org.devgateway.ocds.persistence.mongo.FlaggedRelease; import org.devgateway.ocds.persistence.mongo.flags.AbstractFlaggedReleaseFlagProcessor; import org.devgateway.ocds.persistence.mongo.flags.Flag; @@ -13,6 +8,12 @@ import org.devgateway.ocds.persistence.mongo.flags.preconditions.FlaggedReleasePredicates; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + /** * @author mpostelnicu *

@@ -28,10 +29,10 @@ protected void setFlag(Flag flag, FlaggedRelease flaggable) { @Override protected Boolean calculateFlag(FlaggedRelease flaggable, StringBuffer rationale) { - long countAwards = flaggable.getAwards().size(); + long countBids = flaggable.getBids().getDetails().size(); - rationale.append("Number of bids: ").append(countAwards); - return countAwards == 1; + rationale.append("Number of bids: ").append(countBids); + return countBids == 1; } @Override @@ -44,6 +45,7 @@ protected Set flagTypes() { protected void setPredicates() { preconditionsPredicates = Collections.synchronizedList( Arrays.asList(FlaggedReleasePredicates.ACTIVE_AWARD, + FlaggedReleasePredicates.BIDS, FlaggedReleasePredicates.OPEN_PROCUREMENT_METHOD, FlaggedReleasePredicates.ELECTRONIC_SUBMISSION ));