package dynamic.degrees;

import dynamic.common.ArrayListHelper;
import dynamic.common.FileGrabber;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

public class DegreeIniHandler {

    static String INI_FILE_NAME =    "config_degree_pages.ini";
    static String INI_FILE_TYPES_NAME =    "config_degree_pages_types.ini";

    static ArrayList<String[]> ini_file = null;
    static ArrayList<String[]> ini_file_types = null;

    private static void GrabIniFiles() {

        if(ini_file != null) return;
        String file_name = INI_FILE_TYPES_NAME;
        try {
            ini_file_types = FileGrabber.GrabIniFile(file_name);
            file_name = INI_FILE_NAME;
            ini_file = FileGrabber.GrabIniFile(file_name);
        } catch (IOException e) {
            System.out.println("Problem reading - " + file_name);
            System.exit(1);
        }

    }

    public static String GetOptionTitle(String category, String degree_code, int year) throws IOException {

        GrabIniFiles();

        for (int i = 0; i < ini_file_types.size(); i++) {
            String[] ini_line = ini_file_types.get(i);

            if(ini_line[0].equals(degree_code) &&
                    ini_line[1].equals("" + year) &&
                    ini_line[2].equals(category)
                    )
                return ini_line[3];

        }

        return category;
    }

    public static ArrayList<String> GetDegreeCodesList() {

        GrabIniFiles();
        return ArrayListHelper.FlattenArrayListOfArray(ini_file, 0);

    }

    private static String[] GetIniForDegree(String degree_code){

        GrabIniFiles();
        for (Iterator<String[]> iterator = ini_file.iterator(); iterator.hasNext(); ) {
            String[] next = iterator.next();
            if(next[0].equals(degree_code))
                return next;
        }
        return null;
    }


    public static String GetTargetUrl(String degree_code) {
        String[] degree_ini = GetIniForDegree(degree_code);
        if(degree_ini == null)
            return "target_url_not_in_ini_file";
        else
            return degree_ini[2];
    }

    public static String GetFormatOrder(String degree_code) {
        String[] degree_ini = GetIniForDegree(degree_code);
        if(degree_ini == null)
            return "unknown_format_ordering";
        else
            return degree_ini[1];
    }

//    public static String GetSupplementaryInfo(String degree_code) {
//        GrabIniFiles();
//        String[] degree_ini = GetIniForDegree(degree_code);
//        if(degree_ini == null || degree_ini.length < 4)
//            return "";
//        else
//            return degree_ini[3];
//    }
}
