Read CSV file and Display salary between from date and to date

Step 1>

package com.kartik.file;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class ReadCVS {

public static void main(String[] args) throws FileNotFoundException,
IOException {

ReadCVS obj = new ReadCVS();
obj.run();
}

public void run() throws FileNotFoundException, IOException {
Scanner scanner = new Scanner(new File("D:\\Kartik\\employee.csv"));
Scanner dataScanner = null;
int index = 0;
List<Employee> empList = new ArrayList<Employee>();
while (scanner.hasNextLine()) {
dataScanner = new Scanner(scanner.nextLine());
dataScanner.useDelimiter(",");
Employee emp = new Employee();

while (dataScanner.hasNext()) {
String data = dataScanner.next();
if (index == 0)
emp.setId(Integer.parseInt(data));
else if (index == 1)
emp.setName(data);
else if (index == 2)
emp.setRole(data);
else if (index == 3)
emp.setSalary(data);
else if (index == 4)
emp.setDate(stringDateToDateConvert(data));
else
System.out.println("invalid data::" + data);
index++;
}
index = 0;
empList.add(emp);
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date fromDate = stringDateToDateConvert("2014-01-20");
Date toDate = stringDateToDateConvert("2015-12-20");
List<Employee> empObjList = new ArrayList<Employee>();
for (Employee employee : empList) {
if (compareDatesByCompareTo(df, fromDate, toDate,
employee.getDate())) {
Employee empObj = new Employee();
empObj.setDate(employee.getDate());
empObj.setId(employee.getId());
empObj.setName(employee.getName());
empObj.setSalary(employee.getSalary());
empObjList.add(empObj);
}
System.out.println(employee.getName());
}
int totalSal = 0;
for (Employee employee : empObjList) {
String sal = employee.getSalary();
String a[] = sal.split(" ");
for (String string : a) {
if (!string.equals("USD"))
totalSal = totalSal + Integer.parseInt(string);
}
totalSal = totalSal + Integer.parseInt(sal.substring(0, 3));
System.out.println("Employee Name-->" + employee.getName());
}
System.out.println("Total Sal " + totalSal);
}

/**
*
* @param df
* @param oldDate
* @param newDate
* @param currentDate
* @return
*/
public static boolean compareDatesByCompareTo(DateFormat df, Date oldDate,
Date newDate, Date currentDate) {
if (oldDate.compareTo(currentDate) <= 0
&& currentDate.compareTo(newDate) >= 0) {
return false;
}
return true;
}

/**
*
* @param date
* @return
*/
public Date stringDateToDateConvert(String date) {
Date convertedDate = null;
DateFormat formatter = null;
// Creating SimpleDateFormat with yyyy-MM-dd format e.g."2011-09-14"
// String yyyyMMdd = "20110914";
formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
convertedDate = (Date) formatter.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return convertedDate;
}
}


Step 2>

package com.kartik.file;

import java.util.Date;

public class Employee {

    private int id;
    private String name;
    private String role;
    private String salary;
    private Date date;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public String getSalary() {
        return salary;
    }
    public void setSalary(String salary) {
        this.salary = salary;
    }
   
    /**
* @return the date
*/
public Date getDate() {
return date;
}
/**
* @param date the date to set
*/
public void setDate(Date date) {
this.date = date;
}

@Override
public String toString() {
return "\nID=" + getId() + "::Name" + getName() + "::Role=" + getRole()
+ "::Salary=" + getSalary() + "::Date=" + getDate();
}
}

Step 3>
employee.csv

1,JAVA Kumar,Developer,5000 USD, 2016-01-20
2,JDK,Programmer,4000 USD, 2016-01-20
3,J2EE,Developer,5000 USD, 2016-01-20
4,MULE,QA Lead,14000 USD, 2015-01-20
5,Kartik,QA Lead,4000 USD, 2014-01-20
5,Mandal,QA Lead,4000 USD, 2015-12-19
Previous
Next Post »