Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
<dependency>
<groupId>com.github.spacious-team</groupId>
<artifactId>table-wrapper-api</artifactId>
<version>2022.2</version>
<version>3c66877d60</version>
</dependency>
<dependency>
<groupId>com.univocity</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.function.BiPredicate;
import java.util.function.Predicate;

import static java.nio.charset.StandardCharsets.UTF_8;

Expand Down Expand Up @@ -69,8 +70,13 @@ public static CsvParserSettings getDefaultCsvParserSettings() {
}

@Override
public TableCellAddress find(Object value, int startRow, int endRow, int startColumn, int endColumn, BiPredicate<String, Object> predicate) {
return CsvTableHelper.find(rows, value, startRow, endRow, startColumn, endColumn, predicate);
public TableCellAddress find(Object value, int startRow, int endRow, int startColumn, int endColumn) {
return CsvTableHelper.find(rows, value, startRow, endRow, startColumn, endColumn);
}

@Override
public TableCellAddress find(int startRow, int endRow, int startColumn, int endColumn, Predicate<Object> cellValuePredicate) {
return CsvTableHelper.find(rows, startRow, endRow, startColumn, endColumn, cellValuePredicate::test);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.spacious_team.table_wrapper.api.AbstractTableFactory;
import org.spacious_team.table_wrapper.api.ReportPage;
import org.spacious_team.table_wrapper.api.Table;
import org.spacious_team.table_wrapper.api.TableCellRange;
import org.spacious_team.table_wrapper.api.TableColumnDescription;

public class CsvTableFactory extends AbstractTableFactory<CsvReportPage> {
Expand All @@ -32,53 +33,13 @@ public CsvTableFactory() {
@Override
public Table create(ReportPage reportPage,
String tableName,
String lastRowString,
TableCellRange tableRange,
Class<? extends TableColumnDescription> headerDescription,
int headersRowCount) {
return new CsvTable(cast(reportPage),
return new CsvTable(
cast(reportPage),
tableName,
reportPage.getTableCellRange(tableName, headersRowCount, lastRowString),
headerDescription,
headersRowCount);
}

@Override
public Table create(ReportPage reportPage,
String tableName,
Class<? extends TableColumnDescription> headerDescription,
int headersRowCount) {
return new CsvTable(cast(reportPage),
tableName,
reportPage.getTableCellRange(tableName, headersRowCount),
headerDescription,
headersRowCount);
}

@Override
public Table createNameless(ReportPage reportPage,
String providedTableName,
String firstRowString,
String lastRowString,
Class<? extends TableColumnDescription> headerDescription,
int headersRowCount) {
return new CsvTable(cast(reportPage),
providedTableName,
reportPage.getTableCellRange(firstRowString, headersRowCount, lastRowString)
.addRowsToTop(1),
headerDescription,
headersRowCount);
}

@Override
public Table createNameless(ReportPage reportPage,
String providedTableName,
String firstRowString,
Class<? extends TableColumnDescription> headerDescription,
int headersRowCount) {
return new CsvTable(cast(reportPage),
providedTableName,
reportPage.getTableCellRange(firstRowString, headersRowCount)
.addRowsToTop(1),
tableRange,
headerDescription,
headersRowCount);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,38 +20,51 @@

import org.spacious_team.table_wrapper.api.TableCellAddress;

import java.util.Objects;
import java.util.function.BiPredicate;
import java.util.function.Predicate;

import static org.spacious_team.table_wrapper.api.TableCellAddress.NOT_FOUND;

class CsvTableHelper {

static TableCellAddress find(String[][] table, Object value, int startRow, int endRow, int startColumn, int endColumn,
BiPredicate<String, Object> stringPredicate) {
static TableCellAddress find(String[][] table, Object expected,
int startRow, int endRow,
int startColumn, int endColumn) {
return find(table, startRow, endRow, startColumn, endColumn, equalsPredicate(expected));
}

static TableCellAddress find(String[][] table, int startRow, int endRow, int startColumn, int endColumn,
Predicate<String> predicate) {
startRow = Math.max(0, startRow);
endRow = Math.min(endRow, table.length);
for(int rowNum = startRow; rowNum < endRow; rowNum++) {
for (int rowNum = startRow; rowNum < endRow; rowNum++) {
String[] row = table[rowNum];
TableCellAddress address = find(row, rowNum, value, startColumn, endColumn, stringPredicate);
TableCellAddress address = find(row, rowNum, startColumn, endColumn, predicate);
if (address != NOT_FOUND) {
return address;
}
}
return NOT_FOUND;
}

static TableCellAddress find(String[] row, int rowNum, Object value, int startColumn, int endColumn,
BiPredicate<String, Object> stringPredicate) {
static TableCellAddress find(String[] row, int rowNum, int startColumn, int endColumn, Predicate<String> predicate) {
startColumn = Math.max(0, startColumn);
endColumn = Math.min(endColumn, row.length);
for (int i = startColumn; i < endColumn; i++) {
String cell = row[i];
if (cell != null) {
if (stringPredicate.test(cell, value)) {
return new TableCellAddress(rowNum, i);
}
}
String cell = row[i];
if (predicate.test(cell)) {
return new TableCellAddress(rowNum, i);
}
}
return NOT_FOUND;
}

static Predicate<String> equalsPredicate(Object expected) {
if (expected == null) {
return Objects::isNull;
}
String expectedString = expected.toString();
return expectedString::equals;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.Iterator;

import static org.spacious_team.table_wrapper.api.TableCellAddress.NOT_FOUND;
import static org.spacious_team.table_wrapper.csv.CsvTableHelper.equalsPredicate;

public class CsvTableRow extends AbstractReportPageRow {

Expand Down Expand Up @@ -48,8 +49,7 @@ public int getLastCellNum() {

@Override
public boolean rowContains(Object value) {
value = (value == null) ? null : String.valueOf(value);
return CsvTableHelper.find(row, rowNum, value,0, row.length, String::equals) != NOT_FOUND;
return CsvTableHelper.find(row, rowNum, 0, row.length, equalsPredicate(value)) != NOT_FOUND;
}

@Override
Expand Down