protected DatasetOutput<AbstractValue<?>> createExpanded(DatasetEntity dataset, DbQuery query, Session session)
throws DataAccessException {
try {
IoParameters params = query.getParameters();
DatasetOutput result = createCondensed(dataset, query, session);
DatasetParameters datasetParams = createDatasetParameters(dataset, query.withoutFieldsFilter(), session);
datasetParams.setPlatform(getCondensedPlatform(dataset, query, session));
if (dataset.getService() == null) {
dataset.setService(getServiceEntity());
}
DataRepository dataRepository = dataRepositoryFactory.create(dataset.getValueType());
AbstractValue firstValue = dataRepository.getFirstValue(dataset, session, query);
AbstractValue lastValue = dataRepository.getLastValue(dataset, session, query);
List<ReferenceValueOutput> refValues = dataRepository.createReferenceValueOutputs(dataset, query);
lastValue = isReferenceSeries(dataset) && isCongruentValues(firstValue, lastValue)
? firstValue
: lastValue;
result.setValue(DatasetOutput.REFERENCE_VALUES, refValues, params, result::setReferenceValues);
result.setValue(DatasetOutput.DATASET_PARAMETERS, datasetParams, params, result::setDatasetParameters);
result.setValue(DatasetOutput.FIRST_VALUE, firstValue, params, result::setFirstValue);
result.setValue(DatasetOutput.LAST_VALUE, lastValue, params, result::setLastValue);
return result;
} catch (DatasetFactoryException ex) {
throwNewCreateFactoryException(ex);
return null;
}
}