This repository has been archived on 2021-09-20. You can view files and clone it, but cannot push or open issues or pull requests.
geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/legacy/report/ValidationReport.java

81 lines
1.8 KiB
Java

package org.gcube.application.geoportal.common.model.legacy.report;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class ValidationReport implements Serializable{
/**
*
*/
private static final long serialVersionUID = -3629142756787381094L;
public static enum ValidationStatus{
PASSED, ERROR, WARNING
}
private String objectName;
private List<String> errorMessages=new ArrayList<String>();
private List<String> warningMessages=new ArrayList<String>();
private List<ValidationReport> children=new ArrayList<ValidationReport>();
public ValidationStatus getStatus() {
if(!errorMessages.isEmpty()) return ValidationStatus.ERROR;
boolean isWarning=(!warningMessages.isEmpty());
for(ValidationReport obj : children) {
ValidationStatus status=obj.getStatus();
if(status.equals(ValidationStatus.ERROR)) return ValidationStatus.ERROR;
if(status.equals(ValidationStatus.WARNING)) isWarning=true;
}
if(isWarning) return ValidationStatus.WARNING;
return ValidationStatus.PASSED;
}
public void addChild(ValidationReport obj) {
children.add(obj);
}
public void addMessage(ValidationStatus status,String message) {
switch (status) {
case ERROR:
errorMessages.add(message);
break;
case WARNING :
warningMessages.add(message);
default:
break;
}
}
public <T> boolean checkMandatory(T toCheck,String name,Check...checks) {
ConstraintCheck<T> check=new ConstraintCheck<T>(toCheck,name,checks);
if(check.isError())
this.addMessage(ValidationStatus.ERROR, check.getMessage());
return !check.isError();
}
public ValidationReport(String objectName) {
super();
this.objectName = objectName;
}
}