All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gdv.xport.satz.enums.TeildatensatzEnum Maven / Gradle / Ivy

Go to download

gdv-xport-lib ist die Java-Bibliothek fuer den Umgang mit dem GDV-Format. Sie erleichtert den Export und Export dieses Datenformats.

There is a newer version: 7.2.2
Show newest version
/*
 * Copyright (c) 2020 by Oliver Boehm
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * (c)reated 25.11.2020 by oboehm
 */

package gdv.xport.satz.enums;

import gdv.xport.feld.NumFeld;
import gdv.xport.feld.Zeichen;
import gdv.xport.satz.Teildatensatz;
import gdv.xport.util.SatzTyp;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.HashMap;
import java.util.Map;

import static gdv.xport.feld.Bezeichner.SATZNUMMER;

/**
 * In die Klasse TeildatensatzEnum wurde die Teile aus {@link Teildatensatz}
 * herausgezogen, die Enum-spezifisch sind und bei der Umstellung auf die
 * XML-Variante des Teildatensatzes eher hinderlich sind.
 * 

* TODO: Wird mit v6 entfernt. *

* * @author oboehm * @since 5.0 (25.11.2020) * @deprecated Enums mit Annotationen werden ab v6 nicht mehr unterstuetzt */ @Deprecated public final class TeildatensatzEnum extends Teildatensatz { private static final Logger LOG = LogManager.getLogger(); private static final SatzTyp[] SATZARTEN_OHNE_SATZNUMMER = { SatzTyp.of("0210.110"), SatzTyp.of("0220.110"), SatzTyp.of("0210.040"), SatzTyp.of("0220.020.1"), SatzTyp.of("0220.020.2"), SatzTyp.of("0220.020.3"), SatzTyp.of("0210.070"), SatzTyp.of("0260.190"), SatzTyp.of("0210.030"), SatzTyp.of("0211.130"), SatzTyp.of("0220.130"), SatzTyp.of("0221.130"), SatzTyp.of("0210.510"), SatzTyp.of("0220.510") }; private static final Map ABWEICHENDE_SATZNUMMERN = new HashMap<>(); static { addAbweichendeSatznummer(SatzTyp.of("0220.570"), 43, 43); addAbweichendeSatznummer(SatzTyp.of("0210.580"), 43, 43); addAbweichendeSatznummer(SatzTyp.of("0220.580.01"), 43, 43); addAbweichendeSatznummer(SatzTyp.of("0220.580.2"), 43, 43); addAbweichendeSatznummer(SatzTyp.of("0210.080"), 43, 43); addAbweichendeSatznummer(SatzTyp.of("0211.080"), 43); addAbweichendeSatznummer(SatzTyp.of("0220.080"), 49, 49); addAbweichendeSatznummer(SatzTyp.of("0221.080"), 49); addAbweichendeSatznummer(SatzTyp.of("0220.040"), 51, 51); addAbweichendeSatznummer(SatzTyp.of("0221.040"), 51); addAbweichendeSatznummer(SatzTyp.of("0210.550"), 43); addAbweichendeSatznummer(SatzTyp.of("0220.550"), 43); addAbweichendeSatznummer(SatzTyp.of("0270.550"), 43, 43); addAbweichendeSatznummer(SatzTyp.of("0280.550"), 43); addAbweichendeSatznummer(SatzTyp.of("0291.550"), 43); addAbweichendeSatznummer(SatzTyp.of("0292.550"), 43); addAbweichendeSatznummer(SatzTyp.of("0293.550"), 43); addAbweichendeSatznummer(SatzTyp.of("0294.550"), 43); addAbweichendeSatznummer(SatzTyp.of("0295.550"), 43); addAbweichendeSatznummer(SatzTyp.of("0220.070"), 53, 53); addAbweichendeSatznummer(SatzTyp.of("0221.070"), 53, 53); addAbweichendeSatznummer(SatzTyp.of("0210.170"), 43, 43); addAbweichendeSatznummer(SatzTyp.of("0211.170"), 43); addAbweichendeSatznummer(SatzTyp.of("0220.170"), 50, 50); addAbweichendeSatznummer(SatzTyp.of("0221.170"), 50); addAbweichendeSatznummer(SatzTyp.of("0210.190"), 43); addAbweichendeSatznummer(SatzTyp.of("0211.190"), 43); addAbweichendeSatznummer(SatzTyp.of("0220.190"), 49, 49); addAbweichendeSatznummer(SatzTyp.of("0221.190"), 49); addAbweichendeSatznummer(SatzTyp.of("0250.190"), 51, 51); addAbweichendeSatznummer(SatzTyp.of("0251.190"), 51); addAbweichendeSatznummer(SatzTyp.of("0220.030"), 49, 49); addAbweichendeSatznummer(SatzTyp.of("0221.030"), 49, 43); addAbweichendeSatznummer(SatzTyp.of("0220.140"), 51, 51); addAbweichendeSatznummer(SatzTyp.of("0210.130"), 251, 251); addAbweichendeSatznummer(SatzTyp.of("0450"), 51); addAbweichendeSatznummer(SatzTyp.of("0500"), 66, 256); addAbweichendeSatznummer(SatzTyp.of("0550"), 66); } private static void addAbweichendeSatznummer(SatzTyp satzTyp, Integer... startAdresse) { ABWEICHENDE_SATZNUMMERN.put(satzTyp, startAdresse); } @Deprecated // TODO: mit v6 entsorgen public TeildatensatzEnum(NumFeld satzart) { super(satzart); } public TeildatensatzEnum(NumFeld satzart, int nr) { super(satzart, nr); initSatznummer(nr); } public TeildatensatzEnum(int satzart, int nr) { super(satzart, nr); initSatznummer(nr); } public TeildatensatzEnum(Teildatensatz other) { super(other); } private void initSatznummer(final int nr) { if ((nr < 1) || (nr > 9)) { throw new IllegalArgumentException("Satznummer (" + nr + ") muss zwischen 1 und 9 liegen"); } this.getSatznummer().setInhalt(Character.forDigit(nr, 10)); this.initDatenfelder(); } private void initDatenfelder() { this.add(this.getSatzartFeld()); if (this.hasSatznummer()) { initSatznummer(); } } private void initSatznummer() { SatzTyp satzTyp = getSatzTyp(); Integer[] startAdressen = ABWEICHENDE_SATZNUMMERN.get(satzTyp); int nr = Integer.parseInt(this.getSatznummer().getInhalt()); if ((startAdressen != null) && (nr <= startAdressen.length)) { this.setSatznummer(new Zeichen(SATZNUMMER, startAdressen[nr-1]).withInhalt(this.getSatznummer().getInhalt())); LOG.debug("{}. Satznummer is moved to {}.", nr, this.getSatznummer()); } this.add(this.getSatznummer()); } /** * Die meisten Satzarten haben eine Satznummer. Es gibt aber auch Satzarten * wie * 0210.110, 0220.110, * 0210.040, * 0220.020.1, 0220.020.2, 0220.020.3, * 0210.070, * 0260.190, * 0210.030, * 0211.130, 0220.130, 0221.130, * 0210.510, 0220.510 - * diese haben keine Satznummer. * * @return false fuer Saetze ohne Satznummern */ private boolean hasSatznummer() { SatzTyp satzTyp = getSatzTyp(); for (SatzTyp ohneSatzTyp : SATZARTEN_OHNE_SATZNUMMER) { if (satzTyp.equals(ohneSatzTyp)) { return false; } } return true; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy