При пуске программы - все работает как указано в требованиях, длина списка allPeople изменяется при добавлении и не изменяется при обновлении, удалении, получении информации.
Формат даты также выводится и записывается в корректном формате, не понимаю почему ни одно из требований валидатора не проходит
package com.javarush.task.task17.task1710;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
CRUD
*/
public class Solution {
public static 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) {
String line= readString();
if (getParametr(line).equals("-c"))
{
addInAllPeople(line);
//System.out.println(allPeople.size());
}else if (getParametr(line).equals("-u"))
{
updatePersonByIndex(line);
//System.out.println(allPeople.size());
} else if (getParametr(line).equals("-d"))
{
deletePersonFromList(line);
//System.out.println(allPeople.size());
} else if (getParametr(line).equals("-i"))
{
informPerson(line);
//System.out.println(allPeople.size());
}
}
protected static void deletePersonFromList(String line)
{
Integer id;
List<String> st = new ArrayList<>();
Pattern pattern = Pattern.compile("\\S+\\b");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
st.add(line.substring(matcher.start(), matcher.end()));
}
id = Integer.parseInt(st.get(1));
allPeople.get(id).setName(null);
allPeople.get(id).setSex(null);
allPeople.get(id).setBirthDate(null);
}
protected static void informPerson(String line)
{
Integer id;
Person localPerson;
String informationS, sex;
List<String> st = new ArrayList<String>();
Pattern pattern = Pattern.compile("\\S+\\b");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
st.add(line.substring(matcher.start(), matcher.end()));
}
id = Integer.parseInt(st.get(1));
localPerson = allPeople.get(id);
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyy", Locale.ENGLISH);
if (localPerson.getSex().equals(Sex.FEMALE))
{
sex="ж";
} else
{
sex="м";
}
informationS = localPerson.getName() + " " + sex + " " + df.format(localPerson.getBirthDate());
System.out.println(informationS);
}
protected static void updatePersonByIndex(String line){
String name;
String sex;
List<String> st = new ArrayList<>();
Pattern pattern = Pattern.compile("\\S+\\b");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
st.add(line.substring(matcher.start(), matcher.end()));
}
name = st.get(2);
sex = st.get(3);
Date dt = new Date();
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
try {
dt = df.parse(st.get(4));
} catch (Exception e){
}
Person localPerson = allPeople.get(Integer.parseInt(st.get(1)));
localPerson.setBirthDate(dt);
localPerson.setName(name);
if (sex.equals("ж"))
{
localPerson.setSex(Sex.FEMALE);
} else
{
localPerson.setSex(Sex.MALE);
}
}
protected static void addInAllPeople(String line)
{
String name;
String sex;
List<String> st = new ArrayList<>();
List<Integer> st1 = new ArrayList<>();
Pattern pattern = Pattern.compile("\\S+\\b");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
st.add(line.substring(matcher.start(), matcher.end()));
}
name = st.get(1);
sex = st.get(2);
Pattern pattern1 = Pattern.compile("[^/]+");
Matcher matcher1 = pattern1.matcher(st.get(3));
while (matcher1.find())
{
st1.add(Integer.parseInt(st.get(3).substring(matcher1.start(), matcher1.end())));
}
Calendar dt = new GregorianCalendar(st1.get(2), st1.get(1), st1.get(0));
if (sex.equals("ж"))
{
allPeople.add(Person.createFemale(name,dt.getTime()));
} else {
allPeople.add(Person.createMale(name,dt.getTime()));
}
System.out.println(allPeople.size()-1);
}
protected static String getParametr(String lineWithParam)
{
Pattern pattern = Pattern.compile("^.[cudi]");
Matcher matcher = pattern.matcher(lineWithParam);
if (matcher.find())
{
return lineWithParam.substring(matcher.start(), matcher.end());
} else
{
System.out.println("Not found");
return "";
}
}
protected static String readString(){
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
line = br.readLine();
}
catch (Exception e)
{
System.out.println("Trouble with reader");
line = "";
}
return line;
}
}