The conditions are not satisfied. I have no idea what is wrong.
package de.codegym.task.task17.task1710;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.io.*;
import java.text.SimpleDateFormat;
/*
CRUD
*/
public class Solution {
public static List<Person> allPeople = new ArrayList<>();
static {
allPeople.add(Person.createMale("Donald Chump", new Date())); // id=0
allPeople.add(Person.createMale("Larry Gates", new Date())); // id=1
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String input = reader.readLine();
reader.close();
char operation = input.charAt(1);
input = input.substring(2, input.length());
if(operation == 'c') {
int indexDateStart = input.indexOf('"');
String dateString = input.substring(indexDateStart + 1, input.length() - 2);
Date date = getDate(dateString);
input = input.substring(0, indexDateStart).trim();
char sexChar = input.charAt(input.length() - 1);
Sex sex = (sexChar == 'f') ? Sex.FEMALE : Sex.MALE;
input = input.substring(0, input.length() - 1).trim();
String name = input;
Person addingPerson = (sex == Sex.FEMALE) ? Person.createFemale(name, date) : Person.createMale(name, date);
allPeople.add(addingPerson);
System.out.println(allPeople.indexOf(addingPerson));
}
else if(operation == 'u') {
int indexDateStart = input.indexOf('"');
String dateString = input.substring(indexDateStart + 1, input.length() - 1);
Date date = getDate(dateString);
input = input.substring(0, indexDateStart).trim();
char sexChar = input.charAt(input.length() - 1);
Sex sex = (sexChar == 'f') ? Sex.FEMALE : Sex.MALE;
input = input.substring(0, input.length() - 1).trim();
String inputArray [] = input.split(" ");
int id = Integer.parseInt(inputArray[0]);
String name = "";
for(int i = 1; i < inputArray.length; i++)
name += inputArray[i] + " ";
name = name.trim();
Person updating = allPeople.get(id);
updating.setBirthDate(date);
updating.setName(name);
updating.setSex(sex);
}
else if(operation == 'd') {
int id = Integer.parseInt(input.trim());
Person p = allPeople.get(id);
p.setBirthDate(null);
p.setName(null);
p.setSex(null);
}
else {
int id = Integer.parseInt(input.trim());
Person p = allPeople.get(id);
String name = p.getName();
Sex sex = p.getSex();
Date bd = p.getBirthDate();
String output = name + " ";
output += (sex == Sex.MALE) ? 'm' : 'f';
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH);
output += sdf.format(bd);
System.out.println(output);
}
}
private static Date getDate(String dateString) {
String dateParam [] = dateString.trim().split(" ");
int month = Integer.parseInt(dateParam[0]);
int day = Integer.parseInt(dateParam[1]);
int year = Integer.parseInt(dateParam[2]);
return new Date(year, month, day);
}
}