Class SepaVersion

  • All Implemented Interfaces:
    java.lang.Comparable<SepaVersion>

    public class SepaVersion
    extends java.lang.Object
    implements java.lang.Comparable<SepaVersion>
    Basis-Klasse fuer das Parsen und Vergleichen von SEPA Versionen (PAIN und CAMT).
    • Constructor Detail

      • SepaVersion

        private SepaVersion​(SepaVersion.SupportType support,
                            int order,
                            java.lang.String urn,
                            java.lang.String file,
                            boolean add)
        Erzeugt eine SEPA-Version aus dem URN bzw dem Dateinamen.
        Parameters:
        support - der Support-Type.
        order - die Reihenfolge bei der Sortierung.
        urn - URN. In der Form "urn:iso:std:iso:20022:tech:xsd:pain.001.002.03" oder in der alten Form "sepade.pain.001.001.02.xsd".
        file - Dateiname der Schema-Datei.
        add - true, wenn die Version zur Liste der bekannten Versionen hinzugefuegt werden soll.
    • Method Detail

      • byURN

        public static SepaVersion byURN​(java.lang.String urn)
        Liefert die SEPA-Version aus dem URN.
        Parameters:
        urn - URN. In der Form "urn:iso:std:iso:20022:tech:xsd:pain.001.002.03" oder in der alten Form "sepade.pain.001.001.02.xsd".
        Returns:
        die SEPA-Version.
      • findType

        private static SepaVersion.Type findType​(java.lang.String type,
                                                 java.lang.String value)
                                          throws java.lang.IllegalArgumentException
        Liefert den enum-Type fuer den angegebenen Wert.
        Parameters:
        type - der Type. "pain", "camt".
        value - der Wert. 001, 002, 008, ....
        Returns:
        der zugehoerige Enum-Wert.
        Throws:
        java.lang.IllegalArgumentException - wenn der Typ unbekannt ist.
      • getSchemaLocation

        public java.lang.String getSchemaLocation()
        Liefert einen String " " zurueck, der im erzeugten XML als "xsi:schemaLocation" verwendet werden kann.
        Returns:
        Schema-Location oder NULL, wenn "file" nicht gesetzt wurde.
      • getGeneratorClass

        public java.lang.String getGeneratorClass​(java.lang.String jobName)
        Erzeugt den Namen der Java-Klasse des zugehoerigen SEPA-Generators.
        Parameters:
        jobName - der Job-Name. Z.Bsp. "UebSEPA".
        Returns:
        der Name der Java-Klasse des zugehoerigen SEPA-Generators.
      • getParserClass

        public java.lang.String getParserClass()
        Erzeugt den Namen der Java-Klasse des zugehoerigen SEPA-Parsers.
        Returns:
        der Name der Java-Klasse des zugehoerigen SEPA-Parsers.
      • canGenerate

        public boolean canGenerate​(java.lang.String jobName)
        Prueft, ob fuer die SEPA-Version ein Generator vorhanden ist, der fuer den angegebenen HBCI4Java-Job die SEPA-XML-Dateien erzeugen kann.
        Parameters:
        jobName - der Job-Name. Z.Bsp. "UebSEPA".
        Returns:
        true, wenn ein Generator vorhanden ist.
      • canParse

        public boolean canParse()
        Prueft, ob fuer die SEPA-Version ein Parser vorhanden ist, der SEPA-XML-Dateien dieser Version lesen kann.
        Returns:
        true, wenn ein Parser vorhanden ist.
      • isSupported

        public boolean isSupported​(java.lang.String jobName)
        Prueft, ob die SEPA-Version unterstuetzt wird.
        Parameters:
        jobName - der Job-Name.
        Returns:
        true, wenn die SEPA-Version unterstuetzt wird.
      • getType

        public SepaVersion.Type getType()
        Liefert den Typ der SEPA-Version.
        Returns:
        der Typ der SEPA-Version.
      • getMajor

        public int getMajor()
        Liefert die Major-Versionsnumer.
        Returns:
        die Major-Versionsnumer.
      • getMinor

        public int getMinor()
        Liefert die Minor-Versionsnumer.
        Returns:
        die Minor-Versionsnumer.
      • getURN

        public java.lang.String getURN()
        Liefert die URN der SEPA-Version.
        Returns:
        die URN der SEPA-Version.
      • getFile

        public java.lang.String getFile()
        Liefert den Dateinamen des Schemas insofern bekannt.
        Returns:
        der Dateiname des Schema oder null.
      • findGreatest

        public static SepaVersion findGreatest​(java.util.List<SepaVersion> list)
        Findet in den der Liste die hoechste SEPA-Version.
        Parameters:
        list - Liste mit SEPA-Versionen.
        Returns:
        die hoechste Version oder NULL wenn die Liste leer ist.
      • getKnownVersions

        public static java.util.List<SepaVersion> getKnownVersions​(SepaVersion.Type t)
        Liefert eine Liste der bekannten SEPA-Versionen fuer den angegebenen Typ.
        Parameters:
        t - der Typ.
        Returns:
        Liste der bekannten SEPA-Versionen fuer den angegebenen Typ.
      • autodetect

        public static SepaVersion autodetect​(java.io.InputStream xml)
        Ermittelt die SEPA-Version aus dem uebergebenen XML-Stream.
        Parameters:
        xml - der XML-Stream. Achtung: Da der Stream hierbei gelesen werden muss, sollte eine Kopie des Streams uebergeben werden. Denn nach dem Lesen des Streams, kann er nicht erneut gelesen werden. Der Stream wird von dieser Methode nicht geschlossen. Das ist Aufgabe des Aufrufers.
        Returns:
        die ermittelte SEPA-Version oder NULL wenn das XML-Document keine entsprechenden Informationen enthielt.
      • choose

        public static SepaVersion choose​(java.lang.String sepadesc,
                                         java.lang.String sepadata)
        Die Bank sendet in ihren Antworten sowohl den SEPA-Deskriptor als auch die SEPA-Daten (die XML-Datei) selbst. Diese Funktion ermittelt sowohl aus dem SEPA-Deskriptor als auch aus den SEPA-Daten die angegebene SEPA-Version und vergleicht beide. Stimmen sie nicht ueberein, wird eine Warnung ausgegeben. Die Funktion liefert anschliessend die zum Parsen passende Version zurueck. Falls sich die angegebenen Versionen unterscheiden, wird die in den XML-Daten angegebene Version zurueckgeliefert. Siehe https://www.willuhn.de/bugzilla/show_bug.cgi?id=1806
        Parameters:
        sepadesc - die in der HBCI-Nachricht angegebene SEPA-Version.
        sepadata - die eigentlichen XML-Daten.
        Returns:
        die zum Parsen zu verwendende SEPA-Version. NULL, wenn keinerlei Daten angegeben wurden.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
        See Also:
        Object.hashCode()
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
        See Also:
        Object.equals(java.lang.Object)
      • compareTo

        public int compareTo​(SepaVersion v)
        Specified by:
        compareTo in interface java.lang.Comparable<SepaVersion>
        See Also:
        Comparable.compareTo(java.lang.Object)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()