use of org.openforis.collect.io.data.csv.ColumnProviderChain in project collect by openforis.
the class DataCSVReader method calculateIgnoredColumns.
private List<String> calculateIgnoredColumns() {
final CSVDataExportParameters csvExportConfig = new CSVDataExportParameters();
csvExportConfig.setIncludeCodeItemLabelColumn(true);
csvExportConfig.setIncludeEnumeratedEntities(false);
CollectSurvey survey = (CollectSurvey) parentEntityDefinition.getSurvey();
ColumnProviderChain columnProvider = new CSVDataExportColumnProviderGenerator(survey, csvExportConfig).generateColumnProviderChain(parentEntityDefinition);
List<String> result = new ArrayList<String>();
List<String> colNames = getColumnNames();
for (final String colName : colNames) {
final MutableBoolean ignored = new MutableBoolean(false);
columnProvider.traverseProviders(new Visitor<ColumnProvider>() {
public void visit(ColumnProvider p) {
if (!(p instanceof ColumnProviderChain) && p instanceof BasicColumnProvider) {
List<String> finalColumnHeadings = ((BasicColumnProvider) p).generateFinalColumnHeadings();
if (finalColumnHeadings.contains(colName)) {
if (p instanceof CodeColumnProvider && colName.endsWith(csvExportConfig.getFieldHeadingSeparator() + CodeColumnProvider.ITEM_LABEL_SUFFIX)) {
ignored.setTrue();
}
}
}
}
});
if (ignored.booleanValue()) {
result.add(colName);
}
}
return result;
}
use of org.openforis.collect.io.data.csv.ColumnProviderChain in project collect by openforis.
the class CSVDataExportColumnProviderGenerator method generateColumnProviderChain.
public ColumnProviderChain generateColumnProviderChain(EntityDefinition entityDefn) {
List<ColumnProvider> columnProviders = new ArrayList<ColumnProvider>();
// entity children columns
AutomaticColumnProvider entityColumnProvider = createEntityColumnProvider(entityDefn);
// ancestor columns
columnProviders.addAll(createAncestorsColumnsProvider(entityDefn));
// position column
if (isPositionColumnRequired(entityDefn)) {
columnProviders.add(createPositionColumnProvider(entityDefn));
}
columnProviders.add(entityColumnProvider);
// create data transformation
ColumnProviderChain provider = new ColumnProviderChain(configuration, columnProviders);
return provider;
}
use of org.openforis.collect.io.data.csv.ColumnProviderChain in project collect by openforis.
the class CSVDataExportColumnProviderGenerator method createAncestorColumnProvider.
private ColumnProvider createAncestorColumnProvider(EntityDefinition contextEntityDefn, EntityDefinition ancestorEntityDefn) {
List<ColumnProvider> providers = new ArrayList<ColumnProvider>();
if (configuration.isIncludeAllAncestorAttributes()) {
AutomaticColumnProvider ancestorEntityColumnProvider = new AutomaticColumnProvider(configuration, ColumnProviders.generateHeadingPrefix(ancestorEntityDefn, configuration) + configuration.getFieldHeadingSeparator(), ancestorEntityDefn);
providers.add(0, ancestorEntityColumnProvider);
} else {
// include only key attributes
List<AttributeDefinition> keyAttrDefns = ancestorEntityDefn.getKeyAttributeDefinitions();
for (AttributeDefinition keyDefn : keyAttrDefns) {
String relativePath = contextEntityDefn.getRelativePath(ancestorEntityDefn);
ColumnProvider keyColumnProvider = ColumnProviders.createAttributeProvider(configuration, keyDefn);
String headingPrefix = configuration.isIncludeGroupingLabels() ? ColumnProviders.generateHeadingPrefix(keyDefn.getParentEntityDefinition(), configuration) + configuration.getFieldHeadingSeparator() : "";
PivotExpressionColumnProvider columnProvider = new PivotExpressionColumnProvider(configuration, relativePath, headingPrefix, keyColumnProvider);
providers.add(columnProvider);
}
if (isPositionColumnRequired(ancestorEntityDefn)) {
String relativePath = contextEntityDefn.getRelativePath(ancestorEntityDefn);
ColumnProvider positionColumnProvider = createPositionColumnProvider(ancestorEntityDefn);
PivotExpressionColumnProvider columnProvider = new PivotExpressionColumnProvider(configuration, relativePath, "", positionColumnProvider);
providers.add(columnProvider);
}
}
return new ColumnProviderChain(configuration, providers);
}
Aggregations