*/
public class JavaFilterByDate extends JavaFilter {
@Override
public void filterData(HashMap<String, Object> parameters) {
newDataFrame = new DataFrameFromCSV();
DataFrameFromCSV oldDataFrame = (DataFrameFromCSV) Controller.getInstance().getDataFrame();
newDataFrame.setVariableNames(oldDataFrame.getVariableNames());
Object[][] matrixOld = oldDataFrame.getMatrix();
int yearColumn = -1;
int monthColumn = -1;
int dayColumn = -1;
for (int i = 0; i < oldDataFrame.getVariableNames().length; i++) {
if (oldDataFrame.getVariableNames()[i].contains("year")) {
yearColumn = i;
}
if (oldDataFrame.getVariableNames()[i].contains("month")) {
monthColumn = i;
}
if (oldDataFrame.getVariableNames()[i].contains("day")) {
dayColumn = i;
}
}
int year = (int) parameters.get("year");
int month = (int) parameters.get("month");
int dayBegining = (int) parameters.get("dayBegining");
int dayEnding = (int) parameters.get("dayEnding");
System.out.println("year= " + year);
System.out.println("month= " + month);
System.out.println("dayBegining= " + dayBegining);
System.out.println("dayEnding= " + dayEnding);
LinkedList<Object[]> help = new LinkedList<>();
int numberOfRows = 0;
for (int i = 0; i < matrixOld.length; i++) {
int yearOld = Integer.parseInt((String) matrixOld[i][yearColumn]);
if (yearOld < 100){
yearOld = yearOld + 2000;
}
int monthOld = Integer.parseInt((String) matrixOld[i][monthColumn]);
int dayOld = Integer.parseInt((String) matrixOld[i][dayColumn]);
if (yearOld == year && dayOld >= dayBegining && dayOld <= dayEnding && monthOld == month) {
help.add(matrixOld[i]);
numberOfRows++;
}
}
Object[][] matrixNew = new String[numberOfRows][oldDataFrame.getVariableNames().length];
for (int i = 0; i < help.size(); i++) {
matrixNew[i] = help.get(i);
}