@Override
  public ArrayList<ArrayList<String>> convertToRowWise(DataSet dataSet) {

    ArrayList<ArrayList<String>> columnDataArrayList = new ArrayList<ArrayList<String>>();
    ArrayList<ArrayList<String>> rowArrayList = new ArrayList<ArrayList<String>>();

    for (int index = 0; index < dataSet.getColumns().size(); index++) {

      columnDataArrayList.add(
          dataSet.getData().get(dataSet.getColumns().get(index).getId()).getValues());
    }

    for (int i = 0; i < columnDataArrayList.size(); i++) {
      ArrayList<String> colwisewRow = columnDataArrayList.get(i);

      for (int j = 0; j < colwisewRow.size(); j++) {

        if (i == 0) {
          ArrayList<String> temp = new ArrayList<String>();
          rowArrayList.add(temp);
        }

        rowArrayList.get(j).add(colwisewRow.get(j));
      }
    }

    return rowArrayList;
  }
  @Override
  public void setDatasetInfo(String id, DataSet dataset) {

    DataSetInfo dataSetInfo = new DataSetInfo(dataset.getName(), 1900);
    dataSetInfo.setId(dataset.getId());
    dataSetInfo.setName(dataset.getName());
    DataSets.dataSetsInfos.put(id, dataSetInfo);
  }
 private List<ArrayList<String>> getCSVFormat(String datasetId) {
   List<ArrayList<String>> csvLines = new ArrayList<ArrayList<String>>();
   DataSet dataSet = DataSets.dataSets.get(datasetId);
   ArrayList<DataSetColumn> columns = dataSet.getColumns();
   DataSetServiceImpl dataSetServiceImpl = new DataSetServiceImpl();
   ArrayList<String> datasetCols = new ArrayList<String>();
   for (int i = 0; i < columns.size(); i++) {
     datasetCols.add(columns.get(i).getName());
   }
   csvLines.add(datasetCols);
   csvLines.addAll(dataSetServiceImpl.convertToRowWise(dataSet));
   return csvLines;
 }
  private void putDatasetinStaticMemory(DataSet dataSet) {

    DataSets.dataSets.put(dataSet.getId(), dataSet);
  }
  @Override
  public DataSet parseFile(String fileUrl, char delimiter, boolean isFileRaw) {
    DataSet dataSet = new DataSet();
    Random randomGenerator = new Random();
    String dataSetId = FilenameUtils.getBaseName(fileUrl); // randomGenerator.nextInt(10000)
    // + "";
    dataSet.setId(dataSetId);
    dataSet.setIsRaw(isFileRaw);

    if (!isFileRaw) {
      ArrayList<DataSetColumn> columns = new ArrayList<DataSetColumn>();
      HashMap<String, DataSetValues<String>> data = new HashMap<String, DataSetValues<String>>();
      try {
        FileReader fileReader = new FileReader(fileUrl);
        CSVReader reader = new CSVReader(fileReader, delimiter);
        List<String[]> entries = reader.readAll();

        // My CSV Code

        String[] values = entries.get(0);
        for (int i = 0; i < values.length; i++) {
          String columnId = randomGenerator.nextInt(10000) + "";

          DataSetColumn column = new DataSetColumn(columnId);
          column.setColumnType(ColumnType.TEXT);
          column.setName(values[i]);
          columns.add(column);

          ArrayList<String> columnValue = new ArrayList<String>();

          DataSetValues<String> dataSetValues = new DataSetValues<String>();
          dataSetValues.setColumnId(columnId);
          dataSetValues.setValues(columnValue);

          data.put(columnId, dataSetValues);
        }

        for (int j = 1; j < entries.size(); j++) {

          values = entries.get(j);
          for (int i = 0; i < columns.size(); i++) {

            data.get(columns.get(i).getId()).addValue(values[i]);
          }
        }
        reader.close();
        fileReader.close();

      } catch (Exception e) { // Catch exception if any
        System.err.println("Error: " + e.getMessage());
      }

      dataSet.setColumns(columns);
      dataSet.setData(data);

    } else {

      try {
        String content = FileUtils.readFileToString(new File(fileUrl));
        dataSet.setRawcontent(content);
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
    putDatasetinStaticMemory(dataSet);
    return dataSet;
  }