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

org.kapott.hbci.status.HBCIRetVal Maven / Gradle / Ivy

Go to download

HBCI4j - Home Banking Computer Interface for Java - Clone from https://github.com/hbci4j/hbci4java

There is a newer version: 3.5.46
Show newest version
/*  $Id: HBCIRetVal.java,v 1.1 2011/05/04 22:38:02 willuhn Exp $

    This file is part of HBCI4Java
    Copyright (C) 2001-2008  Stefan Palme

    HBCI4Java is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    HBCI4Java is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

package org.kapott.hbci.status;

import org.kapott.hbci.exceptions.HBCI_Exception;
import org.kapott.hbci.manager.HBCIUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Map;

/**
 * 

Repräsentation eines HBCI-Statuscodes. Objekte dieser Klasse * stellen einen einzigen HBCI-Returncode dar, welcher aus einer * Antwortnachricht von der Bank extrahiert wurde. *

* Zu den hier bereitgestellten Informationen zählen neben den eigentlichen * Status-Daten (Status-Code, Textmeldung) auch eine numerische Darstellung * des Teiles der ursprünglich gesendeten Nachricht, auf den sich * diese Statusmeldung bezieht. Sofern das möglich ist, wird diese numerische * Darstellung zusätzlich in den Lowlevel-Namen des betreffenden Nachrichtenteils * umgewandelt, so dass für den Anwender eine bessere Lokalisierung des * Problems möglich ist.

*/ public final class HBCIRetVal implements Serializable { /** *

HBCI-Fehlercode. Diese Codes bestehen immer aus vier Ziffern. Die erste * Ziffer kennzeichnet dabei die Art:

*
    *
  • 0 - Erfolgsmeldung

  • *
  • 3 - Warnung

  • *
  • 9 - Fehlermeldung

  • *
*/ public String code; /** * Segmentnummer in der gesendeten Nachricht, auf das sich dieser * Rückgabewert bezieht. Falls es sich um einen globalen Rückgabewert * handelt (d.h. einen, der sich auf die komplette Nachricht bezieht), * so ist dieser Wert null */ public String segref; /** * Nummer des Datenelementes oder der Datenelementgruppe, auf das sich * dieser Rückgabewert bezieht. Diese Information ist nicht in jedem * Fall vorhanden (z.B. wenn es sich um einen globalen Fehlercode handelt * oder wenn sich der Rückgabewert auf ein komplettes Segment bezieht). * In einem solchen Fall ist dieser Wert null. */ public String deref; /** * Beschreibender Text. Dieser Text wird vom HBCI-Server der Bank generiert. */ public String text; /** * Optionale Parameter, die im Zusammenhang mit text zu interpretieren sind. */ public String[] params; /** * Lowlevel-Name des Nachrichtenelementes, auf das sich dieser Rückgabewert bezieht. * Dieser Name kann nicht in jedem Fall bestimmt werden, der Wert dieses Feldes * kann dann auch null sein. */ public String element; /** * Wird von der HBCI4Java-Dialog-Engine aufgerufen */ public HBCIRetVal(String segref, String deref, String element, String code, String text, String[] params) { if (params == null) params = new String[0]; this.code = code; this.segref = segref; this.deref = deref; this.text = text; this.params = params; this.element = element; } /** * Wird von der HBCI4Java-Dialog-Engine aufgerufen */ HBCIRetVal(Map result, String header) { this(result, header, null); } /** * Wird von der HBCI4Java-Dialog-Engine aufgerufen */ public HBCIRetVal(Map result, String header, String segref) { this.segref = segref; code = result.get(header + ".code"); if (code == null) throw new HBCI_Exception("*** no valid error"); deref = result.get(header + ".ref"); text = result.get(header + ".text"); element = null; if (segref != null) { String path = result.get(segref + ((deref != null) ? ":" + deref : "")); String value = (path != null) ? result.get("orig_" + path) : null; element = path + ((value != null) ? ("=" + value) : ""); } ArrayList a = new ArrayList<>(); int i = 0; String parm; while ((parm = result.get(HBCIUtils.withCounter(header + ".parm", i))) != null) { a.add(parm); i++; } params = new String[0]; if (a.size() != 0) params = (a.toArray(params)); } /** * Gibt diesen Rückgabewert in einer lesbaren Darstellung zurück. * * @return einen String, der alle Informationen dieses Objektes kurz * zusammenfasst. */ public String toString() { StringBuilder ret = new StringBuilder(); ret.append(code).append(":").append(text); for (String param : params) { ret.append(" p:").append(param); } return ret.toString().trim(); } /** * Gibt zurück, ob dieser Rückgabewert eine Erfolgsmeldung vom * HBCI-Server darstellt */ public boolean isSuccess() { return (code != null) && (code.charAt(0) == '0'); } /** * Gibt zurück, ob dieser Rückgabewert eine Warnung vom * HBCI-Server darstellt */ public boolean isWarning() { return (code != null) && (code.charAt(0) == '3'); } /** * Gibt zurück, ob dieser Rückgabewert eine HBCI-Fehlermeldung darstellt */ public boolean isError() { return (code != null) && (code.charAt(0) == '9'); } @Override public boolean equals(Object o) { boolean ret; if (o instanceof HBCIRetVal) { boolean equal; HBCIRetVal other = (HBCIRetVal) o; equal = (code == null && other.code == null) || (code != null && other.code != null && code.equals(other.code)); equal &= (text == null && other.text == null) || (text != null && other.text != null && text.equals(other.text)); equal &= (segref == null && other.segref == null) || (segref != null && other.segref != null && segref.equals(other.segref)); equal &= (deref == null && other.deref == null) || (deref != null && other.deref != null && deref.equals(other.deref)); ret = equal; } else { ret = super.equals(o); } return ret; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy