@Override
  public void buildDataset(
      String macroContent, Map<String, String> parameters, MacroTransformationContext context)
      throws MacroExecutionException {
    validateParameters(parameters);

    TableBlock tableBlock = getTableBlock(macroContent, context);

    int[] dataRange = getDataRange(tableBlock);

    TableDatasetBuilder datasetBuilder;
    setChartModel(new SimpleChartModel());

    switch (getDatasetType()) {
      case CATEGORY:
        datasetBuilder = new TableCategoryDatasetBuilder();
        break;
      case PIE:
        datasetBuilder = new TablePieDatasetBuilder();
        break;
      case TIMETABLE_XY:
        datasetBuilder = new TableTimeTableXYDatasetBuilder();
        break;
      default:
        throw new MacroExecutionException(
            String.format("Unsupported dataset type [%s]", getDatasetType().getName()));
    }

    setAxes();

    datasetBuilder.setLocaleConfiguration(getLocaleConfiguration());
    datasetBuilder.setParameters(parameters);

    if (SERIES_COLUMNS.equals(series)) {
      datasetBuilder.setTranspose(true);
    }

    buildDataset(tableBlock, dataRange, datasetBuilder);

    setDataset(datasetBuilder.getDataset());
  }