Looks like it's working fine but 3rd requirement is not passed
package pl.codegym.task.task17.task1711;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/*
CRUD 2
*/
public class Solution {
public static volatile 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) {
if (args == null || args.length < 1)
throw new RuntimeException();
switch (args[0])
{
case "-c":
synchronized (allPeople) {
cAction(args);
}
break;
case "-u":
synchronized (allPeople) {
uAction(args);
}
break;
case "-d":
synchronized (allPeople) {
dAction(args);
}
break;
case "-i":
synchronized (allPeople) {
iAction(args);
}
break;
}
}
private synchronized static void cAction(String[] s) {
for (int n = 1; n < s.length; n=+3)
{
Person person=null;
SimpleDateFormat formatter = new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH);
String dateInString = s[n+2];
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
if (s[n+1].equals("m"))
{
person = Person.createMale(s[n], date);
}
else if(s[n+1].equals("f"))
{
person = Person.createFemale(s[n], date);
}
allPeople.add(person);
System.out.println(allPeople.size() - 1);
}
}
private synchronized static void uAction(String[] s)
{
for (int n = 1; n < s.length; n+=4) //zautomatyzowac indexy
{
int i = Integer.parseInt(s[n]);
allPeople.get(i).setName(s[n+1]);
if (s[n+2].equals("m")) {
allPeople.get(i).setSex(Sex.MALE);
} else {
allPeople.get(i).setSex(Sex.FEMALE);
}
SimpleDateFormat formatter = new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH);
String dateInString = s[n+3];
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
allPeople.get(i).setBirthDate(date);
}
}
private synchronized static void dAction(String[] s)
{
for (int i = 1; i < s.length; i++)
{
int index = Integer.parseInt(s[i]);
allPeople.get(index).setName(null);
allPeople.get(index).setSex(null);
allPeople.get(index).setBirthDate(null);
}
}
private synchronized static void iAction(String[] s)
{
for (int i = 1; i < s.length; i++)
{
SimpleDateFormat formatter = new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH);
Person person = allPeople.get(Integer.parseInt(s[i]));
if (person.getSex().equals(Sex.MALE)) {
System.out.println(person.getName() + " m " + formatter.format(person.getBirthDate()));
} else {
System.out.println(person.getName() + " f " + formatter.format(person.getBirthDate()));
}
}
}
}