/* 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); } } }
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)); } } }
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); } }