it.unibas.spicy.persistence.idgenerator.utils.ReadCsv.java Source code

Java tutorial

Introduction

Here is the source code for it.unibas.spicy.persistence.idgenerator.utils.ReadCsv.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package it.unibas.spicy.persistence.idgenerator.utils;

//import au.com.bytecode.opencsv.CSVReader;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import com.opencsv.enums.CSVReaderNullFieldIndicator;
import it.unibas.spicy.persistence.idgenerator.generator.ColumnMatcherModel;
import it.unibas.spicy.persistence.idgenerator.generator.InputDataModel;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import org.apache.commons.io.FilenameUtils;

/**
 *
 * @author ioannisxar
 */
public class ReadCsv {
    private String path;

    public ReadCsv(String path) {
        this.path = path;
    }

    public ArrayList<InputDataModel> readInputCsv(ArrayList<ColumnMatcherModel> cmmList) {
        ArrayList<InputDataModel> inputData = new ArrayList<>();
        try {
            String[] nextLine;
            //            CSVReader reader = new CSVReader(new FileReader(FilenameUtils.separatorsToSystem(this.path)));
            Reader r = new FileReader(FilenameUtils.separatorsToSystem(this.path));
            CSVReader reader = new CSVReaderBuilder(r).withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
                    .build();

            nextLine = reader.readNext();
            ArrayList<Integer> colNums = new ArrayList<>();
            ArrayList<String> colName = new ArrayList<>();
            for (ColumnMatcherModel cmm : cmmList) {
                for (int i = 0; i < nextLine.length; i++) {
                    if (nextLine[i].equals(cmm.getSourceColumn())) {
                        colNums.add(i);
                        colName.add(cmm.getSourceColumn());
                        break;
                    }
                }
            }

            while ((nextLine = reader.readNext()) != null) {
                InputDataModel idm = new InputDataModel();
                for (int i = 0; i < colNums.size(); i++) {
                    //avenet 20170721
                    String value;
                    if (nextLine[colNums.get(i)] != null)
                        value = nextLine[colNums.get(i)].trim();
                    else
                        value = null;
                    idm.addValue(value);
                    idm.addKey(colName.get(i));
                }
                inputData.add(idm);
            }

        } catch (Exception e) {
            System.err.println(e.getMessage());
            System.exit(-1);
        }
        return inputData;
    }

    public ArrayList<InputDataModel> readTargetCsv(ArrayList<ColumnMatcherModel> cmmList, String generatedColumn) {
        ArrayList<InputDataModel> idmList = new ArrayList<>();
        try {
            String[] nextLine;
            //            CSVReader reader = new CSVReader(new FileReader(FilenameUtils.separatorsToSystem(this.path)));
            Reader r = new FileReader(FilenameUtils.separatorsToSystem(this.path));
            CSVReader reader = new CSVReaderBuilder(r).withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
                    .build();

            nextLine = reader.readNext();
            ArrayList<Integer> colNums = new ArrayList<>();
            ArrayList<String> colName = new ArrayList<>();
            for (ColumnMatcherModel cmm : cmmList) {
                for (int i = 0; i < nextLine.length; i++) {
                    if (nextLine[i].trim().equals(cmm.getTargetColumn().trim())) {
                        colNums.add(i);
                        colName.add(cmm.getTargetColumn().trim());
                        break;
                    }
                }
            }
            for (int i = 0; i < nextLine.length; i++) {
                if (nextLine[i].trim().equals(generatedColumn.trim())) {
                    colNums.add(i);
                    colName.add(generatedColumn.trim());
                    break;
                }
            }

            while ((nextLine = reader.readNext()) != null) {
                InputDataModel idm = new InputDataModel();
                for (int i = 0; i < colNums.size(); i++) {
                    //avenet 20170721
                    String value;
                    if (nextLine[colNums.get(i)] != null)
                        value = nextLine[colNums.get(i)].trim();
                    else
                        value = null;
                    idm.addValue(value);
                    idm.addKey(colName.get(i));
                }
                idmList.add(idm);
            }

        } catch (IOException e) {
            System.err.println(e.getMessage());
            System.exit(-1);
        }
        return idmList;
    }
}