Вроде и брэйки стоят, и синхронизация, а вот "-u" его чем-то не устраивает... :(
package com.javarush.task.task17.task1711;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
/*
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 Exception{
//start here - начни тут
SimpleDateFormat df1 = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
SimpleDateFormat df2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
//новый персон
Person pers;
switch (args[0]) {
case "-c": {
synchronized (allPeople) {
int i = 1;
while (i < args.length) {
if (args[i + 1].equals("м")) {
pers = Person.createMale(args[i], df1.parse(args[i + 2]));
allPeople.add(pers);
} else {
pers = Person.createFemale(args[i], df1.parse(args[i + 2]));
allPeople.add(pers);
}
System.out.println(allPeople.indexOf(pers));
i = i + 3;
}
}
break;
}
case "-u": {
synchronized (allPeople) {
for (int j = 1; j < args.length; j+=4) {
allPeople.get(j).setName(args[j + 1]);
if (args[j + 2].equals("м")) allPeople.get(j).setSex(Sex.MALE);
else allPeople.get(j).setSex(Sex.FEMALE);
allPeople.get(j).setBirthDay(df1.parse(args[j + 3]));
}
}
break;
}
case "-d": {
synchronized (allPeople) {
for (int k = 1; k < args.length; k++) {
pers = allPeople.get(Integer.parseInt(args[k]));
pers.setName(null);
pers.setBirthDay(null);
pers.setSex(null);
}
}
break;
}
case "-i": {
synchronized (allPeople) {
for (int t = 1; t < args.length; t++) {
pers = allPeople.get(Integer.parseInt(args[t]));
String sex;
if (pers.getSex().equals(Sex.MALE)) sex = " м ";
else sex = " ж ";
System.out.println(pers.getName() + sex + df2.format(pers.getBirthDay()));
}
}
break;
}
}
}
}