reading csv file works
This commit is contained in:
29
src/main/java/de/jottyfan/csv2camt/Converter.java
Normal file
29
src/main/java/de/jottyfan/csv2camt/Converter.java
Normal file
@ -0,0 +1,29 @@
|
||||
package de.jottyfan.csv2camt;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import de.jottyfan.csv2camt.csv.CsvBean;
|
||||
import de.jottyfan.csv2camt.csv.CsvParser;
|
||||
import de.jottyfan.csv2camt.xml.CamtWriter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class Converter {
|
||||
|
||||
private CsvBean bean;
|
||||
private String filenamePrefix;
|
||||
|
||||
public Converter readCsv(String filename) throws IOException {
|
||||
String s = filename.contains("/") ? filename.substring(filename.lastIndexOf("/") + 1) : filename;
|
||||
filenamePrefix = s.contains(".") ? s.substring(0, s.indexOf(".")) : s;
|
||||
bean = new CsvParser().read(filename);
|
||||
return this;
|
||||
}
|
||||
|
||||
public void writeCamt() {
|
||||
new CamtWriter().write(bean, filenamePrefix.concat(".camt"));
|
||||
}
|
||||
}
|
14
src/main/java/de/jottyfan/csv2camt/Main.java
Normal file
14
src/main/java/de/jottyfan/csv2camt/Main.java
Normal file
@ -0,0 +1,14 @@
|
||||
package de.jottyfan.csv2camt;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class Main {
|
||||
public static void main(String[] args) throws IOException {
|
||||
new Converter().readCsv(args[1]).writeCamt();
|
||||
}
|
||||
}
|
98
src/main/java/de/jottyfan/csv2camt/csv/CsvBean.java
Normal file
98
src/main/java/de/jottyfan/csv2camt/csv/CsvBean.java
Normal file
@ -0,0 +1,98 @@
|
||||
package de.jottyfan.csv2camt.csv;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class CsvBean implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String konto;
|
||||
private String kontonummer;
|
||||
private String iban;
|
||||
private String waehrung;
|
||||
|
||||
private String zeitraum;
|
||||
private String letzterKontostand;
|
||||
private String kontostandDatum;
|
||||
private String kontostandFinal;
|
||||
|
||||
private final List<CsvLine> list;
|
||||
|
||||
public List<CsvLine> getList() {
|
||||
return list;
|
||||
}
|
||||
|
||||
public CsvBean() {
|
||||
list = new ArrayList<>();
|
||||
}
|
||||
|
||||
public String getKonto() {
|
||||
return konto;
|
||||
}
|
||||
|
||||
public void setKonto(String konto) {
|
||||
this.konto = konto;
|
||||
}
|
||||
|
||||
public String getKontonummer() {
|
||||
return kontonummer;
|
||||
}
|
||||
|
||||
public void setKontonummer(String kontonummer) {
|
||||
this.kontonummer = kontonummer;
|
||||
}
|
||||
|
||||
public String getIban() {
|
||||
return iban;
|
||||
}
|
||||
|
||||
public void setIban(String iban) {
|
||||
this.iban = iban;
|
||||
}
|
||||
|
||||
public String getWaehrung() {
|
||||
return waehrung;
|
||||
}
|
||||
|
||||
public void setWaehrung(String waehrung) {
|
||||
this.waehrung = waehrung;
|
||||
}
|
||||
|
||||
public String getZeitraum() {
|
||||
return zeitraum;
|
||||
}
|
||||
|
||||
public void setZeitraum(String zeitraum) {
|
||||
this.zeitraum = zeitraum;
|
||||
}
|
||||
|
||||
public String getLetzterKontostand() {
|
||||
return letzterKontostand;
|
||||
}
|
||||
|
||||
public void setLetzterKontostand(String letzterKontostand) {
|
||||
this.letzterKontostand = letzterKontostand;
|
||||
}
|
||||
|
||||
public String getKontostandDatum() {
|
||||
return kontostandDatum;
|
||||
}
|
||||
|
||||
public void setKontostandDatum(String kontostandDatum) {
|
||||
this.kontostandDatum = kontostandDatum;
|
||||
}
|
||||
|
||||
public String getKontostandFinal() {
|
||||
return kontostandFinal;
|
||||
}
|
||||
|
||||
public void setKontostandFinal(String kontostandFinal) {
|
||||
this.kontostandFinal = kontostandFinal;
|
||||
}
|
||||
}
|
12
src/main/java/de/jottyfan/csv2camt/csv/CsvLine.java
Normal file
12
src/main/java/de/jottyfan/csv2camt/csv/CsvLine.java
Normal file
@ -0,0 +1,12 @@
|
||||
package de.jottyfan.csv2camt.csv;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public record CsvLine(String Buchungstag, String Wert, String Umsatzart, String Beguenstigter_Auftraggeber,
|
||||
String Verwendungszweck, String IBAN_Kontonummer, String BIC, String Kundenreferenz, String Mandatsreferenz,
|
||||
String Glaeubiger_ID, String Fremde_Gebuehren, String Betrag, String Abweichender_Empfaenger,
|
||||
String Anzahl_der_Auftraege, String Anzahl_der_Schecks, String Soll, String Haben, String Waehrung) {
|
||||
}
|
73
src/main/java/de/jottyfan/csv2camt/csv/CsvParser.java
Normal file
73
src/main/java/de/jottyfan/csv2camt/csv/CsvParser.java
Normal file
@ -0,0 +1,73 @@
|
||||
package de.jottyfan.csv2camt.csv;
|
||||
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
|
||||
import org.apache.commons.csv.CSVFormat;
|
||||
import org.apache.commons.csv.CSVFormat.Builder;
|
||||
import org.apache.commons.csv.CSVRecord;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class CsvParser {
|
||||
|
||||
protected CsvBean parse(String filename) throws IOException {
|
||||
Reader in = new FileReader(filename);
|
||||
Builder builder = CSVFormat.EXCEL.builder();
|
||||
builder.setDelimiter(";");
|
||||
Iterable<CSVRecord> records = builder.build().parse(in);
|
||||
CsvBean bean = new CsvBean();
|
||||
int counter = 0;
|
||||
for (CSVRecord record : records) {
|
||||
counter++;
|
||||
if (counter == 3) {
|
||||
bean.setKonto(record.get(0));
|
||||
bean.setKontonummer(record.get(1));
|
||||
bean.setIban(record.get(2));
|
||||
bean.setWaehrung(record.get(3));
|
||||
} else if (counter == 5) {
|
||||
bean.setZeitraum(record.get(0));
|
||||
} else if (counter == 6) {
|
||||
bean.setLetzterKontostand(record.get(4));
|
||||
} else if (counter > 8) {
|
||||
String buchungstag = record.get(0);
|
||||
if (!"Kontostand".equals(buchungstag)) {
|
||||
String wert = record.get(1);
|
||||
String umsatzart = record.get(2);
|
||||
String beguenstigter = record.get(3);
|
||||
String verwendungszweck = record.get(4);
|
||||
String iban = record.get(5);
|
||||
String bic = record.get(6);
|
||||
String kundenreferenz = record.get(7);
|
||||
String mandatsreferenz = record.get(8);
|
||||
String glaeubigerId = record.get(9);
|
||||
String fremdeGebuehren = record.get(10);
|
||||
String betrag = record.get(11);
|
||||
String abweichenderEmpfaenger = record.get(12);
|
||||
String anzahlDerAuftraege = record.get(13);
|
||||
String anzahlDerSchecks = record.get(14);
|
||||
String soll = record.get(15);
|
||||
String haben = record.get(16);
|
||||
String waehrung = record.get(17);
|
||||
bean.getList()
|
||||
.add(new CsvLine(buchungstag, wert, umsatzart, beguenstigter, verwendungszweck, iban, bic, kundenreferenz,
|
||||
mandatsreferenz, glaeubigerId, fremdeGebuehren, betrag, abweichenderEmpfaenger, anzahlDerAuftraege,
|
||||
anzahlDerSchecks, soll, haben, waehrung));
|
||||
} else {
|
||||
bean.setKontostandDatum(record.get(1));
|
||||
bean.setKontostandFinal(record.get(4));
|
||||
}
|
||||
}
|
||||
}
|
||||
return bean;
|
||||
}
|
||||
|
||||
public CsvBean read(String filename) throws IOException {
|
||||
return parse(filename);
|
||||
}
|
||||
|
||||
}
|
16
src/main/java/de/jottyfan/csv2camt/xml/CamtWriter.java
Normal file
16
src/main/java/de/jottyfan/csv2camt/xml/CamtWriter.java
Normal file
@ -0,0 +1,16 @@
|
||||
package de.jottyfan.csv2camt.xml;
|
||||
|
||||
import de.jottyfan.csv2camt.csv.CsvBean;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class CamtWriter {
|
||||
|
||||
public void write(CsvBean bean, String filename) {
|
||||
|
||||
}
|
||||
|
||||
}
|
24
src/test/java/de/jottyfan/csv2camt/csv/TestCsvParser.java
Normal file
24
src/test/java/de/jottyfan/csv2camt/csv/TestCsvParser.java
Normal file
@ -0,0 +1,24 @@
|
||||
package de.jottyfan.csv2camt.csv;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class TestCsvParser {
|
||||
|
||||
@Test
|
||||
public void testParse() throws IOException {
|
||||
CsvBean bean = new CsvParser().parse("/home/jotty/Schreibtisch/Umsatzauskunft/UA_03-23.csv");
|
||||
assertNotNull(bean);
|
||||
assertNotNull(bean.getList());
|
||||
assertEquals(62, bean.getList().size());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user