Ejemplo n.º 1
0
 /**
  * Determines if a proposed name is already used.
  *
  * @param name the proposed name
  * @param fields the list of fields already named
  * @return true if name already used
  */
 protected static boolean nameConflict(final String name, final List<CobFileInputField> fields) {
   for (CobFileInputField field : fields) {
     if (field.getName().equals(name)) {
       return true;
     }
   }
   return false;
 }
Ejemplo n.º 2
0
  /**
   * Generates row meta structure from a fields array.
   *
   * @param fields the fields array
   * @param origin the data origin
   * @param rowMeta the row meta to generate
   */
  public static void fieldsToRowMeta(
      final CobFileInputField[] fields, final String origin, final RowMetaInterface rowMeta) {

    rowMeta.clear(); // Start with a clean slate, eats the input

    for (int i = 0; i < fields.length; i++) {
      CobFileInputField field = fields[i];

      ValueMetaInterface valueMeta = new ValueMeta(field.getName(), field.getType());
      valueMeta.setConversionMask(field.getFormat());
      valueMeta.setLength(field.getLength());
      valueMeta.setPrecision(field.getPrecision());
      valueMeta.setConversionMask(field.getFormat());
      valueMeta.setDecimalSymbol(field.getDecimalSymbol());
      valueMeta.setGroupingSymbol(field.getGroupSymbol());
      valueMeta.setCurrencySymbol(field.getCurrencySymbol());
      valueMeta.setTrimType(field.getTrimType());
      valueMeta.setOrigin(origin);

      rowMeta.addValueMeta(valueMeta);
    }
  }
Ejemplo n.º 3
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;
  }