Skip to content

Commit

Permalink
#99: Feld.getInhalt() wird jetzt bei JSON serialisiert
Browse files Browse the repository at this point in the history
  • Loading branch information
oboehm committed Dec 8, 2024
1 parent 10ff636 commit 42d1734
Show file tree
Hide file tree
Showing 9 changed files with 107 additions and 6 deletions.
1 change: 1 addition & 0 deletions lib/src/main/java/gdv/xport/Datenpaket.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public class Datenpaket implements ImportListener {
private static final Logger LOG = LogManager.getLogger(Datenpaket.class);
private Vorsatz vorsatz;
private final List<Datensatz> datensaetze = new ArrayList<>();
@JsonIgnore
private final Config config;
private Nachsatz nachsatz;

Expand Down
8 changes: 8 additions & 0 deletions lib/src/main/java/gdv/xport/feld/Feld.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

package gdv.xport.feld;

import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import de.jfachwert.SimpleValidator;
import de.jfachwert.Text;
Expand Down Expand Up @@ -301,6 +302,7 @@ protected Feld(final Feld other, final Config cfg) {
*
* @return linksbuendig oder rechtsbuendig
*/
@JsonIgnore
public Align getAusrichtung() {
return Align.of(ausrichtung);
}
Expand All @@ -324,6 +326,7 @@ private Bezeichner createBezeichner() {
*
* @return the bezeichnung
*/
@JsonIgnore
public String getBezeichnung() {
return this.bezeichner.getName();
}
Expand Down Expand Up @@ -448,6 +451,7 @@ public void setInhalt(final char c, final int i) {
*
* @return den Inhalt
*/
@JsonGetter
public String getInhalt() {
String blanks = StringUtils.repeat(' ', this.getAnzahlBytes() - this.inhalt.length());
if (getAusrichtung() == Align.LEFT) {
Expand Down Expand Up @@ -538,6 +542,7 @@ public final void write(final Writer writer) throws IOException {
*
* @return true, if is empty
*/
@JsonIgnore
public boolean isEmpty() {
return StringUtils.isBlank(this.getInhalt());
}
Expand All @@ -548,6 +553,7 @@ public boolean isEmpty() {
* @return true, falls Feld mit einem Wert belegt ist
* @since 3.1
*/
@JsonIgnore
public final boolean hasValue() {
return !inhalt.isEmpty();
}
Expand All @@ -564,6 +570,7 @@ public final boolean hasValue() {
* @return false, falls Verletzung erkannt wird
* @since 0.1.0
*/
@JsonIgnore
public boolean isValid() {
if (this.getByteAdresse() < 1) {
return false;
Expand All @@ -582,6 +589,7 @@ public boolean isValid() {
*
* @return true, if is invalid
*/
@JsonIgnore
public boolean isInvalid() {
return !isValid();
}
Expand Down
1 change: 1 addition & 0 deletions lib/src/main/java/gdv/xport/satz/Satz.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public abstract class Satz implements Cloneable {
private static final Logger LOG = LogManager.getLogger(Satz.class);

private Teildatensatz[] teildatensatz = new Teildatensatz[0];
@JsonIgnore
private final Config config;

/**
Expand Down
4 changes: 2 additions & 2 deletions lib/src/main/java/gdv/xport/satz/Teildatensatz.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

package gdv.xport.satz;

import com.fasterxml.jackson.annotation.JsonIgnore;
import gdv.xport.config.Config;
import gdv.xport.feld.*;
import gdv.xport.io.ImportException;
Expand Down Expand Up @@ -70,8 +71,6 @@ public Teildatensatz(final SatzTyp satzTyp, final int nr) {
this(satzTyp);
setSatznummer(nr);
this.setGdvSatzartName(satzTyp.toString());
// if (satzTyp.hasGdvSatzartNummer())
// this.setGdvSatzartNummer(String.valueOf(satzTyp.getGdvSatzartNummer()));
}

/**
Expand Down Expand Up @@ -496,6 +495,7 @@ public final Collection<Feld> getFelder() {
*
* @return Liste der speziellen Kennzeichen
*/
@JsonIgnore
public List<Zeichen> getSatzIdent() {
String[] identBezeichner = {"FolgeNrZurLaufendenPersonenNrUnterNrBzwLaufendenNrTarif",
"FolgeNrZurLaufendenPersonenNrUnterNrLaufendeNrTarif", "SatzNr", "SatzNr1",
Expand Down
39 changes: 38 additions & 1 deletion lib/src/test/java/gdv/xport/feld/AbstractFeldTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,22 @@

package gdv.xport.feld;

import com.fasterxml.jackson.databind.ObjectMapper;
import gdv.xport.config.Config;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hamcrest.MatcherAssert;
import org.junit.BeforeClass;
import org.junit.Test;

import patterntesting.runtime.junit.CloneableTester;
import patterntesting.runtime.junit.ObjectTester;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertEquals;

/**
Expand All @@ -34,13 +44,24 @@
*/
public abstract class AbstractFeldTest {

private static final Logger log = LogManager.getLogger(AbstractFeldTest.class);
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
private static final File JSON_DIR = new File("target", "json");

/**
* Darueber holt sich diese Test-Klasse ein {@link Feld}-Objekt zum Testen.
*
* @return das Test-Feld
*/
protected abstract Feld getTestFeld();

@BeforeClass
public static void setUpJsonDir() {
if (!JSON_DIR.exists() && JSON_DIR.mkdirs()) {
log.info("Verzeichnis '{}' wurde angelegt.", JSON_DIR);
}
}

/**
* Hier testen wir, ob der CopyConstructor auch mit den Unterklassen von
* {@link Feld} funktioniert.
Expand Down Expand Up @@ -68,4 +89,20 @@ public void testClone() {
assertEquals(a.config, b.config);
}

@Test
public void testToJSON() throws IOException {
Feld feld = this.getTestFeld();
feld.setInhalt("x");
checkJSON(feld);
}

protected static String checkJSON(Feld feld) throws IOException {
String json = OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(feld);
File exportFile = new File(JSON_DIR, String.format("%s.json", feld.getClass().getSimpleName()));
FileUtils.writeStringToFile(exportFile, json, StandardCharsets.UTF_8);
log.info("{} wurde zur manuellen Pruefung in '{}' abgelegt", feld, exportFile);
MatcherAssert.assertThat(json, containsString(feld.getInhalt().trim()));
return json;
}

}
31 changes: 29 additions & 2 deletions lib/src/test/java/gdv/xport/satz/AbstractSatzTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,25 @@

package gdv.xport.satz;

import com.fasterxml.jackson.databind.ObjectMapper;
import gdv.xport.feld.Feld;
import gdv.xport.feld.VUNummer;
import gdv.xport.satz.feld.common.Kopffelder1bis7;
import gdv.xport.util.SatzTyp;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hamcrest.MatcherAssert;
import org.junit.BeforeClass;
import org.junit.Test;
import patterntesting.runtime.junit.ObjectTester;

import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;

import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.*;

/**
Expand All @@ -43,6 +49,8 @@
abstract public class AbstractSatzTest {

private static final Logger LOG = LogManager.getLogger(AbstractSatzTest.class);
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
private static final File JSON_DIR = new File("target", "json");
/** zum Testen nehmen wir hier die VU-Nr. der Oerag */
protected static final VUNummer VU_NUMMER = new VUNummer("5183");

Expand All @@ -57,11 +65,14 @@ abstract public class AbstractSatzTest {
* Test aufsetzen.
*/
@BeforeClass
public static void setUpBeforeClass() {
public static void setUpTargetDirs() {
File exportDir = new File("target", "export");
if (!exportDir.exists() && exportDir.mkdir()) {
LOG.info("Verzeichnis '{}' wurde angelegt.", exportDir);
}
if (!JSON_DIR.exists() && JSON_DIR.mkdirs()) {
LOG.info("Verzeichnis '{}' wurde angelegt.", JSON_DIR);
}
}

/**
Expand All @@ -70,7 +81,7 @@ public static void setUpBeforeClass() {
@Test
public void testSatzart() {
Satz satz = this.getSatz();
Feld satzart = satz.getFeld(Kopffelder1bis7.SATZART.getBezeichner());
Feld satzart = satz.getFeld(Kopffelder1bis7.SATZART.getBezeichner());
assertTrue("expected: is valid", satzart.isValid());
assertFalse("expected: not empty", satzart.isEmpty());
assertEquals(satz.getSatzart(), Integer.parseInt(satzart.getInhalt()));
Expand All @@ -86,6 +97,22 @@ public void testEquals() {
ObjectTester.assertEquals(satz, sameSatz);
}

@Test
public void testToJSON() throws IOException {
Satz satz = this.getSatz();
checkJSON(satz);
}

protected static String checkJSON(Satz satz) throws IOException {
String json = OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(satz);
SatzTyp satzTyp = satz.getSatzTyp();
File exportFile = new File(JSON_DIR, String.format("satz%s.json", satzTyp));
FileUtils.writeStringToFile(exportFile, json, StandardCharsets.UTF_8);
LOG.info("{} wurde zur manuellen Pruefung in '{}' abgelegt", satz, exportFile);
MatcherAssert.assertThat(json, containsString(satzTyp.toString()));
return json;
}

/**
* @param satz Satz
* @param startByte beginnend bei 1
Expand Down
6 changes: 6 additions & 0 deletions lib/src/test/java/gdv/xport/satz/DatensatzTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -262,4 +262,10 @@ public void testSparte() {
assertEquals(110, ds.getTeildatensatz(1).getSparte());
}

@Override
public void testToJSON() throws IOException {
Datensatz vorsatz = new Datensatz(SatzTyp.of("0052"), 1);
checkJSON(vorsatz);
}

}
11 changes: 11 additions & 0 deletions lib/src/test/java/gdv/xport/satz/TeildatensatzTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.Test;
import org.junit.jupiter.api.function.Executable;

Expand Down Expand Up @@ -405,4 +406,14 @@ private static void checkGetSatznummerFeld(SatzTyp satzTyp, int tdsNr, int feldN
assertEquals(satznummer, tds.getFeld(feldNr+1));
}

@Override
public void testToJSON() throws IOException {
Teildatensatz tds = SATZ_REGISTRY.getSatz(SatzTyp.of(100)).getTeildatensatz(1);
tds.setFeld(Bezeichner.NAME1, "James");
tds.setFeld(Bezeichner.NAME3, "Bond");
String json = checkJSON(tds);
MatcherAssert.assertThat(json, Matchers.containsString("James"));
MatcherAssert.assertThat(json, Matchers.containsString("Bond"));
}

}
12 changes: 11 additions & 1 deletion lib/src/test/java/gdv/xport/satz/VorsatzTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,16 @@
import gdv.xport.feld.*;
import gdv.xport.util.SatzRegistry;
import gdv.xport.util.SatzTyp;
import org.junit.Test;
import org.hamcrest.MatcherAssert;
import org.junit.Test;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.Map;

import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.greaterThan;
import static org.junit.Assert.*;

Expand Down Expand Up @@ -298,4 +299,13 @@ public void testSetVermittler() {
assertEquals("12345", vorsatz.getFeld(Bezeichner.VERMITTLER).getInhalt().trim());
}

@Override
public void testToJSON() throws IOException {
vorsatz.setAbsender("J. Bond");
vorsatz.setErstellungsZeitraum("08122024", "11012025");
String json = checkJSON(vorsatz);
MatcherAssert.assertThat(json, containsString("J. Bond"));
MatcherAssert.assertThat(json, containsString(vorsatz.getErstellungsZeitraum()));
}

}

0 comments on commit 42d1734

Please sign in to comment.