При проверке все корректно работает, и на добавление, и на инфо. Помогите разобраться, плиз
package com.javarush.task.task17.task1711;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/*
CRUD 2
*/
public class Solution {
public static volatile List<Person> allPeople = new ArrayList<Person>();
static {
allPeople.add(Person.createMale("Иванов Иван", new Date())); //сегодня родился id=0
allPeople.add(Person.createMale("Петров Петр", new Date())); //сегодня родился id=1
}
public static void main(String[] args) throws ParseException{
//start here - начни тут
String input = Arrays.toString(args);
//String input = "-c Миронов м 15-Apr-1990 Миронов2 м 16-Apr-1991 Миронов3 м 20-Apr-1998";
ArrayList<String> people = parseInput(input);
switch (args[0]){
case "-c":
synchronized (allPeople){
createPerson(people);
break;
}
case "-u":
synchronized (allPeople){
updatePerson(people);
break;
}
case "-d":
synchronized (allPeople){
deletePerson(people);
break;
}
case "-i":
synchronized (allPeople){
infoPerson(people);
break;
}
default:
synchronized (allPeople){
System.out.println("Please, enter a valid data");
break;
}
}
}
public static void createPerson(ArrayList<String> list) throws ParseException {
Person person = null;
for(int i = 0; i < list.size(); i++) {
String[]line = list.get(i).split("\\s");
Sex sex =chouseSex(line[1]);
if (sex.equals(Sex.MALE)) person = Person.createMale(line[0], parseDate(line[2]));
else if (sex.equals(Sex.FEMALE)) person = Person.createFemale(line[0], parseDate(line[2]));
allPeople.add(person);
System.out.println(allPeople.indexOf(person));
}
}
public static void updatePerson(ArrayList<String> list) throws ParseException{
for(int i = 0; i < list.size(); i++) {
Sex sex = chouseSex(list.get(2));
Date personBorn = parseDate(list.get(3));
Person person = allPeople.get(Integer.parseInt(list.get(0)));
person.setName(list.get(1));
person.setSex(sex);
person.setBirthDate(personBorn);
}
}
public static void deletePerson(ArrayList<String> list) throws ParseException{
for(int i = 0; i < list.size(); i++) {
Person person = allPeople.get(Integer.parseInt(list.get(i)));
person.setName(null);
person.setSex(null);
person.setBirthDate(null);
}
}
public static void infoPerson(ArrayList<String> list){
SimpleDateFormat dateOut = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
for(int i = 0; i < list.size(); i++) {
Person person = allPeople.get(Integer.parseInt(list.get(i)));
String namePerson = person.getName();
String sexPerson = null;
if (person.getSex().equals(Sex.MALE)) sexPerson = "м";
else if (person.getSex().equals(Sex.FEMALE)) sexPerson = "ж";
String personBd = dateOut.format(person.getBirthDate());
System.out.println(namePerson + " " + sexPerson + " " + personBd);
}
}
private static Sex chouseSex(String s){
Sex personSex = null;
if(s.equals("м")) personSex = Sex.MALE;
else if(s.equals("ж")) personSex = Sex.FEMALE;
return personSex;
}
private static Date parseDate(String line) throws ParseException {
String[] parameters = line.split("\\s");
Date personBorn = null;
SimpleDateFormat dateIn = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
for(int i = 0; i < parameters.length; i++){
if(parameters[i].contains("/")) personBorn = dateIn.parse(parameters[i]);
}
return personBorn;
}
private static ArrayList<String> parseInput(String s){
String[] param = s.split("\\s");
ArrayList<String> list = new ArrayList<>();
if(param[0].equals("-c")) {
for (int i = 1; i < param.length; i += 3) {
String a = "" + param[i] + " " + param[i + 1] + " " + param[i + 2];
list.add(a);
}
}
else if(param[0].equals("-u")) {
for (int i = 1; i < param.length; i += 4) {
String a = "" + param[i] + " " + param[i + 1] + " " + param[i + 2] + " " + param[3];
list.add(a);
}
}
else if(param[0].equals("-d") | param[0].equals("-i")) {
for (int i = 1; i < param.length; i++) {
list.add(param[i]);
}
}
return list;
}
}