Not sure why the -i condition is failing. Please help me figure this out.
package com.codegym.task.task17.task1711;
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 {
private static Person person;
private static Date bd;
private static int id;
static SimpleDateFormat sdf = new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH);
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) throws Exception {
if (args.length != 0) {
switch (args[0]) {
case "-c":
synchronized (allPeople) {
for (int i = 1; i < args.length; i += 3) {
create(args[i], args[i + 1], args[i + 2]);
}
}
break;
case "-u":
synchronized (allPeople) {
for (int i = 1; i < args.length; i += 4) {
update(args[i], args[i + 1], args[i + 2], args[i + 3]);
}
}
break;
case "-d":
synchronized (allPeople) {
for (int i = 1; i < args.length; i++) {
delete(args[i]);
}
}
break;
case "-i":
synchronized (allPeople) {
for (int i = 1; i < args.length; i++) {
inform(args[i]);
}
}
break;
}
}
}
public static void create(String name, String sex, String date) throws Exception {
bd = sdf.parse(date);
if(sex.equals("m")) {
person = Person.createMale(name, bd);
} else if(sex.equals("f")) {
person = Person.createFemale(name, bd);
}
allPeople.add(person);
System.out.println(allPeople.indexOf(person));
}
public static void update(String ID, String name, String sex, String date) throws Exception {
id = Integer.parseInt(ID);
person = allPeople.get(id);
person.setName(name);
Sex s = sex.equals("m") ? Sex.MALE : Sex.FEMALE;
person.setSex(s);
person.setBirthDate(sdf.parse(date));
}
public static void delete(String ID) throws Exception {
id = Integer.parseInt(ID);
person = allPeople.get(id);
person.setName(null);
person.setSex(null);
person.setBirthDate(null);
}
public static void inform(String ID) throws Exception {
id = Integer.parseInt(ID);
person = allPeople.get(id);
String sex = person.getSex().equals(Sex.MALE) ? "m" : "f";
sdf = new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH);
System.out.printf("%s %s %s", person.getName(), sex, sdf.format(person.getBirthDate()));
}
}