use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class RecordDao method fromSummaryQueryRecord.
public CollectRecordSummary fromSummaryQueryRecord(CollectSurvey survey, Record r) {
int rootEntityDefId = r.getValue(OFC_RECORD.ROOT_ENTITY_DEFINITION_ID);
String versionName = r.getValue(OFC_RECORD.MODEL_VERSION);
ModelVersion modelVersion = versionName == null ? null : survey.getVersion(versionName);
CollectRecordSummary s = new CollectRecordSummary();
s.setSurvey(survey);
s.setVersion(modelVersion);
s.setRootEntityDefinitionId(rootEntityDefId);
s.setId(r.getValue(OFC_RECORD.ID));
s.setOwner(createDetachedUser(r.getValue(OFC_RECORD.OWNER_ID)));
Step step = Step.valueOf(r.getValue(OFC_RECORD.STEP));
s.setStep(step);
s.setWorkflowSequenceNumber(r.getValue(OFC_RECORD.DATA_SEQ_NUM));
s.setCreationDate(r.getValue(OFC_RECORD.DATE_CREATED));
s.setModifiedDate(r.getValue(OFC_RECORD.DATE_MODIFIED));
s.setCreatedBy(createDetachedUser(r.getValue(OFC_RECORD.CREATED_BY_ID)));
s.setModifiedBy(createDetachedUser(r.getValue(OFC_RECORD.MODIFIED_BY_ID)));
StepSummary stepSummary = new StepSummary(step);
stepSummary.setSequenceNumber(r.getValue(OFC_RECORD.DATA_SEQ_NUM));
stepSummary.setErrors(r.getValue(OFC_RECORD.ERRORS));
stepSummary.setWarnings(r.getValue(OFC_RECORD.WARNINGS));
stepSummary.setSkipped(r.getValue(OFC_RECORD.SKIPPED));
stepSummary.setMissing(r.getValue(OFC_RECORD.MISSING));
int totalErrors = step == Step.ENTRY ? Numbers.sum(stepSummary.getErrors(), stepSummary.getSkipped()) : Numbers.sum(stepSummary.getErrors(), stepSummary.getMissingErrors());
stepSummary.setTotalErrors(totalErrors);
Schema schema = survey.getSchema();
EntityDefinition rootEntityDef = schema.getRootEntityDefinition(rootEntityDefId);
stepSummary.setRootEntityKeyValues(getFieldValues(r, rootEntityDef.getKeyAttributeDefinitions(), RECORD_KEY_FIELDS, String.class));
stepSummary.setEntityCounts(getFieldValues(r, schema.getCountableEntitiesInRecordList(rootEntityDef), RECORD_COUNT_FIELDS, Integer.class));
stepSummary.setQualifierValues(getFieldValues(r, schema.getQualifierAttributeDefinitions(rootEntityDef), RECORD_QUALIFIER_FIELDS, String.class));
stepSummary.setSummaryValues(getFieldValues(r, schema.getSummaryAttributeDefinitions(rootEntityDef), RECORD_SUMMARY_FIELDS, String.class));
String state = r.getValue(OFC_RECORD.STATE);
stepSummary.setState(state == null ? null : State.fromCode(state));
s.addStepSummary(stepSummary);
return s;
}
use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class RecordDao method fromDataSummaryQueryRecord.
@SuppressWarnings("unchecked")
public StepSummary fromDataSummaryQueryRecord(Record r, CollectSurvey survey) {
Step step = Step.valueOf(r.getValue(OFC_RECORD_DATA.STEP));
StepSummary s = new StepSummary(step);
s.setSequenceNumber(r.getValue(OFC_RECORD_DATA.SEQ_NUM));
s.setCreationDate(r.getValue(OFC_RECORD_DATA.DATE_CREATED));
s.setModifiedDate(r.getValue(OFC_RECORD_DATA.DATE_MODIFIED));
s.setCreatedBy(createDetachedUser(r.getValue(OFC_RECORD_DATA.CREATED_BY)));
s.setModifiedBy(createDetachedUser(r.getValue(OFC_RECORD_DATA.MODIFIED_BY)));
s.setErrors(r.getValue(OFC_RECORD_DATA.ERRORS));
s.setWarnings(r.getValue(OFC_RECORD_DATA.WARNINGS));
s.setSkipped(r.getValue(OFC_RECORD_DATA.SKIPPED));
s.setMissing(r.getValue(OFC_RECORD_DATA.MISSING));
// create list of entity counts
List<Integer> counts = new ArrayList<Integer>(RECORD_DATA_COUNT_FIELDS.length);
for (TableField tableField : RECORD_DATA_COUNT_FIELDS) {
counts.add((Integer) r.getValue(tableField));
}
s.setEntityCounts(counts);
int rootEntityDefId = r.getValue(OFC_RECORD.ROOT_ENTITY_DEFINITION_ID);
Schema schema = survey.getSchema();
EntityDefinition rootEntityDef = schema.getRootEntityDefinition(rootEntityDefId);
s.setRootEntityKeyValues(getFieldValues(r, rootEntityDef.getKeyAttributeDefinitions(), RECORD_DATA_KEY_FIELDS, String.class));
s.setEntityCounts(getFieldValues(r, schema.getCountableEntitiesInRecordList(rootEntityDef), RECORD_DATA_COUNT_FIELDS, Integer.class));
s.setQualifierValues(getFieldValues(r, schema.getQualifierAttributeDefinitions(rootEntityDef), RECORD_DATA_QUALIFIER_FIELDS, String.class));
s.setSummaryValues(getFieldValues(r, schema.getSummaryAttributeDefinitions(rootEntityDef), RECORD_DATA_SUMMARY_FIELDS, String.class));
String state = r.getValue(OFC_RECORD_DATA.STATE);
s.setState(state == null ? null : State.fromCode(state));
return s;
}
use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class RelationalSchemaGenerator method addDataTables.
private void addDataTables(RelationalSchema rs) throws CollectRdbException {
Survey survey = rs.getSurvey();
Schema schema = survey.getSchema();
// Recursively create tables, columns and constraints
List<EntityDefinition> roots = schema.getRootEntityDefinitions();
for (EntityDefinition root : roots) {
Path relativePath = Path.relative(root.getName());
addDataObjects(rs, null, root, relativePath);
}
}
use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class DataExportService method export.
@Transactional
public Proxy export(String rootEntityName, int stepNumber, Integer entityId, boolean includeAllAncestorAttributes, boolean includeEnumeratedEntities, boolean includeCompositeAttributeMergedColumn, boolean codeAttributeExpanded, boolean onlyOwnedRecords, String[] rootEntityKeyValues, boolean includeKMLColumnForCoordinates, boolean includeCodeItemLabelColumn, String headingSource, String languageCode, boolean includeGroupingLabels) throws IOException {
if (dataExportProcess == null || !dataExportProcess.getStatus().isRunning()) {
resetJobs();
SessionState sessionState = sessionManager.getSessionState();
CollectSurvey survey = sessionState.getActiveSurvey();
File outputFile = File.createTempFile("collect_data_export_" + survey.getName(), ".zip");
Step step = Step.valueOf(stepNumber);
// prepare record filter
Schema schema = survey.getSchema();
EntityDefinition rootEntityDefn = schema.getRootEntityDefinition(rootEntityName);
RecordFilter recordFilter = createRecordFilter(survey, rootEntityDefn.getId(), onlyOwnedRecords, rootEntityKeyValues);
// filter by record step
recordFilter.setStepGreaterOrEqual(step);
// instantiate process
CSVDataExportProcess process = appContext.getBean(CSVDataExportProcess.class);
process.setOutputFile(outputFile);
process.setRecordFilter(recordFilter);
process.setEntityId(entityId);
process.setAlwaysGenerateZipFile(true);
CSVDataExportParameters config = new CSVDataExportParameters();
config.setIncludeAllAncestorAttributes(includeAllAncestorAttributes);
config.setIncludeEnumeratedEntities(includeEnumeratedEntities);
config.setIncludeCompositeAttributeMergedColumn(includeCompositeAttributeMergedColumn);
config.setIncludeKMLColumnForCoordinates(includeKMLColumnForCoordinates);
config.setCodeAttributeExpanded(codeAttributeExpanded);
config.setIncludeCodeItemLabelColumn(includeCodeItemLabelColumn);
config.setHeadingSource(HeadingSource.valueOf(headingSource));
config.setLanguageCode(languageCode);
config.setIncludeGroupingLabels(includeGroupingLabels);
process.setConfiguration(config);
process.init();
// start process
dataExportProcess = process;
ExecutorServiceUtil.executeInCachedPool(process);
}
return getCurrentJob();
}
use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class DataService method loadRecordSummaries.
/**
* @param rootEntityName
* @param offset
* @param toIndex
* @param orderByFieldName
* @param filter
*
* @return map with "count" and "records" items
*/
@Secured(USER)
public Map<String, Object> loadRecordSummaries(String rootEntityName, int offset, int maxNumberOfRows, List<RecordSummarySortField> sortFields, String[] keyValues) {
Map<String, Object> result = new HashMap<String, Object>();
SessionState sessionState = sessionManager.getSessionState();
CollectSurvey activeSurvey = sessionState.getActiveSurvey();
Schema schema = activeSurvey.getSchema();
EntityDefinition rootEntityDefinition = schema.getRootEntityDefinition(rootEntityName);
RecordFilter filter = new RecordFilter(activeSurvey, rootEntityDefinition.getId());
filter.setKeyValues(keyValues);
filter.setOffset(offset);
filter.setMaxNumberOfRecords(maxNumberOfRows);
// load summaries
List<CollectRecordSummary> summaries = recordManager.loadSummaries(filter, sortFields);
List<RecordSummaryProxy> proxies = RecordSummaryProxy.fromList(summaries, getProxyContext());
result.put("records", proxies);
// count total records
int count = recordManager.countRecords(filter);
result.put("count", count);
return result;
}
Aggregations