Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Homework finish #1190

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import view.ConsoleUI;
import view.View;
import java.io.IOException;

public class Main {
final static String fileName = "src/file.txt";

public static void main(String[] args) throws IOException {
View view = new ConsoleUI();
view.start();
}
}
2 changes: 0 additions & 2 deletions src/Test.java

This file was deleted.

Empty file added src/file.txt
Empty file.
34 changes: 34 additions & 0 deletions src/model/FileHandler/FileHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package model.FileHandler;

import java.io.*;

public class FileHandler implements Writer{
private String fileName;

public void setFileName(String fileName) {
this.fileName = fileName;
}

public boolean saveFile(Serializable serializable) {
try {
ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(fileName));
output.writeObject(serializable);
output.close();
return true;
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}

public Object openFile() {
try {
ObjectInputStream input = new ObjectInputStream(new FileInputStream(fileName));
return input.readObject();
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}

}
9 changes: 9 additions & 0 deletions src/model/FileHandler/Writer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package model.FileHandler;

import java.io.Serializable;

public interface Writer {
boolean saveFile(Serializable serializable);
Object openFile();
void setFileName(String fileName);
}
173 changes: 173 additions & 0 deletions src/model/HumanBuilder/HumanBuilder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
package model.HumanBuilder;

import model.familyTree.FamilyTreeItem;
import model.human.Gender;
import model.human.Human;

import java.time.LocalDate;
import java.util.List;


public class HumanBuilder {
private long humID;
private Human human;
private String lastName;
private String firstname;
private String patronymic;
private Gender gender;
private LocalDate dayBirth;
private LocalDate dayDeath;
private Human father;
private Human mother;
private List<Human> children;
private String placeBorn;


public HumanBuilder() {

}

private void createHuman() {
human = new Human();
}

private void createLastName() {

human.setLastName(lastName);
}

private void createFirstName() {

human.setFirstname(firstname);
}

private void createPatronymic() {
human.setPatronymic(patronymic);
}

private void createGender() {
human.setGender(gender);
}

private void createDayBirth() {
try {
human.setDayBirth(dayBirth);
} catch (Exception ex) {
human.setDayBirth(null);
}
}

private void createDayDeath() {
try {
human.setDayDeath(dayDeath);
} catch (Exception ex) {
human.setDayDeath(null);
}
}

private void createFather() {
human.setFather(father);
}

private void createMother() {
human.setMother(mother);
}

private void createChildren() {
human.setChildren(children);
}

private void createPlaceBorn() {
human.setPlaceBorn(placeBorn);
}

public HumanBuilder setLastName(String lastName) {
this.lastName = lastName;
return this;
}

public HumanBuilder setFirstname(String firstname) {
this.firstname = firstname;
return this;
}

public HumanBuilder setPatronymic(String patronymic) {
this.patronymic = patronymic;
return this;
}

public HumanBuilder setGender(Gender gender) {
this.gender = gender;
return this;
}

public HumanBuilder setDayBirth(LocalDate dayBirth) {
this.dayBirth = dayBirth;
return this;
}

public HumanBuilder setDayDeath(LocalDate dayDeath) {
this.dayDeath = dayDeath;
return this;
}

public HumanBuilder setFather(Human father) {
this.father = father;
return this;
}

public HumanBuilder setMother(Human mother) {
this.mother = mother;
return this;
}

public HumanBuilder setChildren(List<Human> children) {
this.children = children;
return this;
}

public HumanBuilder setPlaceBorn(String placeBorn) {
this.placeBorn = placeBorn;
return this;
}

private void setHumID(Human human) {
human.setID(humID++);

}

public void setMaxID(long maxID) {
this.humID = maxID+1;
}

private void clearData() {
lastName = null;
patronymic = null;
gender = null;
dayBirth = null;
dayDeath = null;
father = null;
mother = null;
children = null;
placeBorn = null;
}


public Human build() {
createHuman();
createLastName();
createFirstName();
createPatronymic();
createGender();
createDayBirth();
createDayDeath();
createFather();
createMother();
createChildren();
createPlaceBorn();
setHumID(human);
clearData();
return human;
}

}
99 changes: 99 additions & 0 deletions src/model/familyTree/FamilyTree.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package model.familyTree;

import model.human.HumanComporatorByAge;
import model.human.HumanComporatorByID;
import model.human.HumanComporatorByName;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class FamilyTree<E extends FamilyTreeItem<E>> implements Serializable, Iterable<E> {
private List<E> familyTree = new ArrayList<>();

public boolean addHuman(E human) {
if (human == null) {
return false;
}
if (!familyTree.contains(human)) {
familyTree.add(human);
addToParent(human);
addToChildren(human);
return true;
}
return false;

}

@Override
public String toString() {

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Список двера семьи:\n");
for (E human : familyTree) {
stringBuilder.append(human);
stringBuilder.append("\n");

}
return stringBuilder.toString();

}

public void addToParent(E human) {
for (E parent : human.getParents()) {
parent.addChild(human);
}
}

public void addToChildren(E human) {
if (human.getChildren() != null) {
for (E child : human.getChildren()) {
child.addParent(human);
}
}
}

public E getHuman(long id) {
if (familyTree != null) {
for (E human : familyTree) {
if (human.getID() == id) {
return human;
}
}
}
return null;
}

public void sortByName() {
Collections.sort(familyTree, new HumanComporatorByName<>());
}

public long findMaxID() {
long maxID = 0;
for (E e : familyTree) {
if (maxID < e.getID()) {
maxID = e.getID();
}
}
return maxID;
}

public void sortByAge() {
Collections.sort(familyTree, new HumanComporatorByAge<>());
}

public void sortByID() {
Collections.sort(familyTree, new HumanComporatorByID<>());
}

@Override
public Iterator<E> iterator() {
return new HumanIterator<>(familyTree);
}


}


39 changes: 39 additions & 0 deletions src/model/familyTree/FamilyTreeItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package model.familyTree;

import model.human.Gender;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

public interface FamilyTreeItem<E> extends Serializable {
String getLastName();
String getFirstname();
String getPatronymic();
Gender getGender();
LocalDate getDayBirth();
LocalDate getDayDeath();
E getFather();
E getMother();
List<E> getChildren();

String getPlaceBorn();
long getID();
int getAge();
String getFIO(E human);
List<E> getParents();
void addChild(E human);
void addParent(E human);

void setID(long id);
void setLastName(String lastName);
void setFirstname(String firstname);
void setPatronymic(String patronymic);
void setGender(Gender gender);
void setDayBirth(LocalDate dayBirth);
void setDayDeath(LocalDate dayDeath);
void setFather(E father);
void setMother(E mother);
void setChildren(List<E> children);
void setPlaceBorn(String placeBorn);
}
Loading