Can somebody tell what is sync block?
package pl.codegym.task.task17.task1711;
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<>();
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 ParseException {
switch (args[0]) {
case "-c":
for (int i = 0; i < args.length - 1; i += 3) {
CreatePersonInAllPeople(args, i);
}
break;
case "-u":
for (int i = 0; i < args.length - 1; i += 4) {
UpdatePersonInAllPeople(args, i);
}
break;
case "-d":
for (int i = 0; i < args.length - 1; i++) {
DeletePersonInAllPeople(args, i);
}
break;
case "-i":
for (int i = 0; i < args.length - 1; i++) {
PrintPersonInAllPeople(args, i);
}
break;
}
}
public static void CreatePersonInAllPeople(String[] args, int i) throws ParseException {
String name = args[1 + i];
String sex = args[2 + i];
String date = args[3 + i];
Date data = new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH).parse(date);
if (sex.equals("m"))
allPeople.add(Person.createMale(name, data));
if (sex.equals("f"))
allPeople.add(Person.createFemale(name, data));
System.out.println(allPeople.size() - 1);
}
public static void UpdatePersonInAllPeople(String[] args, int i) throws ParseException {
int id = Integer.parseInt(args[1 + i]);
String name = args[2 + i];
String sex = args[3 + i];
String date = args[4 + i];
Date data = new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH).parse(date);
allPeople.get(id).setName(name);
if (sex.equals("m"))
allPeople.get(id).setSex(Sex.MALE);
if (sex.equals("f"))
allPeople.get(id).setSex(Sex.FEMALE);
allPeople.get(id).setBirthDate(data);
// SimpleDateFormat date=new SimpleDateFormat("MMM dd yyyy");
// if(sex.equals("m"))
// allPeople.set(Integer.parseInt(id), Person.createMale(name, date.parse(bd)));
// if(sex.equals("f"))
// allPeople.set(Integer.parseInt(id), Person.createFemale(name, date.parse(bd)));
}
public static void DeletePersonInAllPeople(String[] args, int i) {
int id = Integer.parseInt(args[1 + i]);
//Person osoba = allPeople.get(Integer.parseInt(id));
allPeople.get(id).setBirthDate(null);
allPeople.get(id).setName(null);
allPeople.get(id).setSex(null);
}
public static void PrintPersonInAllPeople(String[] args, int i) {
//SimpleDateFormat newDate = new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH);
DateFormat newDate = new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH);
Person person = allPeople.get(Integer.parseInt(args[1 + i]));
String sex = "";
if (person.getSex().equals(Sex.MALE)) {
sex = "m";
} else {
sex = "f";
}
System.out.println(person.getName() + " " + sex + " " + newDate.format(person.getBirthDate()));
}
}
/*
CRUD 2
Batch CrUD: wielokrotne tworzenie, aktualizowanie, usuwanie.
Program jest wykonywany z jednym z następujących zestawów argumentów:
-c name1 sex1 bd1 name2 sex2 bd2 ...
-u id1 name1 sex1 bd1 id2 name2 sex2 bd2 ...
-d id1 id2 id3 id4 ...
-i id1 id2 id3 id4 ...
Wartości argumentów:
name (String)
sex (płeć, "m" lub "f")
bd (data urodzenia w następującym formacie: 04 15 1990)
-c (dodaje osobę z określonymi argumentami na końcu allPeople; wyświetla id na ekranie)
-u (aktualizuje odpowiednie dane osób o określonych numerach id)
-d (wykonuje logiczne usunięcie osoby o określonym id; zastępuje wszystkie dane wartością null)
-i (wyświetla informacje na temat wszystkich osób o określonych numerach id: name sex bd)
Poszczególne id odpowiadają indeksom na liście.
Format daty urodzenia to Apr 15 1990.
Wszystkie osoby powinny być przechowywane w allPeople.
Kolejność wyświetlania danych odpowiada kolejności, w jakiej są one wprowadzane.
Upewnij się, że program jest bezpieczny dla wątków (działa poprawnie z wieloma wątkami, nie uszkadzając danych).
Użyj Locale.ENGLISH jako drugiego argumentu dla SimpleDateFormat.
Przykładowe dane wyjściowe dla dwóch id z argumentem -i:
Washington m Apr 15 1990
Ross f Apr 25 1997
Requirements:
1. Klasa Solution musi zawierać publiczne pole typu volatile List<Person> o nazwie allPeople.
2. Klasa Solution musi posiadać blok statyczny, w którym dwie osoby są dodawane do listy allPeople.
3. Przy użyciu argumentu -c program musi dodawać wszystkie osoby o określonych argumentach na końcu listy allPeople i wyświetlać id każdej z nich.
4. Przy użyciu argumentu -u program musi aktualizować dane osób o określonych numerach id na liście allPeople.
5. Przy użyciu argumentu -d program musi wykonywać logiczne usunięcie osób o określonych numerach id na liście allPeople.
6. Przy użyciu argumentu -i program powinien wyświetlać dane na temat wszystkich osób o określonych numerach id w formacie określonym w zadaniu.
7. Metoda main klasy Solution musi zawierać wyrażenie switch oparte o args[0].
8. Etykieta każdego przypadku w poleceniu przełączania musi zawierać blok synchronizacji dla allPeople.
*/