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