コード例 #1
0
  /**
   * For elementary COBOL data items, this translates COBOL properties to PDI field properties.
   *
   * @param binding the elementary COBOL data item
   * @param prefix the parents names (space if root)
   * @param suffix the index for array items
   * @param redefined true if this field is in a redefined sub-structure
   * @return a PDI field
   */
  public static CobFileInputField toField(
      final List<CobFileInputField> fields,
      final ICobolBinding binding,
      final String prefix,
      final String suffix,
      final boolean redefined) {

    CobFileInputField field = new CobFileInputField();
    field.setName(newName(fields, binding.getBindingName(), prefix, suffix));

    if (binding instanceof ICobolNumericBinding || binding instanceof ICobolArrayNumericBinding) {
      field.setPrecision(binding.getFractionDigits());
    } else {
      field.setPrecision(-1);
    }
    field.setLength(-1);
    field.setTrimType(ValueMetaInterface.TRIM_TYPE_NONE);

    if (binding instanceof ICobolStringBinding) {
      field.setType(ValueMetaInterface.TYPE_STRING);
      field.setLength((binding.getByteLength()));
      field.setTrimType(ValueMetaInterface.TRIM_TYPE_RIGHT);

    } else if (binding instanceof ICobolArrayStringBinding) {
      field.setType(ValueMetaInterface.TYPE_STRING);
      field.setLength(((ICobolArrayBinding) binding).getItemByteLength());
      field.setTrimType(ValueMetaInterface.TRIM_TYPE_RIGHT);

    } else if (binding instanceof ICobolNumericBinding
        || binding instanceof ICobolArrayNumericBinding) {
      if (binding.getFractionDigits() > 0) {
        field.setType(ValueMetaInterface.TYPE_BIGNUMBER);
      } else {
        field.setType(ValueMetaInterface.TYPE_INTEGER);
      }

    } else if (binding instanceof ICobolDoubleBinding
        || binding instanceof ICobolArrayDoubleBinding) {
      field.setType(ValueMetaInterface.TYPE_NUMBER);

    } else if (binding instanceof ICobolFloatBinding
        || binding instanceof ICobolArrayFloatBinding) {
      field.setType(ValueMetaInterface.TYPE_NUMBER);

    } else if (binding instanceof ICobolDbcsBinding || binding instanceof ICobolNationalBinding) {
      field.setType(ValueMetaInterface.TYPE_STRING);
      field.setLength((binding.getByteLength() / 2));
      field.setTrimType(ValueMetaInterface.TRIM_TYPE_RIGHT);

    } else if (binding instanceof ICobolArrayDbcsBinding
        || binding instanceof ICobolArrayNationalBinding) {
      field.setType(ValueMetaInterface.TYPE_STRING);
      field.setLength(((ICobolArrayBinding) binding).getItemByteLength() / 2);
      field.setTrimType(ValueMetaInterface.TRIM_TYPE_RIGHT);

    } else if (binding instanceof ICobolOctetStreamBinding) {
      field.setType(ValueMetaInterface.TYPE_BINARY);
      field.setLength((binding.getByteLength()));

    } else if (binding instanceof ICobolArrayOctetStreamBinding) {
      field.setType(ValueMetaInterface.TYPE_BINARY);
      field.setLength(((ICobolArrayBinding) binding).getItemByteLength());

    } else {
      field.setType(ValueMetaInterface.TYPE_NONE);
    }
    field.setFormat("");
    field.setCurrencySymbol("");
    field.setDecimalSymbol("");
    field.setGroupSymbol("");
    field.setRedefined(redefined);

    return field;
  }