ovn3/Exercise3
2024-04-17 15:42:01 +02:00

125 lines
3.8 KiB
Plaintext

import java.io.*;
import java.util.*;
public class Exercise3 {
private final List<Recording> recordings = new ArrayList<>();
private Map<Integer, Double> 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("<recording>");
writer.println("\t<artist>" + recording.getArtist() + "</artist>");
writer.println("\t<title>" + recording.getTitle() + "</title>");
writer.println("\t<year>" + recording.getYear() + "</year>");
writer.println("\t<genres>");
// Skriv varje genre för inspelningen
for (String genre : recording.getGenre()) {
writer.println("\t\t<genre>" + genre + "</genre>");
}
writer.println("\t</genres>");
writer.println("</recording>");
}
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<String> 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<Integer, Double> 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<Recording> getRecordings() {
return Collections.unmodifiableList(recordings);
}
//RÖR INTE
public void setRecordings(List<Recording> recordings) {
this.recordings.clear();
this.recordings.addAll(recordings);
}
}