List of usage examples for java.util SortedMap forEach
default void forEach(BiConsumer<? super K, ? super V> action)
From source file:org.talend.dataprep.schema.xls.XlsSchemaParser.java
/** * Return the columns metadata for the given sheet. * * @param sheet the sheet to look at.//from w w w . j a v a2 s .c o m * @param datasetId the dataset id. * @return the columns metadata for the given sheet. */ private List<ColumnMetadata> parsePerSheet(Sheet sheet, String datasetId, FormulaEvaluator formulaEvaluator) { LOGGER.debug(Markers.dataset(datasetId), "parsing sheet '{}'", sheet.getSheetName()); // Map<ColId, Map<RowId, type>> SortedMap<Integer, SortedMap<Integer, String>> cellsTypeMatrix = collectSheetTypeMatrix(sheet, formulaEvaluator); int averageHeaderSize = guessHeaderSize(cellsTypeMatrix); // here we have information regarding types for each rows/col (yup a Matrix!! :-) ) // so we can analyse and guess metadata (column type, header value) final List<ColumnMetadata> columnsMetadata = new ArrayList<>(cellsTypeMatrix.size()); cellsTypeMatrix.forEach((colId, typePerRowMap) -> { Type type = guessColumnType(colId, typePerRowMap, averageHeaderSize); String headerText = "col" + colId; if (averageHeaderSize == 1 && sheet.getRow(0) != null) { // so header value is the first row of the column Cell headerCell = sheet.getRow(0).getCell(colId); headerText = XlsUtils.getCellValueAsString(headerCell, formulaEvaluator); } // header text cannot be null so use a default one if (StringUtils.isEmpty(headerText)) { headerText = "col_" + (colId + 1); // +1 because it starts from 0 } // FIXME what do we do if header size is > 1 concat all lines? columnsMetadata.add(ColumnMetadata.Builder // .column() // .headerSize(averageHeaderSize) // .name(headerText) // .type(type) // .build()); }); return columnsMetadata; }