Skip to content

Commit

Permalink
#724 - new input to configure number of lines to skip
Browse files Browse the repository at this point in the history
  • Loading branch information
deadlocker8 committed Jan 8, 2023
1 parent 21cdbda commit f706d12
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public TransactionImportController(TransactionService transactionService, Helper
@GetMapping
public String transactionImport(HttpServletRequest request, Model model)
{
model.addAttribute(RequestAttributeNames.CSV_IMPORT, new CsvImport(null, ";", StandardCharsets.UTF_8.name()));
model.addAttribute(RequestAttributeNames.CSV_IMPORT, new CsvImport(null, ";", StandardCharsets.UTF_8.name(), 0));
return ReturnValues.TRANSACTION_IMPORT;
}

Expand Down Expand Up @@ -93,7 +93,7 @@ public String upload(WebRequest request,
try
{
final String csvString = new String(csvImport.file().getBytes(), csvImport.encoding());
final List<CsvRow> csvRows = CsvParser.parseCsv(csvString, csvImport.separator().charAt(0));
final List<CsvRow> csvRows = CsvParser.parseCsv(csvString, csvImport.separator().charAt(0), csvImport.numberOfLinesToSkip());

request.setAttribute(RequestAttributeNames.CSV_IMPORT, csvImport, RequestAttributes.SCOPE_SESSION);
request.setAttribute(RequestAttributeNames.CSV_ROWS, csvRows, RequestAttributes.SCOPE_SESSION);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import java.nio.charset.Charset;
import java.text.MessageFormat;

public record CsvImport(MultipartFile file, String separator, String encoding)
public record CsvImport(MultipartFile file, String separator, String encoding, int numberOfLinesToSkip)
{
private static final Logger LOGGER = LoggerFactory.getLogger(CsvImport.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ private CsvParser()
{
}

public static List<CsvRow> parseCsv(String csvString, char separator) throws IOException, CsvValidationException
public static List<CsvRow> parseCsv(String csvString, char separator, int numberOfLinesToSkip) throws IOException, CsvValidationException
{
final ArrayList<CsvRow> csvRows = new ArrayList<>();

Expand All @@ -28,6 +28,7 @@ public static List<CsvRow> parseCsv(String csvString, char separator) throws IOE
try(CSVReader reader = new CSVReaderBuilder(
new StringReader(csvString))
.withCSVParser(csvParser)
.withSkipLines(numberOfLinesToSkip)
.build())
{
String[] columns;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,7 @@ transactions.import.overview=Übersicht
transactions.import.column=Spalte
transactions.import.separator=Trennzeichen
transactions.import.encoding=Kodierung
transactions.import.numberOfLinesToSkip=Zeilen überspringen

repeating.button.add=Wiederholung hinzufügen
repeating.button.remove=Wiederholung entfernen
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ transactions.import.overview=Overview
transactions.import.column=Column
transactions.import.separator=Separator
transactions.import.encoding=Encoding
transactions.import.numberOfLinesToSkip=Skip lines

repeating.button.add=Add repetition
repeating.button.remove=Remove repetition
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,18 @@
</div>

<div class="row">
<div class="input-field col s2 offset-s4">
<div class="input-field col s2 offset-s3">
<input id="separator" type="text" name="separator" <@validation.validation "separator" "center-align"/> value="<#if csvImport??>${csvImport.separator()}</#if>">
<label class="input-label" for="separator">${locale.getString("transactions.import.separator")}</label>
</div>
<div class="input-field col s2">
<input id="encoding" type="text" name="encoding"" <@validation.validation "encoding" "center-align"/> value="<#if csvImport??>${csvImport.encoding()?upper_case}</#if>">
<input id="encoding" type="text" name="encoding" <@validation.validation "encoding" "center-align"/> value="<#if csvImport??>${csvImport.encoding()?upper_case}</#if>">
<label class="input-label" for="encoding">${locale.getString("transactions.import.encoding")}</label>
</div>
<div class="input-field col s2">
<input id="numberOfLinesToSkip" type="number" name="quantity" min="0" name="numberOfLinesToSkip" <@validation.validation "encoding" "center-align"/> value="<#if csvImport??>${csvImport.numberOfLinesToSkip()?c}</#if>">
<label class="input-label" for="numberOfLinesToSkip">${locale.getString("transactions.import.numberOfLinesToSkip")}</label>
</div>
</div>

<div class="row">
Expand Down

0 comments on commit f706d12

Please sign in to comment.