diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..0cbf9cd --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..a153cdf --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + FamilyTree + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/familyTree.txt b/familyTree.txt new file mode 100644 index 0000000..5f04365 Binary files /dev/null and b/familyTree.txt differ diff --git a/src/ru/GeekBrains/Voronyuk00/Family/App.java b/src/ru/GeekBrains/Voronyuk00/Family/App.java new file mode 100644 index 0000000..a2cccb0 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/App.java @@ -0,0 +1,73 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.io.IOException; + +import ru.GeekBrains.Voronyuk00.Family.mvp.ConsoleUI; +import ru.GeekBrains.Voronyuk00.Family.mvp.View; + +public class App { + + public static void main(String[] args) throws IOException, ClassNotFoundException { + // TODO Auto-generated method stub + Human person1 = new Human("Анна", "Воронюк",1971,7,29,Gender.female); + Human person2 = new Human("Евгений","Воронюк",1967,5,9,Gender.male); + Human person3 = new Human("Алексей","Воронюк",2000,4,12,Gender.male); + Human person4 = new Human("Марина", "Воронюк",2000,10,5,Gender.female); + Human person5 = new Human("Галина","Агафонова", 1940,8,14,2017,9,11,Gender.female); + + + // Создание семейного дерева + FamilyTree familyList = new FamilyTree<>(); + familyList.addElement(person1); + familyList.addElement(person2); + familyList.addElement(person3); + familyList.addElement(person4); + familyList.addElement(person5); + + + person1.addChild(person3); + person1.addChild(person4); + person2.addChild(person3); + person2.addChild(person4); + + person3.addFather(person1); + person3.addMother(person2); + person4.addFather(person1); + person4.addMother(person2); + person1.addMother(person5); + +// System.out.println(person5 + " Возраст " + person5.getAge()); + + person5.addChild(person1); + person5.showChildren(); + +// System.out.println(familyList.searchPerson("Алексей","Воронюк")); +// System.out.println(familyList.searchPerson("Иван","Высоцкий")); +// System.out.println(familyList.getById(1)); + Writable fileHandler = new FileHandler(); + fileHandler.saveInFile(familyList); + System.out.println(familyList); + + System.out.println("---------------------"); + +// FamilyTree familyList2 = (FamilyTree) fileHandler.loadFromFile(); +// System.out.println(familyList2); + + // Урок 3 !!!!!!!!!!! +// familyList.sortByName(); +// System.out.println(familyList); +// +// System.out.println("---------------------"); +// +// familyList.sortByBirthDate(); +// System.out.println(familyList); + + // Урок 5 !!!!!!!!!!!!111111111111111111 + + View view = new ConsoleUI(); + view.start(); + + } + + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/ElementComparatorByBirthDate.java b/src/ru/GeekBrains/Voronyuk00/Family/ElementComparatorByBirthDate.java new file mode 100644 index 0000000..27459d2 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/ElementComparatorByBirthDate.java @@ -0,0 +1,13 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.util.Comparator; + +public class ElementComparatorByBirthDate> implements Comparator{ + + @Override + public int compare(E o1, E o2) { + + return o1.getdob().compareTo(o2.getdob()); + } + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/ElementComparatorByName.java b/src/ru/GeekBrains/Voronyuk00/Family/ElementComparatorByName.java new file mode 100644 index 0000000..d3f926b --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/ElementComparatorByName.java @@ -0,0 +1,13 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.util.Comparator; + +public class ElementComparatorByName > implements Comparator { + + @Override + public int compare(E o1, E o2) { + // TODO Auto-generated method stub + return o1.getName().compareTo(o2.getName()); + } + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/FamilyItem.java b/src/ru/GeekBrains/Voronyuk00/Family/FamilyItem.java new file mode 100644 index 0000000..eca10df --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/FamilyItem.java @@ -0,0 +1,28 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.io.Serializable; +import java.time.LocalDate; + +public interface FamilyItem extends Serializable { + + public String getName(); + public String getSurname(); + //// + public void addMother(E h); + public void addFather(E h); + ////// + public E showMother(); + public E showFather(); + ///// + public LocalDate getdob(); + /// + public String showChildren(); + //// + public void setId(int id); + public int getId(); + public void setSpouse(E h); + public E getSpouse(); + + + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/FamilyTree.java b/src/ru/GeekBrains/Voronyuk00/Family/FamilyTree.java new file mode 100644 index 0000000..1f28d25 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/FamilyTree.java @@ -0,0 +1,113 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +/** + * Класс для создания семейного дерева + */ +public class FamilyTree> implements Serializable, Iterable{ + + private List familyList; + private int Id; + /** + * Конструктор для создания семейного дерева + */ + public FamilyTree(){ + familyList = new ArrayList<>(); + } + + public void addElement(T h) { + if(!familyList.contains(h)) { + familyList.add(h); + h.setId(Id++); + } + + } + + public void setWidding(int id1, int id2) { + + if(checkId(id1) && checkId(id2)) { + if(getById(id1).getSpouse() == null && getById(id2).getSpouse() == null) { + getById(id1).setSpouse(getById(id2)); + getById(id2).setSpouse(getById(id2)); + } + }else { + return; + } + } + + public List showFamilyList(){ + return familyList; + } + + /** + * + * @param name имя человека + * @param surname фамилия человека + * @return информация о человеке + */ + public T searchElement(String name, String surname) { + for(T h : familyList) { + if(h.getName().equalsIgnoreCase(name) && h.getSurname().equalsIgnoreCase(surname)) { + return h; + } + } + return null; + + } + + public T getById(int id) { + for(T h : familyList) { + if(h.getId() == id) { + return h; + } + } + return null; + } + + private boolean checkId(int id) { + return id>= 0 && id < Id; + } + + public boolean equals(Object obj) { + // TODO Auto-generated method stub + if(obj == this) { + return true; + } + if(!((T)obj instanceof T)) { + return false; + } + T human = (T) obj; + return human.getId() != Id; + } + + + public String toString() { + StringBuilder str = new StringBuilder(); + for(T h : familyList) { + str.append(h); + str.append("\n"); + } + return str.toString(); + + } + + @Override + public Iterator iterator() { + // TODO Auto-generated method stub + return new FamilyTreeIterator<>(familyList); + } + + public void sortByName() { + Collections.sort(familyList, new ElementComparatorByName<>()); + } + + public void sortByBirthDate() { + Collections.sort(familyList ,new ElementComparatorByBirthDate<>()); + } + + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/FamilyTreeIterator.java b/src/ru/GeekBrains/Voronyuk00/Family/FamilyTreeIterator.java new file mode 100644 index 0000000..8dc7fd7 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/FamilyTreeIterator.java @@ -0,0 +1,26 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.util.Iterator; +import java.util.List; + +public class FamilyTreeIterator implements Iterator{ + + private int familyId; + private List familyList; + + public FamilyTreeIterator(List familyList) { + this.familyList = familyList; + } + @Override + public boolean hasNext() { + return familyList.size() > familyId; + } + + @Override + public E next() { + // TODO Auto-generated method stub + return familyList.get(familyId++); + } + + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/FileHandler.java b/src/ru/GeekBrains/Voronyuk00/Family/FileHandler.java new file mode 100644 index 0000000..6ffa656 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/FileHandler.java @@ -0,0 +1,35 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.List; + +public class FileHandler implements Writable{ + + /* + * Метод для сохранения в файл; + */ + @Override + public void saveInFile(Serializable serializable) throws IOException { + ObjectOutputStream objectOutputStream = new ObjectOutputStream( + new FileOutputStream("familyTree.txt")); + objectOutputStream.writeObject(serializable); + objectOutputStream.close(); + } + + @Override + public Object loadFromFile() throws IOException, ClassNotFoundException { + ObjectInputStream objectInputStream = new ObjectInputStream( + new FileInputStream("familyTree.txt")); + Object obj = objectInputStream.readObject(); + objectInputStream.close(); + return obj; + + } + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/Gender.java b/src/ru/GeekBrains/Voronyuk00/Family/Gender.java new file mode 100644 index 0000000..f1aafdb --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/Gender.java @@ -0,0 +1,5 @@ +package ru.GeekBrains.Voronyuk00.Family; + +public enum Gender { + male,female; +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/Human.java b/src/ru/GeekBrains/Voronyuk00/Family/Human.java new file mode 100644 index 0000000..79552ed --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/Human.java @@ -0,0 +1,198 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.Period; +import java.util.ArrayList; +import java.util.List; +/** + * Класс для создания человека + */ +public class Human implements Serializable,FamilyItem, Comparable{ + + private int id; + private String name; + private String surname; + private LocalDate dob, dod; + private Gender gender; + private List children; + private Human father, mother; + private Human spouse; + /** + * Конструктор для создания человека + * @param name - имя человека + * @param surname - фамилия человека + * @param year - год рождения человека + * @param month - месяц рождения человека + * @param day - день рождения человека + * @param gender - пол человека + */ + public Human(String name, String surname, int year, int month,int day,Gender gender){ + this.name = name; + this.surname = surname; + this.dob = LocalDate.of(year, month, day); + this.gender = gender; + children = new ArrayList<>(); + this.id = -1; + } + /** + * Конструктор для создания человека + * @param name - имя человека + * @param surname - фамилия человека + * @param year - год рождения человека + * @param month - месяц рождения человека + * @param day - день рождения человека + @param year2 - год смерти человека + * @param month2 - месяц смерти человека + * @param day2 - день смерти человека + * @param gender - пол человека + */ + public Human(String name, String surname, int year, int month,int day,int year2, int month2, int day2,Gender gender){ + this(name,surname, year, month,day,gender); + this.dod = LocalDate.of(year2, month2, day2); + } + + /** + * Метод для получения имени + * @return имя + */ + public String getName() { + return this.name; + } + /** + * Метод для получения фамилии + * @return фамилия + */ + public String getSurname() { + return this.surname; + } + + /** + * Добавление матери человека + * @param h - мать человека + */ + public void addMother(Human h) { + if(mother == null) { + this.mother = h; + } + } + /** + * Добавление отца человека + * @param h - отец человека + */ + public void addFather(Human h) { + if(father == null) { + this.father = h; + } + } + /** + * Метод для вывода матери человека + * @return мать человека + */ + public Human showMother() { + return this.mother; + } + /** + * Метод для вывода отца человека + * @return отец человека + */ + public Human showFather() { + return this.mother; + } + + @Override + public LocalDate getdob() { + return this.dob; + } + /** + * Метод для получения возраста + * @return возраст + */ + public int getAge() { + if(dod == null) { + return Period.between(this.dob, LocalDate.now()).getYears(); + } + else { + return Period.between(dob, dod).getYears(); + } + } + + public Gender getGender() { + return this.gender; + } + + /** + * Метод для добавления ребенка + * @param child - добавляемый ребёнок + */ + public boolean addChild(Human child) { + if(!children.contains(child)) { + children.add(child); + return true; + } + return false; + + } + /** + * Метод для демонстрации детей + */ + public String showChildren() { + StringBuilder txt = new StringBuilder(); + boolean hasChildren = false; + + for(Human h : children) { + txt.append(h); + txt.append("\n"); + hasChildren = true; + } + + if(hasChildren) { + return txt.toString(); + } + else return null ; + + } + @Override + public String toString() { + return "Id: " + this.id +" Имя = " + name + ", фамилия = " + surname + ", дата рождения = " + dob + ", пол = " + gender ; + + } + + public void setId(int id) { + this.id = id; + } + @Override + public boolean equals(Object obj) { + // TODO Auto-generated method stub + if(obj == this) { + return true; + } + if(!(obj instanceof Human)) { + return false; + } + Human human = (Human) obj; + return human.getId() == getId(); + } + + public int getId() { + return this.id; + } + + public void setSpouse(Human h) { + if(spouse == null) { + this.spouse = h; + } + } + + public Human getSpouse() { + return this.spouse; + } + @Override + public int compareTo(Human o) { + // TODO Auto-generated method stub + return this.name.compareTo(o.getName()); + } + + + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/Writable.java b/src/ru/GeekBrains/Voronyuk00/Family/Writable.java new file mode 100644 index 0000000..136d020 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/Writable.java @@ -0,0 +1,10 @@ +package ru.GeekBrains.Voronyuk00.Family; + +import java.io.IOException; +import java.io.Serializable; + + +public interface Writable { + void saveInFile(Serializable serialazable) throws IOException; + Object loadFromFile() throws IOException, ClassNotFoundException; +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/familyTree.txt b/src/ru/GeekBrains/Voronyuk00/Family/familyTree.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/AddPerson.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/AddPerson.java new file mode 100644 index 0000000..bfba420 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/AddPerson.java @@ -0,0 +1,18 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp.Commands; + +import ru.GeekBrains.Voronyuk00.Family.mvp.ConsoleUI; + +public class AddPerson extends Commands { + + public AddPerson(ConsoleUI consoleUI) { + super("Добавить члена семьи",consoleUI); + } + + + @Override + public void execute() { + // TODO Auto-generated method stub + getConsoleUI().addPerson(); + } + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/Commands.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/Commands.java new file mode 100644 index 0000000..6a732b8 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/Commands.java @@ -0,0 +1,26 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp.Commands; + +import ru.GeekBrains.Voronyuk00.Family.mvp.ConsoleUI; +/* + * Класс для создания команд + */ +public abstract class Commands { + + private String description; + private ConsoleUI consoleUI; + + public Commands(String description, ConsoleUI consoleUI) { + this.description = description; + this.consoleUI = consoleUI; + } + + public String getDescription() { + return this.description; + } + + ConsoleUI getConsoleUI() { + return consoleUI; + } + + public abstract void execute(); +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/Exit.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/Exit.java new file mode 100644 index 0000000..87aab6b --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/Exit.java @@ -0,0 +1,16 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp.Commands; + +import ru.GeekBrains.Voronyuk00.Family.mvp.ConsoleUI; + +public class Exit extends Commands{ + + public Exit(ConsoleUI consoleUI) { + super("Выход из программы", consoleUI); + } + + @Override + public void execute() { + // TODO Auto-generated method stub + getConsoleUI().exitProgram(); + } +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/GetFamilyList.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/GetFamilyList.java new file mode 100644 index 0000000..c414eea --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/GetFamilyList.java @@ -0,0 +1,16 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp.Commands; + +import ru.GeekBrains.Voronyuk00.Family.mvp.ConsoleUI; + +public class GetFamilyList extends Commands{ + + public GetFamilyList(ConsoleUI consoleUI) { + super("Вывести список всех членов семьи", consoleUI); + } + + @Override + public void execute() { + getConsoleUI().getFamilyList(); + } + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/MainMenu.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/MainMenu.java new file mode 100644 index 0000000..4b2c876 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/MainMenu.java @@ -0,0 +1,33 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp.Commands; + +import java.util.ArrayList; +import java.util.List; + +import ru.GeekBrains.Voronyuk00.Family.mvp.ConsoleUI; + +public class MainMenu { + List commands; + + public MainMenu(ConsoleUI consoleUI) { + commands = new ArrayList<>(); + commands.add(new AddPerson(consoleUI)); + commands.add(new GetFamilyList(consoleUI)); + commands.add(new SortByName(consoleUI)); + commands.add(new SortByBirthDate(consoleUI)); + commands.add(new Exit(consoleUI)); + } + + public String menu() { + StringBuilder stringBuilder = new StringBuilder(); + for(int i = 0;i < commands.size();i++) { + stringBuilder.append(i + 1 + ". "); + stringBuilder.append(commands.get(i).getDescription()); + stringBuilder.append("\n"); + } + return stringBuilder.toString(); + } + + public void execute(int choice) { + commands.get(choice-1).execute(); + } +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/SortByBirthDate.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/SortByBirthDate.java new file mode 100644 index 0000000..70ec692 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/SortByBirthDate.java @@ -0,0 +1,16 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp.Commands; + +import ru.GeekBrains.Voronyuk00.Family.mvp.ConsoleUI; + +public class SortByBirthDate extends Commands{ + + public SortByBirthDate(ConsoleUI consoleUI) { + super("Отсортировать по дате рождения", consoleUI); + } + + @Override + public void execute() { + getConsoleUI().sortByBirthDate(); + } + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/SortByName.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/SortByName.java new file mode 100644 index 0000000..184d1a4 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Commands/SortByName.java @@ -0,0 +1,15 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp.Commands; + +import ru.GeekBrains.Voronyuk00.Family.mvp.ConsoleUI; + +public class SortByName extends Commands { + + public SortByName(ConsoleUI consoleUI) { + super("Отсортировать по имени", consoleUI); + } + + @Override + public void execute() { + getConsoleUI().sortByName(); + } +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/ConsoleUI.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/ConsoleUI.java new file mode 100644 index 0000000..5881d49 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/ConsoleUI.java @@ -0,0 +1,93 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp; + +import java.util.Scanner; +import ru.GeekBrains.Voronyuk00.Family.Gender; +import ru.GeekBrains.Voronyuk00.Family.mvp.Commands.MainMenu; +/** + * Класс для взаимодействия с пользователем + */ +public class ConsoleUI implements View{ + + private Presenter presenter; + private Scanner scan; + private boolean work; + private MainMenu mainMenu; + + public ConsoleUI() { + this.presenter = new Presenter(this); + this.scan = new Scanner(System.in); + this.work = true; + this.mainMenu = new MainMenu(this); + } + + @Override + public void start() { + System.out.println("Добро пожаловать в программу!!!"); + while(work) { + System.out.print(mainMenu.menu()); + int choice = Integer.parseInt(scan.nextLine()); + mainMenu.execute(choice); + } + } + + + + /** + * Метод добавления члена семьи + */ + public void addPerson() { + // TODO Auto-generated method stub + System.out.println("Ввидите имя: "); + String name = scan.nextLine(); + System.out.println("Ввидите фамилию: "); + String surname = scan.nextLine(); + System.out.println("Ввидите дату рождения формата гггг.м.д: "); + String dob = scan.nextLine(); + System.out.println("Ввидите дату смерти формата гггг.м.д(если нет нажмите Enter): "); + String dod = scan.nextLine(); + System.out.println("Введите пол: female, male"); + String genderStr = scan.nextLine().toLowerCase(); + + if(dod != null) { + if(genderStr.equals("male")) { + presenter.addPerson1(name, surname, dob, dod, Gender.male); + } + else if(genderStr.equals("female")) { + presenter.addPerson1(name, surname, dob, dod, Gender.female); + } + else { + System.out.println("Неправильный пол"); + } + } + else { + presenter.addPerson2(name, surname, dob, Gender.male); + } + + } + /* + * Метод для вывода списка студентов + */ + public void getFamilyList() { + // TODO Auto-generated method stub + presenter.getFamilyList(); + } + + public void sortByName() { + presenter.sortByName(); + } + + public void sortByBirthDate() { + presenter.sortByBirthDate(); + } + + @Override public void printAnswer(String str) { + System.out.println(str); + } + + public void exitProgram() { + // TODO Auto-generated method stub + work = false; + System.out.println("Программа завершена"); + } + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Presenter.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Presenter.java new file mode 100644 index 0000000..ba9ab88 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Presenter.java @@ -0,0 +1,58 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp; +import ru.GeekBrains.Voronyuk00.Family.Gender; + +public class Presenter { + + private View view; + private Service service; + + public Presenter(View view) { + this.view = view; + this.service = new Service(); + } + + public void addPerson1(String name, String surname, String dob, String dod,Gender gender) { + // TODO Auto-generated method stub + String[] dobElements = dob.split("\\."); + String[] dodElements = dob.split("\\."); + + int year1 = Integer.parseInt(dobElements[0]); + int month1 = Integer.parseInt(dobElements[1]); + int day1 = Integer.parseInt(dobElements[2]); + int year2 = Integer.parseInt(dodElements[0]); + int month2 = Integer.parseInt(dodElements[1]); + int day2 = Integer.parseInt(dodElements[2]); + + service.addPerson1(name, surname, year1, month1,day1,year2,month2,day2,gender); + getFamilyList(); + } + + public void addPerson2(String name, String surname, String dob,Gender gender) { + // TODO Auto-generated method stub + String[] dobElements = dob.split("\\."); + + int year1 = Integer.parseInt(dobElements[0]); + int month1 = Integer.parseInt(dobElements[1]); + int day1 = Integer.parseInt(dobElements[2]); + + service.addPerson2(name, surname, year1, month1,day1,gender); + getFamilyList(); + } + + public void getFamilyList() { + + String familyList = service.getFamilyList(); + view.printAnswer(familyList); + + } + + public void sortByName() { + service.sortByName(); + getFamilyList(); + } + + public void sortByBirthDate() { + service.sortByBirthDate(); + getFamilyList(); + } +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/Service.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Service.java new file mode 100644 index 0000000..ca835b0 --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/Service.java @@ -0,0 +1,47 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp; +import ru.GeekBrains.Voronyuk00.Family.Human; + +import java.time.LocalDate; + +import ru.GeekBrains.Voronyuk00.Family.FamilyTree; +import ru.GeekBrains.Voronyuk00.Family.Gender; + +public class Service { + + private FamilyTree familyList; + + public Service() { + familyList = new FamilyTree<>(); + } + + public void addPerson1(String name, String surname, int year, int month,int day,int year2, int month2, int day2,Gender gender) { + Human human = new Human(name, surname, year, month, day,year2, month2,day2, gender); + familyList.addElement(human); + } + + public void addPerson2(String name, String surname, int year, int month,int day,Gender gender) { + Human human = new Human(name, surname, year, month, day, gender); + familyList.addElement(human); + } + + public String getFamilyList() { + return familyList.toString(); + } + + public void sortByName() { + familyList.sortByName(); + } + + public void sortByBirthDate() { + familyList.sortByBirthDate(); + } + + public boolean addMother(int child,int mother) { + if(familyList.showFamilyList().get(child).showMother() == null) { + familyList.showFamilyList().get(child).addMother(familyList.showFamilyList().get(mother)); + return true; + } + return false; + } + +} diff --git a/src/ru/GeekBrains/Voronyuk00/Family/mvp/View.java b/src/ru/GeekBrains/Voronyuk00/Family/mvp/View.java new file mode 100644 index 0000000..9a49fac --- /dev/null +++ b/src/ru/GeekBrains/Voronyuk00/Family/mvp/View.java @@ -0,0 +1,6 @@ +package ru.GeekBrains.Voronyuk00.Family.mvp; + +public interface View { + void start(); + void printAnswer(String str); +} diff --git a/src/ru/gb/vending_machine/Main.java b/src/ru/gb/vending_machine/Main.java deleted file mode 100644 index abfd7ac..0000000 --- a/src/ru/gb/vending_machine/Main.java +++ /dev/null @@ -1,19 +0,0 @@ -package ru.gb.vending_machine; - -import ru.gb.vending_machine.products.Bottle; -import ru.gb.vending_machine.products.Product; -import ru.gb.vending_machine.vending.VendingMachine; - -public class Main { - public static void main(String[] args) { - VendingMachine vendingMachine = new VendingMachine(123); - - Product product1 = new Bottle("coca-cola", 150, 1.5); - Product product2 = new Product("milko", 100); - - vendingMachine.addProduct(product1); - vendingMachine.addProduct(product2); - - System.out.println(vendingMachine.getProductsInfo()); - } -} diff --git a/src/ru/gb/vending_machine/products/Bottle.java b/src/ru/gb/vending_machine/products/Bottle.java deleted file mode 100644 index 6c657de..0000000 --- a/src/ru/gb/vending_machine/products/Bottle.java +++ /dev/null @@ -1,19 +0,0 @@ -package ru.gb.vending_machine.products; - -public class Bottle extends Product { - private double volume; - - public Bottle(String name, double price, double volume) { - super(name, price); - this.volume = volume; - } - - public double getVolume() { - return volume; - } - - @Override - public String toString() { - return super.toString() + ", volume: " + volume + "л."; - } -} diff --git a/src/ru/gb/vending_machine/products/Product.java b/src/ru/gb/vending_machine/products/Product.java deleted file mode 100644 index 2fbd604..0000000 --- a/src/ru/gb/vending_machine/products/Product.java +++ /dev/null @@ -1,37 +0,0 @@ -package ru.gb.vending_machine.products; - -public class Product { - private int id; - private String name; - private double price; - - public Product(String name, double price) { - this.name = name; - this.price = price; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public double getPrice() { - return price; - } - - public void setPrice(double price) { - this.price = price; - } - - @Override - public String toString() { - return "id: " + id + ", name: " + name + ", price: " + price + "р."; - } -} diff --git a/src/ru/gb/vending_machine/vending/VendingMachine.java b/src/ru/gb/vending_machine/vending/VendingMachine.java deleted file mode 100644 index 01a63ca..0000000 --- a/src/ru/gb/vending_machine/vending/VendingMachine.java +++ /dev/null @@ -1,32 +0,0 @@ -package ru.gb.vending_machine.vending; - -import ru.gb.vending_machine.products.Product; - -import java.util.ArrayList; -import java.util.List; - -public class VendingMachine { - private int id; - private int productId; - private List productList; - - public VendingMachine(int id) { - this.id = id; - productList = new ArrayList<>(); - } - - public void addProduct(Product product){ - product.setId(productId++); - productList.add(product); - } - - public String getProductsInfo(){ - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Список продуктов:\n"); - for (Product product: productList){ - stringBuilder.append(product); - stringBuilder.append("\n"); - } - return stringBuilder.toString(); - } -}