diff --git a/src/main/java/uk/gov/ccs/entity/DefaultQuestions.java b/src/main/java/uk/gov/ccs/entity/DefaultQuestions.java index 700fdfe..4e4a1d6 100644 --- a/src/main/java/uk/gov/ccs/entity/DefaultQuestions.java +++ b/src/main/java/uk/gov/ccs/entity/DefaultQuestions.java @@ -107,5 +107,9 @@ public class DefaultQuestions { @Column(name = "event_type") String eventType; + + @Type(JsonType.class) + @Column(name = "options", columnDefinition = "jsonb") + String options; } diff --git a/src/main/java/uk/gov/ccs/mapper/DataTemplateToDefaultQuestionsMapper.java b/src/main/java/uk/gov/ccs/mapper/DataTemplateToDefaultQuestionsMapper.java index af55571..b9184a6 100644 --- a/src/main/java/uk/gov/ccs/mapper/DataTemplateToDefaultQuestionsMapper.java +++ b/src/main/java/uk/gov/ccs/mapper/DataTemplateToDefaultQuestionsMapper.java @@ -12,6 +12,7 @@ import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -99,6 +100,7 @@ private DefaultQuestions buildDefaultQuestion( String lotId, String eventType, Timestamp now) { try { + Requirement.OCDS ocds = requirement.getOcds(); Requirement.NonOCDS nonOCDS = requirement.getNonOCDS(); RequirementGroup.OCDS groupOcds = requirementGroup.getOcds(); @@ -143,6 +145,11 @@ private DefaultQuestions buildDefaultQuestion( } } + List options = Optional.of(requirement) + .map(Requirement::getNonOCDS) + .map(Requirement.NonOCDS::getOptions) + .orElse(Collections.emptyList()); + DefaultQuestions.DefaultQuestionsBuilder builder = DefaultQuestions.builder() .agreementId(agreementId) .lotId(lotId) @@ -171,7 +178,8 @@ private DefaultQuestions buildDefaultQuestion( .templateName(dt.getTemplateName()) .templateMandatory(dt.getMandatory()) .templateParent(dt.getParent()) // parent only available in DOS6 - .eventType(eventType); + .eventType(eventType) + .options(objectMapper.writeValueAsString(options)); return builder.build(); diff --git a/src/main/java/uk/gov/ccs/mapper/DefaultQuestionsToDataTemplateMapper.java b/src/main/java/uk/gov/ccs/mapper/DefaultQuestionsToDataTemplateMapper.java index f1c7144..f0887da 100644 --- a/src/main/java/uk/gov/ccs/mapper/DefaultQuestionsToDataTemplateMapper.java +++ b/src/main/java/uk/gov/ccs/mapper/DefaultQuestionsToDataTemplateMapper.java @@ -1,10 +1,12 @@ package uk.gov.ccs.mapper; import com.fasterxml.jackson.core.type.TypeReference; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import uk.gov.ccs.entity.DefaultQuestions; import uk.gov.ccs.model.agreements.*; +import java.lang.reflect.Type; import java.util.*; import java.util.stream.Collectors; @@ -140,7 +142,20 @@ private Requirement buildRequirement(DefaultQuestions question) { .maxValue(null) // Not available in default_questions table .period(null) // Not available in default_questions table .build(); - + + List options = null; + + if(StringUtils.isNotEmpty(question.getOptions())) { + try { + options = objectMapper.readValue(question.getOptions(), + new TypeReference<>() { + }); + } catch (Exception ex) { + log.error("Error parsing question options. error {}", ex.getMessage()); + rollbar.warning("Error parsing question options: " + ex.getMessage()); + } + } + // Build nonOCDS part Requirement.NonOCDS.NonOCDSBuilder nonOCDSBuilder = Requirement.NonOCDS.builder() .order(question.getQuestionOrder()) @@ -152,7 +167,7 @@ private Requirement buildRequirement(DefaultQuestions question) { .inheritance(null) // Not available in default_questions table .inheritsFrom(null) // Not available in default_questions table .timelineDependency(null) // Not available in default_questions table - .options(null); // Not available in default_questions table (answers stored separately) + .options(options); // Parse dependency if exists Dependency dependency = null; diff --git a/src/main/java/uk/gov/ccs/model/agreements/Requirement.java b/src/main/java/uk/gov/ccs/model/agreements/Requirement.java index f1021b9..24b07c1 100644 --- a/src/main/java/uk/gov/ccs/model/agreements/Requirement.java +++ b/src/main/java/uk/gov/ccs/model/agreements/Requirement.java @@ -145,11 +145,13 @@ public static class OCDS { @Data @Builder @Jacksonized + @JsonInclude(JsonInclude.Include.NON_NULL) public static class Option { String value; Boolean select; String text; TableDefinition tableDefinition; + Boolean selected; } }