Help is appreciated
package com.codegym.task.task17.task1711;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/*
CRUD 2
*/
public class Solution {
public static volatile List<Person> allPeople = new ArrayList<>();
public static SimpleDateFormat inputFormat = new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH);
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 {
List<String> newPeople = new ArrayList(Arrays.asList(args));
switch (args[0]) {
case "-c": //Is there another way without creating a list and deleting elements ?
newPeople.remove(newPeople.get(0));
while (!(newPeople.size() == 0)) {
Date bd = inputFormat.parse(newPeople.get(2));
addPeople(newPeople.get(0), newPeople.get(1), bd);
// How to delete the first 3 elements from the list at once
newPeople.remove(newPeople.get(0));
newPeople.remove(newPeople.get(0));
newPeople.remove(newPeople.get(0));
System.out.print((allPeople.size() - 1) + " ");
}
break;
case "-u":
newPeople.remove(newPeople.get(0));
while (!(newPeople.size() == 0)) {
Date bd = inputFormat.parse(newPeople.get(3));
updatePeople(Integer.parseInt(newPeople.get(0)), newPeople.get(1), newPeople.get(2), bd);
// Same problem, ugly code...
newPeople.remove(newPeople.get(0));
newPeople.remove(newPeople.get(0));
newPeople.remove(newPeople.get(0));
newPeople.remove(newPeople.get(0));
}
break;
case "-d":
newPeople.remove(newPeople.get(0));
for (String id : newPeople) {
deletePeople(Integer.parseInt(id));
}
break;
case "-i":
newPeople.remove(newPeople.get(0));
for (String id : newPeople) {
displayPeople(Integer.parseInt(id));
}
break;
}
}
public static void addPeople(String name, String sex, Date bd) {
if (sex.equals("m")) allPeople.add(Person.createMale(name, bd));
else allPeople.add(Person.createFemale(name, bd));
}
public static void updatePeople(int id, String name, String sex, Date bd) {
Sex s = sex.equals("m") ? Sex.MALE : Sex.FEMALE;
// if I do Person person = allPeople.get(id) and then change the fields with person.setName etc..
// person object will be updated but not the person object in the allPeople list.. How to ? (ugly code)
allPeople.get(id).setName(name);
allPeople.get(id).setSex(s);
allPeople.get(id).setBirthDate(bd);
}
public static void deletePeople(int id) {
allPeople.get(id).setName(null);
allPeople.get(id).setSex(null);
allPeople.get(id).setBirthDate(null);
}
public static void displayPeople(int id) {
SimpleDateFormat outputFormat = new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH);
String date = outputFormat.format(allPeople.get(id).getBirthDate());
String s = allPeople.get(id).getSex().equals(Sex.MALE) ? "m" : "f";
System.out.println(allPeople.get(id).getName() + " " + s + " " + date);
}
}