First two requirments are not met. Does anybody know why?
package pl.codegym.task.task20.task2001;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
Odczytywanie i zapisywanie do pliku: Human
*/
public class Solution {
public static void main(String[] args) {
// Zaktualizuj ciąg przekazany do metody createTempFile na podstawie ścieżki do pliku na dysku twardym
try {
File yourFile = File.createTempFile("your_file_name", null);
OutputStream outputStream = new FileOutputStream(yourFile);
InputStream inputStream = new FileInputStream(yourFile);
Human smith = new Human("Smith", new Asset("dom", 999_999.99), new Asset("samochód", 2999.99));
smith.save(outputStream);
outputStream.flush();
Human somePerson = new Human();
somePerson.load(inputStream);
inputStream.close();
// Sprawdź czy smith jest równy somePerson
} catch (IOException e) {
// e.printStackTrace();
System.out.println("Oops, coś jest nie tak z moim plikiem");
} catch (Exception e) {
// e.printStackTrace();
System.out.println("Oops, coś jest nie tak z metodą save/load");
}
}
public static class Human {
public String name;
public List<Asset> assets = new ArrayList<>();
public Human() {
}
public Human(String name, Asset... assets) {
this.name = name;
if (assets != null) {
this.assets.addAll(Arrays.asList(assets));
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Human human = (Human) o;
if (name != null ? !name.equals(human.name) : human.name != null) return false;
return assets != null ? assets.equals(human.assets) : human.assets == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (assets != null ? assets.hashCode() : 0);
return result;
}
public void save(OutputStream outputStream) throws Exception {
// Implementuj tę metodę
PrintWriter printWriter = new PrintWriter(outputStream);
String isNamePresent = name != null ? "tak" : "nie";
printWriter.write(isNamePresent);
printWriter.flush();
if (name != null) {
printWriter.write(name);
}
String isAssetsPresent = assets != null ? "tak" : "nie";
printWriter.println(isAssetsPresent);
printWriter.flush();
if (assets.equals("tak")) {
for (Asset asset : assets) {
printWriter.write(asset.getName());
printWriter.write(String.valueOf(asset.getPrice()));
}
}else {
printWriter.write("nie");
}
printWriter.close();
outputStream.close();
}
public void load(InputStream inputStream) throws Exception {
// Implementuj tę metodę
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String isNamePresent = bufferedReader.readLine();
if (isNamePresent.equals("tak")) {
name = bufferedReader.readLine();
}
String isAssetsPresent = bufferedReader.readLine();
if (isAssetsPresent.equals("tak")) {
String assetName = bufferedReader.readLine();
Double assetPrice;
while (assetName != null) {
assetPrice = Double.parseDouble(bufferedReader.readLine());
assets.add(new Asset(assetName, assetPrice));
assetName = bufferedReader.readLine();
}
}else {
assets = null;
}
inputStreamReader.close();
bufferedReader.close();
}
}
}