Skip to content

Commit

Permalink
#731 - added new inputs for decimal and grouping delimiter
Browse files Browse the repository at this point in the history
  • Loading branch information
deadlocker8 committed Feb 13, 2023
1 parent 35daa09 commit 32f9078
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public CsvTransaction createCsvTransactionFromCsvRow(CsvRow csvRow, CsvColumnSet
final String description = csvRow.getColumns().get(csvColumnSettings.columnDescription() - 1);

final String amount = csvRow.getColumns().get(csvColumnSettings.columnAmount() - 1);
final Optional<Integer> parsedAmountOptional = AmountParser.parse(amount, '.', ',');
final Optional<Integer> parsedAmountOptional = AmountParser.parse(amount, csvColumnSettings.getDecimalSeparator().charAt(0), csvColumnSettings.getGroupingSeparator().charAt(0));
if(parsedAmountOptional.isEmpty())
{
throw new CsvTransactionParseException(Localization.getString("transactions.import.error.parse.amount", index + 1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,21 @@
public final class CsvColumnSettings
{
private final int columnDate;
private String datePattern;
private final String datePattern;
private final int columnName;
private final int columnAmount;
private final String decimalSeparator;
private final String groupingSeparator;
private final int columnDescription;

public CsvColumnSettings(int columnDate, String datePattern, int columnName, int columnAmount, int columnDescription)
public CsvColumnSettings(int columnDate, String datePattern, int columnName, int columnAmount, String decimalSeparator, String groupingSeparator, int columnDescription)
{
this.columnDate = columnDate;
this.datePattern = datePattern;
this.columnName = columnName;
this.columnAmount = columnAmount;
this.decimalSeparator = decimalSeparator;
this.groupingSeparator = groupingSeparator;
this.columnDescription = columnDescription;
}

Expand All @@ -29,11 +33,6 @@ public String getDatePattern()
return datePattern;
}

public void setDatePattern(String datePattern)
{
this.datePattern = datePattern;
}

public int columnName()
{
return columnName;
Expand All @@ -44,6 +43,16 @@ public int columnAmount()
return columnAmount;
}

public String getDecimalSeparator()
{
return decimalSeparator;
}

public String getGroupingSeparator()
{
return groupingSeparator;
}

public int columnDescription()
{
return columnDescription;
Expand All @@ -55,13 +64,13 @@ public boolean equals(Object o)
if(this == o) return true;
if(o == null || getClass() != o.getClass()) return false;
CsvColumnSettings that = (CsvColumnSettings) o;
return columnDate == that.columnDate && columnName == that.columnName && columnAmount == that.columnAmount && columnDescription == that.columnDescription && Objects.equals(datePattern, that.datePattern);
return columnDate == that.columnDate && columnName == that.columnName && columnAmount == that.columnAmount && columnDescription == that.columnDescription && Objects.equals(datePattern, that.datePattern) && Objects.equals(decimalSeparator, that.decimalSeparator) && Objects.equals(groupingSeparator, that.groupingSeparator);
}

@Override
public int hashCode()
{
return Objects.hash(columnDate, datePattern, columnName, columnAmount, columnDescription);
return Objects.hash(columnDate, datePattern, columnName, columnAmount, decimalSeparator, groupingSeparator, columnDescription);
}

@Override
Expand All @@ -72,6 +81,8 @@ public String toString()
", datePattern='" + datePattern + '\'' +
", columnName=" + columnName +
", columnAmount=" + columnAmount +
", decimalSeparator='" + decimalSeparator + '\'' +
", groupingSeparator='" + groupingSeparator + '\'' +
", columnDescription=" + columnDescription +
'}';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,8 @@ transactions.import.separator=Trennzeichen
transactions.import.encoding=Kodierung
transactions.import.numberOfLinesToSkip=Zeilen überspringen
transactions.import.datePattern=Datumsformat
transactions.import.decimalSeparator=Dezimaltrennzeichen
transactions.import.groupingSeparator=Gruppierungstrennzeichen
transactions.import.status=Status
transactions.import.status.pending=ausstehend
transactions.import.status.imported=importiert
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,8 @@ transactions.import.encoding=Encoding
transactions.import.numberOfLinesToSkip=Skip lines
transactions.import.datePattern=Date pattern
transactions.import.status=Status
transactions.import.decimalSeparator=Decimal separator
transactions.import.groupingSeparator=Grouping separator
transactions.import.status.pending=pending
transactions.import.status.imported=imported
transactions.import.status.skipped=skipped
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,13 +131,13 @@
${locale.getString("transaction.new.label.date")}
</div>
</div>
<div class="input-field col s6 m4 l3 no-margin-top no-margin-bottom">
<div class="input-field col s6 m6 l4 no-margin-top no-margin-bottom">
<input id="columnDate" type="number" min="1" max="${csvRows?size}" name="columnDate" <@validation.validation "columnDate"/> value="<#if csvColumnSettings??>${csvColumnSettings.columnDate()}</#if>">
<label class="input-label" for="columnDate">${locale.getString("transactions.import.column")}</label>
</div>
</div>
<div class="row">
<div class="input-field col s5 offset-s6 m3 offset-m6 l3 offset-l6 no-margin-top no-margin-bottom">
<div class="input-field col s5 offset-s6 m5 offset-m6 l4 offset-l6 no-margin-top no-margin-bottom">
<input id="datePattern" type="text" required name="datePattern" <@validation.validation "datePattern"/> value="<#if csvColumnSettings??>${csvColumnSettings.datePattern()}<#else>dd.MM.yyyy</#if>">
<label class="input-label" for="datePattern">${locale.getString("transactions.import.datePattern")}</label>
</div>
Expand All @@ -153,7 +153,7 @@
${locale.getString("transaction.new.label.name")}
</div>
</div>
<div class="input-field col s6 m4 l3 no-margin-top no-margin-bottom">
<div class="input-field col s6 m6 l4 no-margin-top no-margin-bottom">
<input id="columnName" type="number" min="1" max="${csvRows?size}" name="columnName" <@validation.validation "columnName"/> value="<#if csvColumnSettings??>${csvColumnSettings.columnName()}</#if>">
<label class="input-label" for="columnName">${locale.getString("transactions.import.column")}</label>
</div>
Expand All @@ -165,19 +165,31 @@
${locale.getString("transaction.new.label.amount")}
</div>
</div>
<div class="input-field col s6 m4 l3 no-margin-top no-margin-bottom">
<div class="input-field col s6 m6 l4 no-margin-top no-margin-bottom">
<input id="columnAmount" type="number" min="1" max="${csvRows?size}" name="columnAmount" <@validation.validation "columnAmount"/> value="<#if csvColumnSettings??>${csvColumnSettings.columnAmount()}</#if>">
<label class="input-label" for="columnAmount">${locale.getString("transactions.import.column")}</label>
</div>
</div>
<div class="row">
<div class="input-field col s3 offset-s6 m3 offset-m6 l2 offset-l6 no-margin-top no-margin-bottom">
<input id="decimalSeparator" type="text" required name="decimalSeparator" <@validation.validation "decimalSeparator"/> value="<#if csvColumnSettings??>${csvColumnSettings.decimalSeparator()}<#else>.</#if>">
<label class="input-label" for="decimalSeparator">${locale.getString("transactions.import.decimalSeparator")}</label>
</div>

<div class="input-field col s3 m3 l2 no-margin-top no-margin-bottom">
<input id="groupingSeparator" type="text" required name="groupingSeparator" <@validation.validation "groupingSeparator"/> value="<#if csvColumnSettings??>${csvColumnSettings.groupingSeparator()}<#else>,</#if>">
<label class="input-label" for="groupingSeparator">${locale.getString("transactions.import.groupingSeparator")}</label>
</div>
</div>

<div class="row">
<div class="col s6 m4 offset-m2 l3 offset-l3">
<div class="transaction-import-text-with-icon">
<i class="material-icons">article</i>
${locale.getString("transaction.new.label.description")}
</div>
</div>
<div class="input-field col s6 m4 l3 no-margin-top no-margin-bottom">
<div class="input-field col s6 m6 l4 no-margin-top no-margin-bottom">
<input id="columnDescription" type="number" min="1" max="${csvRows?size}" name="columnDescription" <@validation.validation "columnDescription"/> value="<#if csvColumnSettings??>${csvColumnSettings.columnDescription()}</#if>">
<label class="input-label" for="columnDescription">${locale.getString("transactions.import.column")}</label>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ void test_createCsvTransactionFromCsvRow() throws CsvTransactionParseException
final LocalDate date = LocalDate.of(2023, 1, 21);

final CsvRow csvRow = new CsvRow("21.01.2023", "Groceries", "-12.00", "dolor sit amet");
final CsvColumnSettings csvColumnSettings = new CsvColumnSettings(1, "dd.MM.yyyy", 2, 3, 4);
final CsvColumnSettings csvColumnSettings = new CsvColumnSettings(1, "dd.MM.yyyy", 2, 3, ".", ",", 4);

final CsvTransaction expectedCsvTransaction = new CsvTransaction(date, "Groceries", -1200, "dolor sit amet", CsvTransactionStatus.PENDING, CATEGORY_NONE);

Expand All @@ -129,7 +129,7 @@ void test_createCsvTransactionFromCsvRow() throws CsvTransactionParseException
void test_createCsvTransactionFromCsvRow_dateParseException()
{
final CsvRow csvRow = new CsvRow("21.01.2023", "Groceries", "-12.00", "dolor sit amet");
final CsvColumnSettings csvColumnSettings = new CsvColumnSettings(1, "dd.MM.", 2, 3, 4);
final CsvColumnSettings csvColumnSettings = new CsvColumnSettings(1, "dd.MM.", 2, 3, ".", ",", 4);

final Settings settings = new Settings();
settings.setLanguage(LanguageType.ENGLISH);
Expand All @@ -145,7 +145,7 @@ void test_createCsvTransactionFromCsvRow_dateParseException()
void test_createCsvTransactionFromCsvRow_amountParseException()
{
final CsvRow csvRow = new CsvRow("21.01.2023", "Groceries", "non_amount", "dolor sit amet");
final CsvColumnSettings csvColumnSettings = new CsvColumnSettings(1, "dd.MM.yyyy", 2, 3, 4);
final CsvColumnSettings csvColumnSettings = new CsvColumnSettings(1, "dd.MM.yyyy", 2, 3, ".", ",", 4);

final Settings settings = new Settings();
settings.setLanguage(LanguageType.ENGLISH);
Expand Down

0 comments on commit 32f9078

Please sign in to comment.