Example #1
0
 private Converter<?> resolveConverter(final FieldMapping field) {
   Converter<?> converter;
   switch (field.getField()) {
     case AMOUNT:
       converter = mapping.getNumberConverter();
       break;
     case NEGATE_AMOUNT:
       converter = mapping.getNegateAmountConverter();
       break;
     case DATE:
       converter = mapping.getDateConverter();
       break;
     case IGNORED:
       converter = null;
       break;
     default:
       converter = DEFAULT_CONVERTER;
       break;
   }
   return converter;
 }
Example #2
0
  @Override
  public List<TransactionImportDTO> readTransactions(final Reader in)
      throws IllegalTransactionFileFormatException, IOException {
    int lineNumber = 0;

    // Ignore the header lines
    for (int i = 0; i < mapping.getHeaderLines(); i++) {
      ++lineNumber;
      readLine(in);
    }

    // Read each transaction
    final List<TransactionImportDTO> transactions = new LinkedList<TransactionImportDTO>();
    List<String> line;
    while ((line = readLine(in)) != null) {
      ++lineNumber;
      if (line.isEmpty()) {
        continue;
      }
      final TransactionImportDTO transaction = new TransactionImportDTO();
      int column = -1;
      final StringBuilder comments = new StringBuilder();
      for (final FieldMapping field : mapping.getFields()) {
        ++column;
        final Converter<?> converter = resolveConverter(field);
        if (converter == null) {
          // An ignored field
          continue;
        }
        final String stringValue = StringUtils.trimToNull(line.get(column));
        try {
          Object value = converter.valueOf(stringValue);
          final String property = field.getField().getDtoProperty();

          // If this is a member_custom_field, the value would be a map
          if (field.getField().equals(FieldMapping.Field.MEMBER_CUSTOM_FIELD)) {
            final Map<String, String> map = new HashMap<String, String>();
            map.put(field.getMemberField().getInternalName(), (String) value);
            value = map;
          }

          PropertyHelper.set(transaction, property, value);
        } catch (final Exception e) {
          if (comments.length() > 0) {
            comments.append("\n");
          }
          comments.append(
              messageResolver.message(
                  "externalTransferImport.error.importing.comments",
                  field.getName(),
                  column + 1,
                  stringValue));
        }
      }
      transaction.setLineNumber(lineNumber);
      transaction.setComments(StringUtils.trimToNull(comments.toString()));
      transactions.add(transaction);
    }

    return transactions;
  }
Example #3
0
 private List<String> readLine(final Reader in) throws IOException {
   return CSVReader.readLine(in, mapping.getStringQuote(), mapping.getColumnSeparator());
 }