package ee.tkasekamp.vickywaranalyzer.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.TreeMap; import ee.tkasekamp.vickywaranalyzer.core.Country; public class Localisation { /** * Main method of this class. Manages the reading from csv */ public static void readLocalisation(String installPath, TreeMap<String, Country> countryTreeMap) { try { List<String> loclist = getLocalisationFiles(installPath); for (String string : loclist) { readCSV(installPath + "/localisation/" + string, countryTreeMap); } } catch (NullPointerException | IOException e) {} } /** * Reads the given file and for any given line checks if the tag is equal to the one in * countryList. */ private static void readCSV(String filename, TreeMap<String, Country> countryTreeMap) throws IOException { /* The same reader as in SaveGameReader */ InputStreamReader reader = new InputStreamReader(new FileInputStream(filename), "ISO8859_1"); // This encoding seems to work for ö // and ü BufferedReader scanner = new BufferedReader(reader); String line; while ((line = scanner.readLine()) != null) { String[] dataArray = line.split(";"); // Splitting the line if (countryTreeMap.containsKey(dataArray[0])) { countryTreeMap.get(dataArray[0]).setOfficialName(dataArray[1]); } } // Close the file once all data has been read. scanner.close(); } private static List<String> getLocalisationFiles(String path) throws NullPointerException { List<String> locList = new ArrayList<>(); File folder = new File(path + "/localisation"); File[] listOfFiles = folder.listFiles(); String file; for (File listOfFile : listOfFiles) { if (listOfFile.isFile()) { file = listOfFile.getName(); if (file.endsWith(".csv") || file.endsWith(".CSV")) { locList.add(file); } } } return locList; } }