Example #1
0
  @Override
  public Representation convert(DataHandler handler, final Reference ref, CcData data)
      throws Exception {
    final StringBuilder sb = new StringBuilder();
    Query query = handler.getQuery();

    sb.setLength(0);
    String sep = "";
    for (MdColumn c : query.getColumns()) {
      sb.append(sep).append(escapeStr(c.getCName()));
      sep = FS;
    }
    sb.append(NL);

    new DataVisitor(handler) {

      @Override
      public void startRow() {}

      @Override
      public void visitCol() {

        if (colNumber > 0) {
          sb.append(FS);
        }

        if (value != null) {
          switch (column.getType()) {
            case DATE:
              sb.append(DATE_FORMAT.format((Date) value));
              break;
            case STRING:
              sb.append(escapeStr((String) value));
              break;
            case BLOB:
            case CLOB:
              sb.append("[file]");
              break;
            default:
              sb.append(value);
          }
        }
      }

      @Override
      public void endRow() {
        sb.append(NL);
      }
    }.visit(data.getValue());

    return new WriterRepresentation(MediaType.TEXT_CSV) {
      @Override
      public void write(Writer writer) throws IOException {
        writer.write(sb.toString());
      }
    };
  }