Search in sources :

Example 11 with Step

use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.

the class DataBackupTask method countTotalItems.

@Override
protected long countTotalItems() {
    int count = 0;
    List<CollectRecordSummary> recordSummaries = recordManager.loadSummaries(recordFilter);
    if (CollectionUtils.isNotEmpty(recordSummaries) && steps != null && steps.length > 0) {
        for (CollectRecordSummary summary : recordSummaries) {
            for (Step step : steps) {
                if (step.getStepNumber() <= summary.getStep().getStepNumber()) {
                    count++;
                }
            }
        }
    }
    return count;
}
Also used : CollectRecordSummary(org.openforis.collect.model.CollectRecordSummary) Step(org.openforis.collect.model.CollectRecord.Step)

Example 12 with Step

use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.

the class DataBackupTask method execute.

@Override
protected void execute() throws Throwable {
    List<CollectRecordSummary> recordSummaries = recordManager.loadSummaries(recordFilter);
    if (CollectionUtils.isNotEmpty(recordSummaries) && steps != null && steps.length > 0) {
        for (CollectRecordSummary summary : recordSummaries) {
            for (Step step : steps) {
                if (isRunning()) {
                    if (step.getStepNumber() <= summary.getStep().getStepNumber()) {
                        backup(summary, step);
                        incrementProcessedItems();
                    }
                } else {
                    break;
                }
            }
            if (isRunning()) {
                writeSummaryEntry(summary);
            }
        }
    }
}
Also used : CollectRecordSummary(org.openforis.collect.model.CollectRecordSummary) Step(org.openforis.collect.model.CollectRecord.Step)

Example 13 with Step

use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.

the class XMLDataImportProcess method createDataImportSummary.

private void createDataImportSummary() throws DataImportExeption {
    try {
        state.setSubStep(SubStep.RUNNING);
        summary = null;
        packagedSurvey = extractPackagedSurvey();
        existingSurvey = loadExistingSurvey();
        validatePackagedSurvey();
        if (existingSurvey == null) {
            dataUnmarshaller = new DataUnmarshaller(packagedSurvey);
        } else {
            dataUnmarshaller = new DataUnmarshaller(existingSurvey, packagedSurvey);
        }
        Map<Step, Integer> totalPerStep = new HashMap<CollectRecord.Step, Integer>();
        for (Step step : Step.values()) {
            totalPerStep.put(step, 0);
        }
        Map<Integer, CollectRecord> packagedRecords = new HashMap<Integer, CollectRecord>();
        Map<Integer, List<Step>> packagedStepsPerRecord = new HashMap<Integer, List<Step>>();
        Map<String, List<NodeUnmarshallingError>> packagedSkippedFileErrors = new HashMap<String, List<NodeUnmarshallingError>>();
        Map<Integer, CollectRecordSummary> conflictingPackagedRecords = new HashMap<Integer, CollectRecordSummary>();
        Map<Integer, Map<Step, List<NodeUnmarshallingError>>> warnings = new HashMap<Integer, Map<Step, List<NodeUnmarshallingError>>>();
        state.setTotal(backupFileExtractor.size());
        state.resetCount();
        List<String> entryNames = backupFileExtractor.getEntryNames();
        for (String entryName : entryNames) {
            if (state.getSubStep() != DataImportState.SubStep.RUNNING) {
                break;
            }
            if (!RecordEntry.isValidRecordEntry(entryName)) {
                continue;
            }
            createSummaryForEntry(entryName, packagedSkippedFileErrors, packagedRecords, packagedStepsPerRecord, totalPerStep, conflictingPackagedRecords, warnings);
        }
        if (state.getSubStep() == SubStep.RUNNING) {
            String oldSurveyName = existingSurvey == null ? null : existingSurvey.getName();
            summary = createSummary(packagedSkippedFileErrors, oldSurveyName, totalPerStep, packagedRecords, packagedStepsPerRecord, conflictingPackagedRecords, warnings);
            state.setSubStep(DataImportState.SubStep.COMPLETE);
        }
        includesRecordFiles = backupFileExtractor.isIncludingRecordFiles();
    } catch (Exception e) {
        state.setSubStep(SubStep.ERROR);
        state.setErrorMessage(e.getMessage());
        LOG.error(e.getMessage(), e);
    } finally {
        IOUtils.closeQuietly(backupFileExtractor);
    }
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) HashMap(java.util.HashMap) NodeUnmarshallingError(org.openforis.collect.persistence.xml.NodeUnmarshallingError) MainStep(org.openforis.collect.io.data.DataImportState.MainStep) SubStep(org.openforis.collect.io.data.DataImportState.SubStep) Step(org.openforis.collect.model.CollectRecord.Step) IdmlParseException(org.openforis.idm.metamodel.xml.IdmlParseException) SurveyValidationException(org.openforis.collect.manager.exception.SurveyValidationException) ZipException(java.util.zip.ZipException) RecordPersistenceException(org.openforis.collect.persistence.RecordPersistenceException) IOException(java.io.IOException) DataUnmarshaller(org.openforis.collect.persistence.xml.DataUnmarshaller) CollectRecordSummary(org.openforis.collect.model.CollectRecordSummary) List(java.util.List) ArrayList(java.util.ArrayList) Map(java.util.Map) HashMap(java.util.HashMap)

Example 14 with Step

use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.

the class XMLDataImportProcess method createSummary.

private DataImportSummary createSummary(Map<String, List<NodeUnmarshallingError>> packagedSkippedFileErrors, String surveyName, Map<Step, Integer> totalPerStep, Map<Integer, CollectRecord> packagedRecords, Map<Integer, List<Step>> packagedStepsPerRecord, Map<Integer, CollectRecordSummary> conflictingPackagedRecords, Map<Integer, Map<Step, List<NodeUnmarshallingError>>> warnings) {
    DataImportSummary summary = new DataImportSummary();
    summary.setSurveyName(surveyName);
    List<DataImportSummaryItem> recordsToImport = new ArrayList<DataImportSummaryItem>();
    Set<Integer> entryIds = packagedRecords.keySet();
    for (Integer entryId : entryIds) {
        CollectRecord record = packagedRecords.get(entryId);
        if (!conflictingPackagedRecords.containsKey(entryId)) {
            List<Step> steps = packagedStepsPerRecord.get(entryId);
            DataImportSummaryItem item = new DataImportSummaryItem(entryId, CollectRecordSummary.fromRecord(record), steps);
            item.setWarnings(warnings.get(entryId));
            recordsToImport.add(item);
        }
    }
    List<DataImportSummaryItem> conflictingRecordItems = new ArrayList<DataImportSummaryItem>();
    Set<Integer> conflictingEntryIds = conflictingPackagedRecords.keySet();
    for (Integer entryId : conflictingEntryIds) {
        CollectRecord record = packagedRecords.get(entryId);
        CollectRecordSummary conflictingRecord = conflictingPackagedRecords.get(entryId);
        List<Step> steps = packagedStepsPerRecord.get(entryId);
        DataImportSummaryItem item = new DataImportSummaryItem(entryId, CollectRecordSummary.fromRecord(record), steps, conflictingRecord);
        item.setWarnings(warnings.get(entryId));
        conflictingRecordItems.add(item);
    }
    summary.setRecordsToImport(recordsToImport);
    summary.setConflictingRecords(conflictingRecordItems);
    List<FileErrorItem> packagedSkippedFileErrorsList = new ArrayList<DataImportSummary.FileErrorItem>();
    Set<String> skippedFileNames = packagedSkippedFileErrors.keySet();
    for (String fileName : skippedFileNames) {
        List<NodeUnmarshallingError> nodeErrors = packagedSkippedFileErrors.get(fileName);
        FileErrorItem fileErrorItem = new FileErrorItem(fileName, nodeErrors);
        packagedSkippedFileErrorsList.add(fileErrorItem);
    }
    summary.setSkippedFileErrors(packagedSkippedFileErrorsList);
    summary.setTotalPerStep(totalPerStep);
    return summary;
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) NodeUnmarshallingError(org.openforis.collect.persistence.xml.NodeUnmarshallingError) ArrayList(java.util.ArrayList) FileErrorItem(org.openforis.collect.io.data.DataImportSummary.FileErrorItem) MainStep(org.openforis.collect.io.data.DataImportState.MainStep) SubStep(org.openforis.collect.io.data.DataImportState.SubStep) Step(org.openforis.collect.model.CollectRecord.Step) CollectRecordSummary(org.openforis.collect.model.CollectRecordSummary)

Example 15 with Step

use of org.openforis.collect.model.CollectRecord.Step in project collect by openforis.

the class DataRestoreSummaryTask method execute.

@Override
protected void execute() throws Throwable {
    if (fullSummary || dataSummaryFile == null) {
        List<Integer> idsToImport = extractEntryIdsToImport();
        for (Integer entryId : idsToImport) {
            if (!isRunning()) {
                break;
            }
            for (Step step : Step.values()) {
                if (!isRunning()) {
                    break;
                }
                createSummaryForEntry(entryId, step);
            }
        }
    } else {
        CsvReader dataSummaryCSVReader = null;
        try {
            dataSummaryCSVReader = new CsvReader(dataSummaryFile);
            dataSummaryCSVReader.readHeaders();
            CsvLine line = dataSummaryCSVReader.readNextLine();
            while (line != null) {
                Integer entryId = line.getValue("entry_id", Integer.class);
                String stepVal = line.getValue("step", String.class);
                Step step = Step.valueOf(stepVal);
                CollectRecordSummary recordSummary = new CollectRecordSummary();
                recordSummary.setStep(step);
                Integer rootEntityDefId = line.getValue("root_entity_id", Integer.class);
                recordSummary.setRootEntityDefinitionId(rootEntityDefId);
                Date creationDate = Dates.parseDateTime(line.getValue("created_on", String.class));
                Date modifiedDate = Dates.parseDateTime(line.getValue("last_modified", String.class));
                recordSummary.setCreationDate(creationDate);
                recordSummary.setModifiedDate(modifiedDate);
                StepSummary stepSummary = new StepSummary(step);
                List<String> rootEntityKeyValues = Arrays.asList(line.getValue("key1", String.class), line.getValue("key2", String.class), line.getValue("key3", String.class));
                stepSummary.setRootEntityKeyValues(rootEntityKeyValues);
                stepSummary.setCreationDate(creationDate);
                stepSummary.setModifiedDate(modifiedDate);
                recordSummary.addStepSummary(stepSummary);
                recordSummaryByEntryId.put(entryId, recordSummary);
                for (Step s : Step.values()) {
                    if (s.beforeEqual(step)) {
                        addStepPerEntry(entryId, s);
                        incrementTotalPerStep(step);
                        incrementProcessedItems();
                    }
                }
                CollectRecordSummary oldRecord = findAlreadyExistingRecordSummary(entryId, step, rootEntityDefId, rootEntityKeyValues);
                if (oldRecord != null) {
                    conflictingRecordByEntryId.put(entryId, oldRecord);
                }
                line = dataSummaryCSVReader.readNextLine();
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            IOUtils.closeQuietly(dataSummaryCSVReader);
        }
    }
}
Also used : CsvReader(org.openforis.commons.io.csv.CsvReader) StepSummary(org.openforis.collect.model.CollectRecordSummary.StepSummary) CollectRecordSummary(org.openforis.collect.model.CollectRecordSummary) Step(org.openforis.collect.model.CollectRecord.Step) CsvLine(org.openforis.commons.io.csv.CsvLine) Date(java.util.Date) 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