Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Story/586/t3736/newdatastruc #702

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.rosetta.model.lib.validation;

import java.util.List;

public class AttributeValidation {
private String attributeName;
private String modelURI;
private ValidationResult cardinalityValidation;

private List<ValidationResult> itemValidations;

public AttributeValidation(String attributeName, String modelURI, ValidationResult cardinalityValidation, List<ValidationResult> itemValidations) {
this.attributeName = attributeName;
this.modelURI = modelURI;
this.cardinalityValidation = cardinalityValidation;
this.itemValidations = itemValidations;
}

public String getAttributeName() {
return attributeName;
}

public String getModelURI() {
return modelURI;
}

public ValidationResult getCardinalityValidation() {
return cardinalityValidation;
}

public List<ValidationResult> getItemValidations() {
return itemValidations;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.rosetta.model.lib.validation;

public class CardinalityValidationData extends ValidationData{

private int lowerBound;
private int upperBound;
private int actual;

public CardinalityValidationData (int lowerBound, int upperBound, int actual) {
this.lowerBound = lowerBound;
this.upperBound = upperBound;
this.actual = actual;
}

public int getLowerBound() {
return lowerBound;
}

public int getUpperBound() {
return upperBound;
}

public int getActual() {
return actual;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.rosetta.model.lib.validation;

import java.util.List;

public class ConditionValidation {
private String attributeName;
private String modelURI;

private ValidationResult cardinalityValidation;

private List<ValidationResult> itemValidations;

public ConditionValidation(String attributeName, String modelURI, ValidationResult cardinalityValidation, List<ValidationResult> itemValidations) {
this.attributeName = attributeName;
this.modelURI = modelURI;
this.cardinalityValidation = cardinalityValidation;
this.itemValidations = itemValidations;
}

public String getAttributeName() {
return attributeName;
}

public String getModelURI() {
return modelURI;
}

public ValidationResult getCardinalityValidation() {
return cardinalityValidation;
}

public List<ValidationResult> getItemValidations() {
return itemValidations;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.rosetta.model.lib.validation;

public class ConditionValidationData extends ValidationData{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.rosetta.model.lib.validation;

import java.math.BigDecimal;

public class NumberValidationData extends ValidationData{
private BigDecimal min;
private BigDecimal max;
private int digits;
private int fractionalDigits;
private BigDecimal actual;

public NumberValidationData(BigDecimal min, BigDecimal max, int digits, int fractionalDigits, BigDecimal actual) {
this.min = min;
this.max = max;
this.digits = digits;
this.fractionalDigits = fractionalDigits;
this.actual = actual;
}

public BigDecimal getMin() {
return min;
}

public BigDecimal getMax() {
return max;
}

public int getDigits() {
return digits;
}

public int getFractionalDigits() {
return fractionalDigits;
}

public BigDecimal getActual() {
return actual;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.rosetta.model.lib.validation;

public interface RosettaModelObjectValidator<T> {

void validate();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.rosetta.model.lib.validation;

import java.util.regex.Pattern;

public class StringValidationData extends ValidationData{

private int minLength;
private int maxLength;
private Pattern pattern;
private String actual;

public StringValidationData(int minLength, int maxLength, Pattern pattern, String actual) {
this.minLength = minLength;
this.maxLength = maxLength;
this.pattern = pattern;
this.actual = actual;
}

public int getMinLength() {
return minLength;
}

public int getMaxLength() {
return maxLength;
}

public Pattern getPattern() {
return pattern;
}

public String getActual() {
return actual;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.rosetta.model.lib.validation;

import com.rosetta.model.lib.ModelSymbolId;

import java.util.List;

public class TypeValidation extends ValidationData {

private final ModelSymbolId typeId;

private final List<ValidationResult> formatValidations;
private final List<AttributeValidation> attributeValidations;
private final List<ConditionValidation> conditionValidation;


public TypeValidation(ModelSymbolId typeId, List<ValidationResult> formatValidations, List<AttributeValidation> attributeValidations, List<ConditionValidation> conditionValidation) {
this.typeId = typeId;
this.formatValidations = formatValidations;
this.attributeValidations = attributeValidations;
this.conditionValidation = conditionValidation;
}

public ModelSymbolId getTypeId() {
return typeId;
}

public List<ValidationResult> getFormatValidations() {
return formatValidations;
}

public List<AttributeValidation> getAttributeValidations() {
return attributeValidations;
}

public List<ConditionValidation> getConditionValidation() {
return conditionValidation;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.rosetta.model.lib.validation;

public class ValidationData {
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,37 @@ public interface ValidationResult<T> {

boolean isSuccess();

@Deprecated
String getModelObjectName();

@Deprecated
String getName();

ValidationType getValidationType();

@Deprecated
ValidationType getValidationType();
@Deprecated
String getDefinition();

Optional<String> getFailureReason();

RosettaPath getPath();

Optional<ValidationData> getData();

static <T> ValidationResult<T> success(String name, ValidationType validationType, String modelObjectName, RosettaPath path, String definition) {
return new ModelValidationResult<>(name, validationType, modelObjectName, path, definition, Optional.empty());
return new ModelValidationResult<>(name, validationType, modelObjectName, path, definition, Optional.empty(), Optional.empty());
}

static <T> ValidationResult<T> failure(String name, ValidationType validationType, String modelObjectName, RosettaPath path, String definition, String failureMessage) {
return new ModelValidationResult<>(name, validationType, modelObjectName, path, definition, Optional.of(failureMessage));
return new ModelValidationResult<>(name, validationType, modelObjectName, path, definition, Optional.of(failureMessage), Optional.empty());
}

// @Compat: MODEL_INSTANCE is replaced by CARDINALITY, TYPE_FORMAT, KEY and can be removed in the future.
enum ValidationType {
DATA_RULE, CHOICE_RULE, MODEL_INSTANCE, CARDINALITY, TYPE_FORMAT, KEY, ONLY_EXISTS, PRE_PROCESS_EXCEPTION, POST_PROCESS_EXCEPTION
}

@Deprecated
class ModelValidationResult<T> implements ValidationResult<T> {

private final String modelObjectName;
Expand All @@ -47,14 +53,16 @@ class ModelValidationResult<T> implements ValidationResult<T> {
private final Optional<String> failureReason;
private final ValidationType validationType;
private final RosettaPath path;
private final Optional<ValidationData> data;

public ModelValidationResult(String name, ValidationType validationType, String modelObjectName, RosettaPath path, String definition, Optional<String> failureReason) {
public ModelValidationResult(String name, ValidationType validationType, String modelObjectName, RosettaPath path, String definition, Optional<String> failureReason, Optional<ValidationData> data) {
this.name = name;
this.validationType = validationType;
this.path = path;
this.modelObjectName = modelObjectName;
this.definition = definition;
this.failureReason = failureReason;
this.data = data;
}

@Override
Expand All @@ -76,6 +84,11 @@ public RosettaPath getPath() {
return path;
}

@Override
public Optional<ValidationData> getData() {
return data;
}

@Override
public String getDefinition() {
return definition;
Expand Down Expand Up @@ -130,14 +143,16 @@ class ChoiceRuleFailure<T> implements ValidationResult<T> {
private final ChoiceRuleValidationMethod validationMethod;
private final RosettaPath path;

private final Optional<ValidationData> data;
public ChoiceRuleFailure(String name, String modelObjectName, List<String> choiceFieldNames, RosettaPath path, List<String> populatedFields,
ChoiceRuleValidationMethod validationMethod) {
ChoiceRuleValidationMethod validationMethod, Optional<ValidationData> data) {
this.name = name;
this.path = path;
this.modelObjectName = modelObjectName;
this.populatedFields = populatedFields;
this.choiceFieldNames = choiceFieldNames;
this.validationMethod = validationMethod;
this.data = data;
}

@Override
Expand All @@ -153,7 +168,10 @@ public String getName() {
public RosettaPath getPath() {
return path;
}

@Override
public Optional<ValidationData> getData() {
return data;
}
@Override
public String getModelObjectName() {
return modelObjectName;
Expand Down Expand Up @@ -221,17 +239,19 @@ public String getDescription() {
}
}

@Deprecated
class ProcessValidationResult<T> implements ValidationResult<T> {
private String message;
private String modelObjectName;
private String processorName;
private RosettaPath path;

public ProcessValidationResult(String message, String modelObjectName, String processorName, RosettaPath path) {
private final Optional<ValidationData> data;
public ProcessValidationResult(String message, String modelObjectName, String processorName, RosettaPath path, Optional<ValidationData> data) {
this.message = message;
this.modelObjectName = modelObjectName;
this.processorName = processorName;
this.path = path;
this.data = data;
}

@Override
Expand Down Expand Up @@ -268,5 +288,10 @@ public Optional<String> getFailureReason() {
public RosettaPath getPath() {
return path;
}

@Override
public Optional<ValidationData> getData() {
return data;
}
}
}