class BasicMetricsCollector implements IMetricsCollector {

  void writeHeader(PrintWriter writer) {
    header.add(TIME);

    if (collectSupervisorStats) {
      header.add(TOTAL_SLOTS);
      header.add(USED_SLOTS);
    }

    if (collectTopologyStats) {
      header.add(WORKERS);
      header.add(TASKS);
      header.add(EXECUTORS);
    }

    if (collectThroughput) {
      header.add(TRANSFERRED);
      header.add(THROUGHPUT);
    }

    if (collectThroughputMB) {
      header.add(THROUGHPUT_MB);
      header.add(SPOUT_THROUGHPUT_MB);
    }


    if (collectSpoutThroughput) {
      header.add(SPOUT_EXECUTORS);
      header.add(SPOUT_TRANSFERRED);
      header.add(SPOUT_ACKED);
      header.add(SPOUT_THROUGHPUT);
    }


    if (collectSpoutLatency) {
      header.add(SPOUT_AVG_COMPLETE_LATENCY);
      header.add(SPOUT_MAX_COMPLETE_LATENCY);
    }

    String str = Utils.join(header, ",");
    LOG.info("writing out metrics headers [" + str + "] into .csv file");
    writer.println(str);
    writer.flush();
  }

  public  BasicMetricsCollector(Config stormConfig, StormTopology topology, Set<MetricsItem> items);

}