package com.javarush.test.level17.lesson10.bonus02;
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
CrUD Batch - multiple Creation, Updates, Deletion
!!!РЕКОМЕНДУЕТСЯ выполнить level17.lesson10.bonus01 перед этой задачей!!!
Программа запускается с одним из следующих наборов параметров:
-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 ...
Значения параметров:
name - имя, String
sex - пол, "м" или "ж", одна буква
bd - дата рождения в следующем формате 15/04/1990
-с - добавляет всех людей с заданными параметрами в конец allPeople, выводит id (index) на экран в соответствующем порядке
-u - обновляет соответствующие данные людей с заданными id
-d - производит логическое удаление всех людей с заданными id
-i - выводит на экран информацию о всех людях с заданными id: name sex bd
id соответствует индексу в списке
Формат вывода даты рождения 15-Apr-1990
Все люди должны храниться в allPeople
Порядок вывода данных соответствует вводу данных
Обеспечить корректную работу с данными для множества нитей (чтоб не было затирания данных)
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat
*/
public class Solution {
public static 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 ParseException
{
//start here - начни тут
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
if (args.length > 0) {
switch (args[0]) {
case "-c" : {
int nextIdBeginning = 1;
String fullName;
int sexIndex;
Date date;
for (int i = 1; i < args.length; i++) {
if (args[i].contains("/")) {
StringBuilder stringbuilder = new StringBuilder();
for (int j = nextIdBeginning; j < (i - 1); j++) {
stringbuilder.append(args[j]);
stringbuilder.append(" ");
}
fullName = stringbuilder.toString().trim(); //имя
sexIndex = i - 1; //пол
date = format.parse(args[i]); //дата рождения
if (args[sexIndex].equals("м"))
{
allPeople.add(Person.createMale(fullName, date));
} else if (args[sexIndex].equals("ж"))
{
allPeople.add(Person.createFemale(fullName, date));
}
System.out.println(allPeople.size()-1);
nextIdBeginning = i + 1;
}
}
}
break;
case "-u" : {
int nextIdBeginning = 1;
String fullName;
int sexIndex;
Date date;
for (int i = 1; i < args.length; i++) {
if (args[i].contains("/")) {
StringBuilder stringbuilder = new StringBuilder();
for (int j = nextIdBeginning + 1; j < (i - 1); j++) {
stringbuilder.append(args[j]);
stringbuilder.append(" ");
}
fullName = stringbuilder.toString().trim(); //имя
sexIndex = i - 1; //пол
date = format.parse(args[i]); //дата рождения
int id = Integer.parseInt(args[nextIdBeginning]);
allPeople.get(id).setName(fullName);
if (args[sexIndex].equals("м")) {
allPeople.get(id).setSex(Sex.MALE);
} else if (args[sexIndex].equals("ж")) {
allPeople.get(id).setSex(Sex.FEMALE);
}
allPeople.get(id).setBirthDay(date);
nextIdBeginning = i + 1;
}
}
}
break;
case "-d" : {
for (int i = 1; i < args.length; i++) {
int id = Integer.parseInt(args[i]);
allPeople.get(id).setName(null);
allPeople.get(id).setSex(null);
allPeople.get(id).setBirthDay(null);
}
}
break;
case "-i" : {
for (int i = 1; i < args.length; i++) {
int id = Integer.parseInt(args[i]);
String sex;
if (allPeople.get(id).getSex().toString().equals("MALE")) sex = "м";
else sex = "ж";
System.out.println(allPeople.get(id).getName() + " " + sex + " " + df.format(allPeople.get(id).getBirthDay()));
}
}
break;
}
}
}
}
package com.javarush.test.level17.lesson10.bonus02;
import java.util.Date;
public class Person {
private String name;
private Sex sex;
private Date birthDay;
private Person(String name, Sex sex, Date birthDay) {
this.name = name;
this.sex = sex;
this.birthDay = birthDay;
}
public static Person createMale(String name, Date birthDay){
return new Person(name, Sex.MALE, birthDay);
}
public static Person createFemale(String name, Date birthDay){
return new Person(name, Sex.FEMALE, birthDay);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
}
package com.javarush.test.level17.lesson10.bonus02;
public enum Sex {
MALE,
FEMALE
}
Leave A Comment