Search in sources :

Example 46 with Step

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;
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) ValidationResultFlag(org.openforis.idm.metamodel.validation.ValidationResultFlag) FieldSymbol(org.openforis.collect.model.FieldSymbol) Step(org.openforis.collect.model.CollectRecord.Step)

Example 47 with Step

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;
        }
    }
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) TaxonAttributeDefinition(org.openforis.idm.metamodel.TaxonAttributeDefinition) UIOptions(org.openforis.collect.metamodel.ui.UIOptions) Step(org.openforis.collect.model.CollectRecord.Step) CollectSurvey(org.openforis.collect.model.CollectSurvey)

Example 48 with Step

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;
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) ValidationResults(org.openforis.idm.metamodel.validation.ValidationResults) Step(org.openforis.collect.model.CollectRecord.Step)

Example 49 with Step

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);
            }
        }
    }
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) CollectRecordSummary(org.openforis.collect.model.CollectRecordSummary) Step(org.openforis.collect.model.CollectRecord.Step) IOException(java.io.IOException)

Aggregations

Step (org.openforis.collect.model.CollectRecord.Step)49 CollectRecord (org.openforis.collect.model.CollectRecord)24 CollectRecordSummary (org.openforis.collect.model.CollectRecordSummary)21 CollectSurvey (org.openforis.collect.model.CollectSurvey)11 ArrayList (java.util.ArrayList)9 RecordStep (org.openforis.collect.event.RecordStep)8 SessionState (org.openforis.collect.web.session.SessionState)8 StepSummary (org.openforis.collect.model.CollectRecordSummary.StepSummary)7 IOException (java.io.IOException)5 RecordFilter (org.openforis.collect.model.RecordFilter)5 NodeUnmarshallingError (org.openforis.collect.persistence.xml.NodeUnmarshallingError)5 MainStep (org.openforis.collect.io.data.DataImportState.MainStep)4 SubStep (org.openforis.collect.io.data.DataImportState.SubStep)4 User (org.openforis.collect.model.User)4 EntityDefinition (org.openforis.idm.metamodel.EntityDefinition)4 Schema (org.openforis.idm.metamodel.Schema)4 Date (java.util.Date)3 HashMap (java.util.HashMap)3 List (java.util.List)3 Secured (org.springframework.security.access.annotation.Secured)3