import java.io.*; import java.util.*; public class Exercise3 { private final List recordings = new ArrayList<>(); private Map salesData = new HashMap<>(); public void exportRecordings(String fileName) { try (PrintWriter writer = new PrintWriter(new FileWriter(fileName))) { // Skriv varje skiva i listan for (Recording recording : recordings) { writer.println(""); writer.println("\t" + recording.getArtist() + ""); writer.println("\t" + recording.getTitle() + ""); writer.println("\t" + recording.getYear() + ""); writer.println("\t"); // Skriv varje genre för inspelningen for (String genre : recording.getGenre()) { writer.println("\t\t" + genre + ""); } writer.println("\t"); writer.println(""); } System.out.println("Export lycklades"); } catch (IOException e) { System.err.println("Error: Export misslyckades"); } } public void importRecordings(String fileName) { try(BufferedReader reader = new BufferedReader(new FileReader(fileName))) { // input strömmar, gör så att en kan läsa text från fil mening för mening. int numberOfRecordings = Integer.parseInt(reader.readLine().trim());//läser första meningen på filen, trim tar bort whitespaces. for (int i = 0; i < numberOfRecordings; i++) { // itererar över antalet recordings. String[] details = reader.readLine().trim().split(";"); // tar bort whitespaces och separerar med ;. String artist = details[0]; //extraherar detaljerna String title = details[1]; int year = Integer.parseInt(details[2]); int genreCount = Integer.parseInt(reader.readLine().trim());// läser in nästa line för att se hur många genrer är associerade med recording Set genres = new HashSet<>(); //itererar över for (int j = 0; j < genreCount; j++) { genres.add(reader.readLine().trim()); } recordings.add(new Recording(artist, title, year, genres)); } reader.close(); } catch (FileNotFoundException e) { System.out.println("Filen kunde inte hittas" + fileName); } catch (IOException e) { }finally { } } public Map importSales(String fileName) { int antalPos; int year; int month; int day; int nyckel; double value; //Försök öppna filen för att hämta data try { DataInputStream infil = new DataInputStream(new FileInputStream(fileName)); antalPos = infil.readInt(); //Läs in från fil, första int som anger antal positioner //Loopa igenom så många gånger som antalPos anger while (antalPos != 0) { //Hämta väderna från filen year = infil.readInt(); month = infil.readInt(); day = infil.readInt(); value = infil.readDouble(); //Lägg in i Map nyckel = year * 100 + month; //Nyckeln för mappen är år+månad (day ingår inte) //Om månaden redan finns för året, hämta värdet och öka values med detta if(salesData.containsKey(nyckel)) { value =+ salesData.get(nyckel); } salesData.put(nyckel, value); //minska antalPos antalPos--; } infil.close(); }catch (FileNotFoundException e){ System.out.println("bin-Filen kunde inte hittas"); } catch(IOException e) { e.printStackTrace(System.out); } return salesData; } //RÖR INTE public List getRecordings() { return Collections.unmodifiableList(recordings); } //RÖR INTE public void setRecordings(List recordings) { this.recordings.clear(); this.recordings.addAll(recordings); } }