Java源码示例:com.univocity.parsers.fixed.FixedWidthFields

示例1
@Override
protected FixedWidthParserSettings parserSettings(Map<String, String> config) {
    FixedWidthFields fieldLengths = new FixedWidthFields();
    Optional.ofNullable(config.get(FILE_READER_DELIMITED_SETTINGS_FIELD_LENGTHS))
            .map(fl -> Arrays.stream(fl.split(",")))
            .ifPresent(fl -> fl.forEach(field -> fieldLengths.addField(Integer.parseInt(field))));

    FixedWidthParserSettings settings = new FixedWidthParserSettings(fieldLengths);
    settings.setKeepPadding(getBoolean(config, FILE_READER_DELIMITED_SETTINGS_KEEP_PADDING, false));
    settings.setUseDefaultPaddingForHeaders(getBoolean(config, FILE_READER_DELIMITED_SETTINGS_PADDING_FOR_HEADERS, true));
    settings.setRecordEndsOnNewline(getBoolean(config, FILE_READER_DELIMITED_SETTINGS_ENDS_ON_NEW_LINE, true));
    settings.setSkipTrailingCharsUntilNewline(getBoolean(config, FILE_READER_DELIMITED_SETTINGS_SKIP_TRAILING_CHARS, false));
    settings.getFormat().setPadding(config.getOrDefault(FILE_READER_DELIMITED_SETTINGS_FORMAT_PADDING, " ").charAt(0));

    return settings;
}
 
示例2
/**
 * Function to create a univocity Parser
 */
private void createUnivocityParser()
{
  List<FixedWidthSchema.Field> fields = schema.getFields();
  FixedWidthFields fieldWidthFields = new FixedWidthFields();

  for (int i = 0; i < fields.size(); i++) {
    FixedWidthSchema.Field currentField = fields.get(i);
    int fieldLength = currentField.getFieldLength();
    FieldAlignment currentFieldAlignment;

    if (currentField.getAlignment().equalsIgnoreCase("centre")) {
      currentFieldAlignment = FieldAlignment.CENTER;
    } else if (currentField.getAlignment().equalsIgnoreCase("left")) {
      currentFieldAlignment = FieldAlignment.LEFT;
    } else {
      currentFieldAlignment = FieldAlignment.RIGHT;
    }
    fieldWidthFields.addField(currentField.getName(), fieldLength, currentFieldAlignment, currentField.getPadding());
  }
  FixedWidthParserSettings settings = new FixedWidthParserSettings(fieldWidthFields);
  univocityParser = new com.univocity.parsers.fixed.FixedWidthParser(settings);
}
 
示例3
public boolean writeBeanToFixedWidthFile(List<Product> products, String outputPath) {
    try (Writer outputWriter = new OutputStreamWriter(new FileOutputStream(new File(outputPath)), "UTF-8")) {
        BeanWriterProcessor<Product> rowProcessor = new BeanWriterProcessor<Product>(Product.class);
        FixedWidthFields fieldLengths = new FixedWidthFields(8, 30, 10);
        FixedWidthWriterSettings settings = new FixedWidthWriterSettings(fieldLengths);
        settings.setHeaders("product_no", "description", "unit_price");
        settings.setRowWriterProcessor(rowProcessor);
        FixedWidthWriter writer = new FixedWidthWriter(outputWriter, settings);
        writer.writeHeaders();
        for (Product product : products) {
            writer.processRecord(product);
        }
        writer.close();
        return true;
    } catch (IOException e) {
        logger.error(e.getMessage());
        return false;
    }
}
 
示例4
private void init()
{
  fields = new ArrayList<FixedWidthField>();
  List<String> headers = new ArrayList<String>();
  List<Integer> fieldWidth = new ArrayList<Integer>();
  for (String tmp : fieldDescription.split(",")) {
    String[] fieldTuple = tmp.split(":(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);
    FixedWidthField field = new FixedWidthField();
    field.setName(fieldTuple[0]);
    field.setType(fieldTuple[1]);
    field.setWidth(Integer.parseInt(fieldTuple[2]));
    headers.add(fieldTuple[0]);
    fieldWidth.add(Integer.parseInt(fieldTuple[2]));
    if (field.getType() == FIELD_TYPE.DATE) {
      if (fieldTuple.length > 3) {
        field.setDateFormat(fieldTuple[3].replace("\"", ""));
      } else {
        logger.error("Date format is missing for the field {}", field.getName());
        throw new RuntimeException("Missing date format");
      }
    }
    fields.add(field);
  }
  header = headers.toArray(new String[headers.size()]);
  int[] width = Ints.toArray(fieldWidth);
  FixedWidthFields lengths = new FixedWidthFields(header, width);
  FixedWidthParserSettings settings = new FixedWidthParserSettings(lengths);
  settings.getFormat().setPadding(this.padding);
  fixedWidthParser = new FixedWidthParser(settings);
}
 
示例5
public List<String[]> parseFixedWidthFile(String relativePath) {
    try (Reader inputReader = new InputStreamReader(new FileInputStream(new File(relativePath)), "UTF-8")) {
        FixedWidthFields fieldLengths = new FixedWidthFields(8, 30, 10);
        FixedWidthParserSettings settings = new FixedWidthParserSettings(fieldLengths);

        FixedWidthParser parser = new FixedWidthParser(settings);
        List<String[]> parsedRows = parser.parseAll(inputReader);
        return parsedRows;
    } catch (IOException e) {
        logger.error("IOException opening file: " + relativePath + " " + e.getMessage());
        return new ArrayList<String[]>();
    }
}
 
示例6
public FixedWidthFields columnSpecs() {
  return columnSpecs;
}
 
示例7
public FixedWidthFields columnSpecs() {
  return columnSpecs;
}
 
示例8
public FixedWidthWriteOptions.Builder header(FixedWidthFields columnSpecs) {
  this.columnSpecs = columnSpecs;
  return this;
}
 
示例9
public FixedWidthFields columnSpecs() {
  return columnSpecs;
}
 
示例10
public FixedWidthFields columnSpecs() {
  return columnSpecs;
}
 
示例11
public FixedWidthWriteOptions.Builder header(FixedWidthFields columnSpecs) {
  this.columnSpecs = columnSpecs;
  return this;
}