How to do Country from String ?
package pl.codegym.task.task20.task2002;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/*
Odczytywanie i zapisywanie do pliku: CodeGym
*/
public class Solution {
public static void main(String[] args) {
// Plik your_file_name.tmp znajdziesz w swoim folderze plików tymczasowych, ewentualnie dostosuj
// outputStream/inputStream do rzeczywistej lokalizacji pliku
try {
File yourFile = File.createTempFile("your_file_name", null);
OutputStream outputStream = new FileOutputStream(yourFile);
InputStream inputStream = new FileInputStream(yourFile);
CodeGym codeGym = new CodeGym();
// Inicjalizuj tutaj pole users dla obiektu codeGym
codeGym.save(outputStream);
outputStream.flush();
CodeGym loadedObject = new CodeGym();
loadedObject.load(inputStream);
// Sprawdź tutaj, czy obiekt codeGym jest taki sam jak obiekt loadedObject
outputStream.close();
inputStream.close();
} 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 CodeGym {
public List<User> users = new ArrayList<>();
public void save(OutputStream outputStream) throws Exception {
// Implementuj tę metodę
PrintWriter writer = new PrintWriter(outputStream);
String isUserPresent = users != null ? "tak" : "nie";
writer.println(isUserPresent);
writer.flush();
if (users != null) {
for (User user : users) {
writer.println(user.getFirstName());
writer.println(user.getLastName());
writer.println(user.getBirthDate());
writer.println(user.isMale());
writer.println(user.getCountry());
}
}
writer.close();
}
public void load(InputStream inputStream) throws IOException, ParseException {
// Implementuj tę metodę
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String isUserPresent = reader.readLine();
if (isUserPresent.equals("tak")) {
String firstName;
while ((firstName = reader.readLine()) != null) {
String lastName = reader.readLine();
String birthDay = reader.readLine();
SimpleDateFormat format = new SimpleDateFormat("MMMM d, yyyy");
Date date = format.parse(birthDay);
String isMaleString = reader.readLine();
boolean isMale = isMaleString.equals("true");
String countryString = reader.readLine();
User user = new User();
user.setFirstName(firstName);
user.setLastName(lastName);
user.setBirthDate(date);
user.setMale(isMale);
// user.setCountry(country);
users.add(user);
}
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CodeGym codeGym = (CodeGym) o;
return Objects.equals(users, codeGym.users);
}
@Override
public int hashCode() {
return users != null ? users.hashCode() : 0;
}
}
}
/*
Odczytywanie i zapisywanie do pliku: CodeGym
Zaimplementuj logikę dla pliku IO dla klasy CodeGym.
Plik your_file_name.tmp może zawierać kilka obiektów CodeGym.
Metoda main jest dostępna tylko dla Ciebie i nie jest wykorzystywana do testowania rozwiązania.
Requirements:
1. Logika odczytu/zapisu w metodach save/load musi działać poprawnie, gdy lista users jest pusta.
2. Logika odczytu/zapisu w metodach save/load musi działać poprawnie, gdy lista users nie jest pusta.
3. Klasa Solution.CodeGym nie powinna obsługiwać interfejsu Serializable.
4. Klasa Solution.CodeGym musi być publiczna.
5. Klasa Solution.CodeGym nie powinna obsługiwać interfejsu Externalizable.
*/