use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.
the class CollectNumericRangeUnitValidator method evaluate.
@Override
public ValidationResultFlag evaluate(NumericRangeAttribute<?, ?> attribute) {
CollectRecord record = (CollectRecord) attribute.getRecord();
Step step = record.getStep();
ValidationResultFlag resultFlag = super.evaluate(attribute);
if (resultFlag == ValidationResultFlag.ERROR && step == Step.ENTRY) {
Character unitSymbolChar = attribute.getUnitField().getSymbol();
FieldSymbol unitSymbol = FieldSymbol.valueOf(unitSymbolChar);
if (unitSymbol != null && unitSymbol.isReasonBlank()) {
return ValidationResultFlag.WARNING;
}
}
return resultFlag;
}
use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.
the class CollectTaxonVernacularLanguageValidator method evaluate.
/**
* Returns:
* - OK if vernacular name, language code and language variety are all blank or all specified or
* vernacular name is specified and language code and language variety are not visible in the UI
* - ERROR if vernacular name is specified but language code not
* - WARNING if vernacular name is specified and reason blank for language code is specified too
*/
@Override
public ValidationResultFlag evaluate(TaxonAttribute attribute) {
TaxonAttributeDefinition defn = attribute.getDefinition();
CollectSurvey survey = (CollectSurvey) defn.getSurvey();
UIOptions uiOptions = survey.getUIOptions();
boolean vernacularNameBlank = StringUtils.isBlank(attribute.getVernacularName());
boolean langCodeBlank = StringUtils.isBlank(attribute.getLanguageCode());
boolean langCodeVisible = uiOptions.isVisibleField(defn, TaxonAttributeDefinition.LANGUAGE_CODE_FIELD_NAME);
boolean langVarietyBlank = StringUtils.isBlank(attribute.getLanguageVariety());
if ((vernacularNameBlank && langCodeBlank && langVarietyBlank) || (!vernacularNameBlank && !(langCodeVisible && langCodeBlank))) {
return ValidationResultFlag.OK;
} else {
CollectRecord record = (CollectRecord) attribute.getRecord();
Step step = record.getStep();
if (step == Step.ENTRY && langCodeBlank && FieldSymbol.isReasonBlankSpecified(attribute.getLanguageCodeField())) {
return ValidationResultFlag.WARNING;
} else {
return ValidationResultFlag.ERROR;
}
}
}
use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.
the class CollectValidator method validate.
@Override
public ValidationResults validate(Attribute<?, ?> attribute) {
ValidationResults results = new ValidationResults();
// skip validation for calculated attributes
if (attribute.getDefinition().isCalculated()) {
return results;
}
CollectRecord record = (CollectRecord) attribute.getRecord();
// check if attribute has been specified
boolean specifiedValid = validateSpecified ? validateSpecified(attribute, results) : true;
if (specifiedValid) {
Step step = record.getStep();
// validate root entity keys
if (isRootEntityKey(attribute)) {
validateRootEntityKey(attribute, results);
}
/*
* if the attribute is not empty and 'reason blank' has not been specified than validate it
*/
if (!(attribute.isEmpty() || isReasonBlankAlwaysSpecified(attribute))) {
validateAttributeValue(attribute, results);
if (!results.hasErrors()) {
validateAttributeChecks(attribute, results);
}
}
if (step == Step.ENTRY) {
results = adjustErrorsForEntryPhase(results, attribute);
}
record.updateAttributeValidationCache(attribute, results);
} else {
record.updateSkippedCount(attribute.getInternalId());
}
return results;
}
use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.
the class ValidationReportProcess method startProcessing.
@Override
public void startProcessing() throws Exception {
super.startProcessing();
List<CollectRecordSummary> summaries = recordManager.loadSummaries(recordFilter);
if (summaries != null) {
status.setTotal(summaries.size());
try {
initWriter();
writeHeader();
for (CollectRecordSummary summary : summaries) {
// print(outputStream, "Start validating record: " + recordKey);
if (status.isRunning()) {
Step step = summary.getStep();
Integer recordId = summary.getId();
CollectRecord record = recordManager.load(recordFilter.getSurvey(), recordId, step);
writeValidationReport(record);
status.incrementProcessed();
// long elapsedMillis = System.currentTimeMillis() - start;
// print(outputStream, "Validation of record " + recordKey + " completed in " + elapsedMillis + " millis");
}
}
closeWriter();
if (status.isRunning()) {
status.complete();
}
} catch (IOException e) {
status.error();
String message = e.getMessage();
status.setErrorMessage(message);
if (LOG.isErrorEnabled()) {
LOG.error(message, e);
}
}
}
}
Aggregations