예제 #1
0
  public void verifyConstraints() {
    HBCIPassportInternal passport = getMainPassport();

    // durch alle gespeicherten constraints durchlaufen
    for (Iterator<String> i = constraints.keySet().iterator(); i.hasNext(); ) {
      // den frontendnamen für das constraint ermitteln
      String frontendName = (i.next());

      // dazu alle ziel-lowlevelparameter mit default-wert extrahieren
      String[][] values = (constraints.get(frontendName));

      // durch alle ziel-lowlevel-parameternamen durchlaufen, die gesetzt werden müssen
      for (int j = 0; j < values.length; j++) {
        // Array mit Pfadname und default Wert
        String[] value = values[j];
        // lowlevel-name (Pfadname) des parameters (z.B. wird Frontendname src.bic zum Pfad My.bic
        String destination = value[0];
        // default-wert des parameters, wenn keiner angegeben wurde
        String defValue = value[1];

        String givenContent = getLowlevelParam(destination);
        if (givenContent == null && indexedConstraints.contains(frontendName)) {
          givenContent = getLowlevelParam(insertIndex(destination, 0));
        }

        String content = null;

        content = defValue;
        if (givenContent != null && givenContent.length() != 0) content = givenContent;

        if (content == null) {
          String msg = HBCIUtilsInternal.getLocMsg("EXC_MISSING_HL_PROPERTY", frontendName);
          if (!HBCIUtilsInternal.ignoreError(
              passport, "client.errors.ignoreWrongJobDataErrors", msg))
            throw new InvalidUserDataException(msg);
          content = "";
        }

        // evtl. default-wert als aktuellen wert setzen (naemlich dann,
        // wenn kein content angegeben wurde (givenContent==null), aber
        // ein default-Content definiert wurde (content.length()!=0)
        if (content.length() != 0 && givenContent == null) setLowlevelParam(destination, content);
      }
    }

    // verify if segment can be created
    SEG seg = null;
    try {
      seg = createJobSegment();
      seg.validate();
    } catch (Exception ex) {
      throw new HBCI_Exception("*** the job segment for this task can not be created", ex);
    } finally {
      if (seg != null) {
        SEGFactory.getInstance().unuseObject(seg);
      }
    }
  }
예제 #2
0
  public SEG createJobSegment(int segnum) {
    SEG seg = null;
    try {
      MsgGen gen = getParentHandler().getMsgGen();
      seg = SEGFactory.getInstance().createSEG(getName(), getName(), null, 0, gen.getSyntax());
      for (Enumeration e = getLowlevelParams().propertyNames(); e.hasMoreElements(); ) {
        String key = (String) e.nextElement();
        String value = getLowlevelParams().getProperty(key);
        seg.propagateValue(
            key, value, SyntaxElement.TRY_TO_CREATE, SyntaxElement.DONT_ALLOW_OVERWRITE);
      }
      seg.propagateValue(
          getName() + ".SegHead.seq",
          Integer.toString(segnum),
          SyntaxElement.DONT_TRY_TO_CREATE,
          SyntaxElement.ALLOW_OVERWRITE);
    } catch (Exception ex) {
      throw new HBCI_Exception("*** the job segment for this task can not be created", ex);
    }

    return seg;
  }