package com.javarush.task.task17.task1711;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DateFormat;
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<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 IOException, ParseException {
        //start here - начни тут
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        args = reader.readLine().split(" ");

        switch (args[0]) {
            case ("-c") : synchronized (allPeople){
                DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
                int i = 1;
                while (i < args.length) {
                    Date date = dateFormat.parse(args[i + 2]);
                    if (args[i + 1].equals("м")) allPeople.add(Person.createMale(args[i], date));
                    if (args[i + 1].equals("ж")) allPeople.add(Person.createFemale(args[i], date));
                    System.out.println(allPeople.size() - 1);
                    i = i + 3;
                }
                break;
            }
            case ("-u") : synchronized (allPeople){
                DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
                int i = 1;
                while (i < args.length) {
                    Date date = dateFormat.parse(args[i + 3]);
                    Person person = allPeople.get(Integer.parseInt(args[i]));
                    person.setName(args[i + 1]);
                    if (args[i + 2].equals("м")) person.setSex(Sex.MALE);
                    else if (args[i + 2].equals("ж")) person.setSex(Sex.FEMALE);
                    person.setBirthDate(date);
                    i = i + 4;
                }
                break;
            }
            case ("-d") : synchronized (allPeople){
                for (int i = 1; i < args.length; i++) {
                    Person person = allPeople.get(Integer.parseInt(args[i]));
                    person.setName(null);
                    person.setSex(null);
                    person.setBirthDate(null);
                }
                break;
            }
            case ("-i") : synchronized (allPeople){
                for (int i = 1; i < args.length; i++) {
                    Person person = allPeople.get(Integer.parseInt(args[i]));
                    DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
                    String sex = "м";
                    if (person.getSex().equals("FEMALE")) sex = "ж";
                    System.out.println(person.getName() + " " + sex + " " + dateFormat.format(person.getBirthDate()));
                }
                break;
            }
            default: synchronized (allPeople) {
                System.out.println("Неправильный формат строки");
            }
        }
    }
}