Пример #1
0
  /* füllt das Objekt mit den Rückgabedaten. Dazu wird zuerst eine Liste aller
  Segmente erstellt, die Rückgabedaten für diesen Task enthalten. Anschließend
  werden die HBCI-Rückgabewerte (RetSegs) im outStore gespeichert. Danach werden
  die GV-spezifischen Daten im outStore abgelegt */
  public void fillJobResult(HBCIMsgStatus status, int offset) {
    try {
      executed = true;
      Properties result = status.getData();

      // nachsehen, welche antwortsegmente ueberhaupt
      // zu diesem task gehoeren

      // res-num --> segmentheader (wird für sortierung der
      // antwort-segmente benötigt)
      Hashtable<Integer, String> keyHeaders = new Hashtable<Integer, String>();
      for (Enumeration i = result.keys(); i.hasMoreElements(); ) {
        String key = (String) (i.nextElement());
        if (key.startsWith("GVRes") && key.endsWith(".SegHead.ref")) {

          String segref = result.getProperty(key);
          if ((Integer.parseInt(segref)) - offset == idx) {
            // nummer des antwortsegments ermitteln
            int resnum = 0;
            if (key.startsWith("GVRes_")) {
              resnum = Integer.parseInt(key.substring(key.indexOf('_') + 1, key.indexOf('.')));
            }

            keyHeaders.put(
                new Integer(resnum), key.substring(0, key.length() - (".SegHead.ref").length()));
          }
        }
      }

      saveBasicValues(result, idx + offset);
      saveReturnValues(status, idx + offset);

      // segment-header-namen der antwortsegmente in der reihenfolge des
      // eintreffens sortieren
      Object[] resnums = keyHeaders.keySet().toArray(new Object[0]);
      Arrays.sort(resnums);

      // alle antwortsegmente durchlaufen
      for (int i = 0; i < resnums.length; i++) {
        // dabei reihenfolge des eintreffens beachten
        String header = keyHeaders.get(resnums[i]);

        extractPlaintextResults(status, header, contentCounter);
        extractResults(status, header, contentCounter++);
        // der contentCounter wird fuer jedes antwortsegment um 1 erhoeht
      }
    } catch (Exception e) {
      String msg = HBCIUtilsInternal.getLocMsg("EXCMSG_CANTSTORERES", getName());
      if (!HBCIUtilsInternal.ignoreError(
          getMainPassport(),
          "client.errors.ignoreJobResultStoreErrors",
          msg + ": " + HBCIUtils.exception2String(e))) {
        throw new HBCI_Exception(msg, e);
      }
    }
  }
Пример #2
0
 private void extractPlaintextResults(HBCIMsgStatus status, String header, int idx) {
   Properties result = status.getData();
   for (Enumeration e = result.keys(); e.hasMoreElements(); ) {
     String key = (String) (e.nextElement());
     if (key.startsWith(header + ".")) {
       jobResult.storeResult(
           HBCIUtilsInternal.withCounter("content", idx)
               + "."
               + key.substring(header.length() + 1),
           result.getProperty(key));
     }
   }
 }
Пример #3
0
  protected void extractResults(HBCIMsgStatus msgstatus, String header, int idx) {
    Properties result = msgstatus.getData();
    String orderid = result.getProperty(header + ".orderid");

    ((GVRTermUebEdit) (jobResult)).setOrderId(orderid);
    ((GVRTermUebEdit) (jobResult)).setOrderIdOld(result.getProperty(header + ".orderidold"));

    if (orderid != null && orderid.length() != 0) {
      Properties p = getLowlevelParams();
      Properties p2 = new Properties();

      for (Enumeration e = p.propertyNames(); e.hasMoreElements(); ) {
        String key = (String) e.nextElement();
        if (!key.endsWith(".id")) {
          p2.setProperty(key.substring(key.indexOf(".") + 1), p.getProperty(key));
        }
      }

      getMainPassport().setPersistentData("termueb_" + orderid, p2);
    }
  }