Skip to content

Instantly share code, notes, and snippets.

@kirshiyin89
Created October 3, 2022 16:31
Show Gist options
  • Save kirshiyin89/4c1d331b056275eb31365b366d8e6a26 to your computer and use it in GitHub Desktop.
Save kirshiyin89/4c1d331b056275eb31365b366d8e6a26 to your computer and use it in GitHub Desktop.
CsvDataService
package com.univocity.demo.service;
import com.univocity.demo.dto.CsvData;
import com.univocity.parsers.common.processor.BeanListProcessor;
import com.univocity.parsers.csv.CsvParser;
import com.univocity.parsers.csv.CsvParserSettings;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Service
public class CsvDataService {
private final HashMap<String, CsvData> dataMap = new HashMap<>();
@PostConstruct
private void populateDataMap() {
BeanListProcessor<CsvData> rowProcessor = parseDataFromFile();
for (CsvData data : rowProcessor.getBeans()) {
dataMap.put(data.getId(), data);
}
}
private BeanListProcessor<CsvData> parseDataFromFile() {
InputStream is = getClass().getClassLoader().getResourceAsStream("data.csv");
CsvParserSettings settings = new CsvParserSettings();
BeanListProcessor<CsvData> rowProcessor = new BeanListProcessor<>(CsvData.class);
settings.setHeaderExtractionEnabled(true);
settings.setProcessor(rowProcessor);
settings.selectFields("SERVICE_ID", "SERVICE_NAME", "SERVICE_CASE");
CsvParser parser = new CsvParser(settings);
parser.parseAllRecords(is);
return rowProcessor;
}
public CsvData getDataById(String id) {
return dataMap.get(id);
}
public List<CsvData> getAllData() {
return new ArrayList<>(dataMap.values());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment