Skip to content
Snippets Groups Projects
Commit 6546f4c7 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#724 - parse csv to rows and columns

parent 2f4ccab9
No related branches found
No related tags found
No related merge requests found
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
<itextpdf.version>5.5.13.3</itextpdf.version> <itextpdf.version>5.5.13.3</itextpdf.version>
<vanilla-picker.version>2.12.1</vanilla-picker.version> <vanilla-picker.version>2.12.1</vanilla-picker.version>
<jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version> <jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
<opencsv.version>5.3</opencsv.version>
<project.outputDirectory>${project.build.directory}/../build/${project.version}</project.outputDirectory> <project.outputDirectory>${project.build.directory}/../build/${project.version}</project.outputDirectory>
<project.artifactName>${project.artifactId}-v${project.version}</project.artifactName> <project.artifactName>${project.artifactId}-v${project.version}</project.artifactName>
...@@ -137,6 +138,12 @@ ...@@ -137,6 +138,12 @@
<version>${natorder.version}</version> <version>${natorder.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>${opencsv.version}</version>
</dependency>
<!--Webjars--> <!--Webjars-->
<dependency> <dependency>
<groupId>org.webjars</groupId> <groupId>org.webjars</groupId>
......
...@@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.transactions; ...@@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.transactions;
import de.deadlocker8.budgetmaster.controller.BaseController; import de.deadlocker8.budgetmaster.controller.BaseController;
import de.deadlocker8.budgetmaster.services.HelpersService; import de.deadlocker8.budgetmaster.services.HelpersService;
import de.deadlocker8.budgetmaster.transactions.csvImport.CsvParser;
import de.deadlocker8.budgetmaster.transactions.csvImport.CsvRow; import de.deadlocker8.budgetmaster.transactions.csvImport.CsvRow;
import de.deadlocker8.budgetmaster.utils.Mappings; import de.deadlocker8.budgetmaster.utils.Mappings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -68,6 +69,7 @@ public class TransactionImportController extends BaseController ...@@ -68,6 +69,7 @@ public class TransactionImportController extends BaseController
try try
{ {
final String csvString = new String(file.getBytes(), StandardCharsets.UTF_8); final String csvString = new String(file.getBytes(), StandardCharsets.UTF_8);
final List<CsvRow> csvRows = CsvParser.parseCsv(csvString, ';');
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
if(fileName == null) if(fileName == null)
...@@ -76,7 +78,7 @@ public class TransactionImportController extends BaseController ...@@ -76,7 +78,7 @@ public class TransactionImportController extends BaseController
} }
request.setAttribute(RequestAttributeNames.IMPORTED_FILE, fileName, RequestAttributes.SCOPE_SESSION); request.setAttribute(RequestAttributeNames.IMPORTED_FILE, fileName, RequestAttributes.SCOPE_SESSION);
request.setAttribute(RequestAttributeNames.CSV_ROWS, List.of(new CsvRow("12.12.22", "sdfghjklö", "12.30")), RequestAttributes.SCOPE_SESSION); request.setAttribute(RequestAttributeNames.CSV_ROWS, csvRows, RequestAttributes.SCOPE_SESSION);
} }
catch(Exception e) catch(Exception e)
{ {
......
package de.deadlocker8.budgetmaster.transactions.csvImport;
import com.opencsv.CSVParser;
import com.opencsv.CSVParserBuilder;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import com.opencsv.exceptions.CsvValidationException;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
public class CsvParser
{
public static List<CsvRow> parseCsv(String csvString, char separator) throws IOException, CsvValidationException
{
final ArrayList<CsvRow> csvRows = new ArrayList<>();
final CSVParser csvParser = new CSVParserBuilder().withSeparator(separator).build();
try(CSVReader reader = new CSVReaderBuilder(
new StringReader(csvString))
.withCSVParser(csvParser)
.build())
{
String[] columns;
while((columns = reader.readNext()) != null)
{
csvRows.add(new CsvRow(columns));
}
}
return csvRows;
}
}
locale=de locale=de
# DEFAULT # DEFAULT
credits=Verwendete Schriftarten: Roboto<br>Verwendete Bibliotheken:<br>spring-boot-starter-parent 2.7.0<br>spring-boot-devtools 2.7.0<br>spring-boot-starter-web 2.7.0<br>spring-boot-starter-test 2.7.0<br>spring-boot-starter-security 2.7.0<br>spring-boot-starter-tomcat 2.7.0<br>spring-boot-starter-freemarker 2.7.0<br>spring-boot-starter-validation 2.7.0<br>h2 1.4.199<br>maven-surefire-plugin 2.22.2<br>launch4j-maven-plugin 1.7.25<br>jquery 3.6.1<br>materialize 1.0.0<br>fontawesome 6.2.0<br>Google Material Icons<br>Vanilla-picker 2.12.1<br>SortableJS 1.15.0<br>jlibs 3.2.0<br>itextpdf 5.5.13.3<br>mousetrap 1.6.5<br>plotly 2.16.1<br>momentjs 2.29.4<br>codemirror 5.62.2<br>webjars-locator 0.46<br>libUtils 3.2.7<br>libStorage 3.2.3<br>natorder 1.1.3<br>jgit 6.4.0.202211300538-r<br> credits=Verwendete Schriftarten: Roboto<br>Verwendete Bibliotheken:<br>spring-boot-starter-parent 2.7.0<br>spring-boot-devtools 2.7.0<br>spring-boot-starter-web 2.7.0<br>spring-boot-starter-test 2.7.0<br>spring-boot-starter-security 2.7.0<br>spring-boot-starter-tomcat 2.7.0<br>spring-boot-starter-freemarker 2.7.0<br>spring-boot-starter-validation 2.7.0<br>h2 1.4.199<br>maven-surefire-plugin 2.22.2<br>launch4j-maven-plugin 1.7.25<br>jquery 3.6.1<br>materialize 1.0.0<br>fontawesome 6.2.0<br>Google Material Icons<br>Vanilla-picker 2.12.1<br>SortableJS 1.15.0<br>jlibs 3.2.0<br>itextpdf 5.5.13.3<br>mousetrap 1.6.5<br>plotly 2.16.1<br>momentjs 2.29.4<br>codemirror 5.62.2<br>webjars-locator 0.46<br>libUtils 3.2.7<br>libStorage 3.2.3<br>natorder 1.1.3<br>jgit 6.4.0.202211300538-r<br>opencsv 5.3<br>
folder=Deadlocker/BudgetMaster folder=Deadlocker/BudgetMaster
roadmap.url=https://roadmaps.thecodelabs.de/roadmap/1 roadmap.url=https://roadmaps.thecodelabs.de/roadmap/1
github.url=https://github.com/deadlocker8/BudgetMaster github.url=https://github.com/deadlocker8/BudgetMaster
......
locale=en locale=en
# DEFAULT # DEFAULT
credits=Fonts used: Roboto<br>Libraries used:<br>spring-boot-starter-parent 2.7.0<br>spring-boot-devtools 2.7.0<br>spring-boot-starter-web 2.7.0<br>spring-boot-starter-test 2.7.0<br>spring-boot-starter-security 2.7.0<br>spring-boot-starter-tomcat 2.7.0<br>spring-boot-starter-freemarker 2.7.0<br>spring-boot-starter-validation 2.7.0<br>h2 1.4.199<br>maven-surefire-plugin 2.22.2<br>launch4j-maven-plugin 1.7.25<br>jquery 3.6.1<br>materialize 1.0.0<br>fontawesome 6.2.0<br>Google Material Icons<br>Vanilla-picker 2.12.1<br>SortableJS 1.15.0<br>jlibs 3.2.0<br>itextpdf 5.5.13.3<br>mousetrap 1.6.5<br>plotly 2.16.1<br>momentjs 2.29.4<br>codemirror 5.62.2<br>webjars-locator 0.46<br>libUtils 3.2.7<br>libStorage 3.2.3<br>natorder 1.1.3<br>jgit 6.4.0.202211300538-r<br> credits=Fonts used: Roboto<br>Libraries used:<br>spring-boot-starter-parent 2.7.0<br>spring-boot-devtools 2.7.0<br>spring-boot-starter-web 2.7.0<br>spring-boot-starter-test 2.7.0<br>spring-boot-starter-security 2.7.0<br>spring-boot-starter-tomcat 2.7.0<br>spring-boot-starter-freemarker 2.7.0<br>spring-boot-starter-validation 2.7.0<br>h2 1.4.199<br>maven-surefire-plugin 2.22.2<br>launch4j-maven-plugin 1.7.25<br>jquery 3.6.1<br>materialize 1.0.0<br>fontawesome 6.2.0<br>Google Material Icons<br>Vanilla-picker 2.12.1<br>SortableJS 1.15.0<br>jlibs 3.2.0<br>itextpdf 5.5.13.3<br>mousetrap 1.6.5<br>plotly 2.16.1<br>momentjs 2.29.4<br>codemirror 5.62.2<br>webjars-locator 0.46<br>libUtils 3.2.7<br>libStorage 3.2.3<br>natorder 1.1.3<br>jgit 6.4.0.202211300538-r<br>opencsv 5.3<br>
folder=Deadlocker/BudgetMaster folder=Deadlocker/BudgetMaster
roadmap.url=https://roadmaps.thecodelabs.de/roadmap/2 roadmap.url=https://roadmaps.thecodelabs.de/roadmap/2
github.url=https://github.com/deadlocker8/BudgetMaster github.url=https://github.com/deadlocker8/BudgetMaster
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment