What's wrong?
package com.codegym.task.task20.task2002;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
/*
Reading and writing to a file: CodeGym
*/
public class Solution {
public static void main(String[] args) {
// You can find your_file_name.tmp in your TMP directory or adjust outputStream/inputStream according to your file's actual location
try {
File yourFile = File.createTempFile("your_file_name", ".txt", new File("/Users/guru/Desktop/"));
OutputStream outputStream = new FileOutputStream(yourFile);
InputStream inputStream = new FileInputStream(yourFile);
CodeGym codeGym = new CodeGym();
// Initialize users field for the codeGym object here
User user = new User();
user.setFirstName("Anton");
user.setLastName("Chekhov");
user.setCountry(User.Country.UNITED_STATES);
user.setBirthDate(new Date());
user.setMale(true);
User user2 = new User();
user2.setFirstName("Jack");
user2.setLastName("Vorobey");
user2.setCountry(User.Country.UNITED_STATES);
user2.setBirthDate(new Date());
user2.setMale(true);
codeGym.users.add(user);
codeGym.users.add(user2);
codeGym.save(outputStream);
outputStream.flush();
CodeGym loadedObject = new CodeGym();
loadedObject.load(inputStream);
// Here check that the codeGym object is equal to the loadedObject object
if (codeGym == loadedObject) {
System.out.println("objects are equal");
}
else {
System.out.println("objects are not equal");
}
for (User u : loadedObject.users) {
System.out.println(u.getFirstName() + " " + u.getLastName() + " " + u.getBirthDate() + " " + u.getCountry());
}
outputStream.close();
inputStream.close();
} catch (IOException e) {
//e.printStackTrace();
System.out.println("Oops, something is wrong with my file");
} catch (Exception e) {
//e.printStackTrace();
System.out.println("Oops, something is wrong with the save/load method");
}
}
public static class CodeGym {
public List<User> users = new ArrayList<>();
public void save(OutputStream outputStream) throws Exception {
OutputStreamWriter writer = new OutputStreamWriter(outputStream);
//String l = "" + (long)this.hashCode();
//writer.write(l);
//System.out.println(l);
String isUserPresent = users != null ? "yes" : "no";
//System.out.println(isUserPresent);
writer.write(isUserPresent);
writer.write(10);
if (users != null) {
for (int i = 0; i < users.size(); i++) {
User user = users.get(i);
//writer.write(32);
if (user.getFirstName() != null || user.getLastName() != null || user.getBirthDate() != null || user.getCountry() != null) {
writer.write(user.getFirstName());
//System.out.print(user.getFirstName());
writer.write(32);
writer.write(user.getLastName());
//System.out.print(" " + user.getLastName());
writer.write(32);
long dt = user.getBirthDate().getTime();
//SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy");
writer.write("" + dt);
//System.out.print(user.getBirthDate().toString());
writer.write(32);
writer.write(user.isMale() ? "true" : "false");
//System.out.print(" " + (user.isMale() ? "true" : "false"));
writer.write(32);
writer.write(user.getCountry().getDisplayName());
//System.out.println(" " + user.getCountry().getDisplayName());
writer.write(10);
writer.flush();
}
}
}
writer.close();
}
public void load(InputStream inputStream) throws Exception {
InputStreamReader reader2 = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(reader2);
String line;
String isUserPresent = reader.readLine();
if (isUserPresent.equals("yes")) {
while ((line = reader.readLine()) != null) {
//System.out.println();
//System.out.println("line from load method = " + line);
String[] lineArr = line.split(" ");
for (int i = 0; i < lineArr.length; i++) {
User user = new User();
user.setFirstName(lineArr[i + 0]);
//System.out.println(user.getFirstName());
user.setLastName(lineArr[i + 1]);
//System.out.println(user.getLastName());
//SimpleDateFormat df = new SimpleDateFormat();
Date dt = new Date(Long.parseLong(lineArr[i + 2]));
user.setBirthDate(dt);
//System.out.println(dt);
user.setMale(lineArr[i + 3].equals("true"));
//System.out.println(user.isMale());
String c = lineArr[i + 4];
for (User.Country co : User.Country.values()) {
if (co.getDisplayName().equals(c)) {
user.setCountry(User.Country.UNITED_STATES);
//System.out.println(User.Country.valueOf(co.getDisplayName()));
}
else {
user.setCountry(User.Country.OTHER);
//System.out.println(User.Country.OTHER);
}
}
//System.out.println(User.Country.valueOf("UNITED_STATES"));
//user.setCountry(User.Country.valueOf("UNITED_STATES"));
users.add(user);
i += 5;
}
}
}
reader.close();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CodeGym codeGym = (CodeGym) o;
return users != null ? users.equals(codeGym.users) : codeGym.users == null;
}
@Override
public int hashCode() {
return users != null ? users.hashCode() : 0;
}
}
}