package dynamic.joint_degrees;

import dynamic.common.FileGrabber;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.TreeMap;

public class DegreeInfoGetter {

    public static ArrayList<DegreeInfo> GetJointDegreesDssFullReport() {

        TreeMap<String, DegreeInfo> map = new TreeMap<String, DegreeInfo>();

        String dss_filename = "dss_jmc_courses.csv";
        ArrayList<String[]> courses_by_degree = null;
        try {
            courses_by_degree = FileGrabber.GrabCsvFile(dss_filename);
        } catch (IOException e) {
            System.out.println("Problem reading - " + dss_filename);
            System.exit(1);
        }

        courses_by_degree.remove(0);  // header row

        for (Iterator<String[]> it = courses_by_degree.iterator(); it.hasNext(); ) {
            String[] course = it.next();

            String degree_code = course[0];
            String degree_name = course[1];
            DegreeInfo info = map.get(degree_code);

            if (map.containsKey(degree_code))
                info = map.get(degree_code);
            else {
                info = new DegreeInfo(degree_code,degree_name);
                map.put(degree_code, info);
            }

            info.AddCourseInformation(course);

        }
        ArrayList<DegreeInfo> result = new ArrayList<DegreeInfo>();
        result.addAll(map.values());
        Collections.sort(result);
        return result;
    }

    public static DegreeInfo GetJointDegreesDssIndividualReports(String degree_code) {

        String dss_filename = "dss_prog_" + degree_code + ".csv";

        ArrayList<String[]> courses_for_degree = null;
        try {
            courses_for_degree = FileGrabber.GrabCsvFile(dss_filename);
        } catch (IOException e) {
            System.out.println("Problem reading - " + dss_filename);
            System.exit(1);
        }
        courses_for_degree.remove(0);

        String degree_name = courses_for_degree.get(0)[1];
        DegreeInfo info = new DegreeInfo(degree_code,degree_name);

        for (Iterator<String[]> it = courses_for_degree.iterator(); it.hasNext(); ) {
            String[] course = it.next();

            info.AddCourseInformation(course);

        }

        return info;



    }

}
