From 7a0e673d6eb75207ac1951bbc634403b5b4c48bd Mon Sep 17 00:00:00 2001 From: Iryna Brezovskaya Date: Mon, 29 Jul 2024 15:41:57 +0300 Subject: [PATCH 1/9] main.java --- src/main.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/main.java diff --git a/src/main.java b/src/main.java new file mode 100644 index 0000000000..930a6a7d24 --- /dev/null +++ b/src/main.java @@ -0,0 +1,5 @@ +public class main { + public static void main(String[] args) { + + } +} From 4062a015cabea492c32b7e0183f5a9b97a7a4a8f Mon Sep 17 00:00:00 2001 From: Iryna Brezovskaya Date: Tue, 20 Aug 2024 16:51:53 +0300 Subject: [PATCH 2/9] main.java --- src/Main.java | 53 +++++ src/Test.java | 2 - src/family_tree/Gender.java | 6 + src/family_tree/Human.java | 202 ++++++++++++++++++++ src/family_tree/family_tree/FamilyTree.java | 73 +++++++ src/family_tree/writer/FileHandler.java | 47 +++++ src/family_tree/writer/Writer.java | 13 ++ src/main.java | 5 - 8 files changed, 394 insertions(+), 7 deletions(-) create mode 100644 src/Main.java delete mode 100644 src/Test.java create mode 100644 src/family_tree/Gender.java create mode 100644 src/family_tree/Human.java create mode 100644 src/family_tree/family_tree/FamilyTree.java create mode 100644 src/family_tree/writer/FileHandler.java create mode 100644 src/family_tree/writer/Writer.java delete mode 100644 src/main.java diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000000..9a86423c4d --- /dev/null +++ b/src/Main.java @@ -0,0 +1,53 @@ +import family_tree.family_tree.FamilyTree; +import family_tree.Gender; +import family_tree.Human; + +import java.io.IOException; +import java.time.LocalDate; +import family_tree.writer.FileHandler; + +public class Main { +final static String filePath = "src/family_tree/writer/tree.txt"; + + public static void main(String[] args) throws IOException { +// FamilyTree tree = load(); + FamilyTree tree = testTree(); + System.out.println(tree); + save(tree); + + } + + + + private static FamilyTree testTree() { + FamilyTree tree = new FamilyTree(); + + Human grisha = new Human("Гриша", Gender.Male, LocalDate.of(1945, 12, 12), null, null, null, null); + Human masha = new Human("Мария", Gender.Female, LocalDate.of(1951, 1, 2), null, null, null, null); + + tree.add(grisha); + tree.add(masha); + Human gena = new Human("Геннадий",Gender.Male, LocalDate.of(1971, 4, 29),null,null, masha, grisha); + tree.add(gena); + Human sveta = new Human("Светлана", Gender.Female, LocalDate.of(1976, 2, 17), null, null, masha, grisha); + tree.add(sveta); + + return tree; + } + + + + private static void save(FamilyTree familyTree) { + FileHandler fileHandler = new FileHandler(filePath); + + fileHandler.save(familyTree); + + } + + private static FamilyTree load() { + FileHandler fileHandler = new FileHandler(filePath); + + return (FamilyTree) fileHandler.read(); + + } +} \ No newline at end of file diff --git a/src/Test.java b/src/Test.java deleted file mode 100644 index a06540728b..0000000000 --- a/src/Test.java +++ /dev/null @@ -1,2 +0,0 @@ -public class Test { -} diff --git a/src/family_tree/Gender.java b/src/family_tree/Gender.java new file mode 100644 index 0000000000..74cb058047 --- /dev/null +++ b/src/family_tree/Gender.java @@ -0,0 +1,6 @@ +package family_tree; + +public enum Gender { + Male, Female; + +} \ No newline at end of file diff --git a/src/family_tree/Human.java b/src/family_tree/Human.java new file mode 100644 index 0000000000..be478f17f6 --- /dev/null +++ b/src/family_tree/Human.java @@ -0,0 +1,202 @@ +package family_tree; + +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 { + + + private long id; + private String name; + private Gender gender; + private LocalDate birthDate; + private LocalDate deathDate; + private List parents; + private List children; + private Human mother; + private Human father; + + public Human(String name, Gender gender, LocalDate birthDate, LocalDate deathDate, + List children, Human mother, Human father) { + id = -1; + this.name = name; + this.gender = gender; + this.birthDate = birthDate; + this.deathDate = deathDate; + this.parents = parents; + this.children = new ArrayList<>(); + this.mother = mother; + this.father = father; + } + public long getId() { + return id; + } + + public void setGender(Gender gender) { + this.gender = gender; + } + + public void setId(long id) { + this.id = id; + } + + + public Gender getGender() { + return gender; + } + + public boolean addChild(Human child) { + if (!children.contains(child)) { + children.add(child); + return true; + } + return false; + } + + public boolean addParent(Human parent) { + if (parent.getGender().equals(Gender.Female)) { + setMother(parent); + } + if (parent.getGender().equals(Gender.Male)) { + setFather(parent); + } + return true; + } + + public List getParents() { + List list = new ArrayList<>(2); + if (father != null) { + list.add(father); + } + if (mother != null) { + list.add(mother); + } + return list; + } + + + public LocalDate getBirthDate() { + return birthDate; + } + + public LocalDate getDeathDate() { + return deathDate; + } + + + public List getChildren() { + return children; + } + + + public Human getMother() { + return mother; + } + + public Human getFather() { + return father; + } + + public void setFather(Human father) { + this.father = father; + } + + public void setMother(Human mother) { + this.mother = mother; + } + + public void setChildren(List children) { + this.children = children; + } + + + public void setDeathDate(LocalDate deathDate) { + this.deathDate = deathDate; + } + + public void setBirthDate(LocalDate birthDate) { + this.birthDate = birthDate; + } + + + public String getName() { + + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + if (deathDate == null) { + return getPeriod(birthDate, LocalDate.now()); + } else { + return getPeriod(birthDate, deathDate); + } + } + + private int getPeriod(LocalDate birthDate, LocalDate deathDate) { + Period diff = Period.between(birthDate, deathDate); + return diff.getYears(); + } + + public String toString() { + return getInfo(); + } + + public String getInfo() { + StringBuilder sb = new StringBuilder(); + sb.append(" id: ").append(id); + sb.append(" name: ").append(getName()); + sb.append(" gender: ").append(getGender()); + sb.append(" age: ").append(getAge()); + sb.append(" mother: ").append(getMotherInfo()); + sb.append(" father: ").append(getFatherInfo()); + sb.append(" children: ").append(getChildrenInfo()); + + + return sb.toString(); + } + + public String getMotherInfo() { + String res = "mother "; + Human mother = getMother(); + if (mother != null) { + res += mother.getName(); + } else { + res += "null"; + } + return res; + } + + public String getFatherInfo() { + String res = "father "; + Human father = getFather(); + if (father != null) { + res += father.getName(); + } else { + res += "null"; + } + return res; + } + + + public String getChildrenInfo() { + StringBuilder res = new StringBuilder(); + res.append(" "); + if (!children.isEmpty()) { + for (Human child : children) { + res.append(child.getName()); + res.append(" "); + } + } else {res.append("null");} + return res.toString(); + + } + + +} \ No newline at end of file diff --git a/src/family_tree/family_tree/FamilyTree.java b/src/family_tree/family_tree/FamilyTree.java new file mode 100644 index 0000000000..46cc1d42f2 --- /dev/null +++ b/src/family_tree/family_tree/FamilyTree.java @@ -0,0 +1,73 @@ +package family_tree.family_tree; + +import family_tree.Human; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +public class FamilyTree implements Serializable { + private long humansId; + private List humanList; + + public FamilyTree() { + this(new ArrayList<>()); + } + + public FamilyTree(List humanList) { + this.humanList = humanList; + } + + public boolean add(Human human) { + if (human == null) { + return false; + } + if (!humanList.contains(human)) { + humanList.add(human); + human.setId(humansId++); + addToParents(human); + addToChildren(human); + return true; + } + return false; + } + + private void addToParents(Human human) { + for (Human parent : human.getParents()) { + parent.addChild(human); + } + } + + private void addToChildren(Human human) { + if (human.getChildren() == null) { + return; + } + for (Human child : human.getChildren()) { + child.addParent(human); + } + } + + public String toString() { + return getInfo(); + } + + public String getInfo() { + StringBuilder sb = new StringBuilder(); + sb.append("tree:\n"); + sb.append(humanList.size()); + for (Human human : humanList) { + sb.append(human); + sb.append("\n"); + } + return sb.toString(); + } + + +} + + + + + + + diff --git a/src/family_tree/writer/FileHandler.java b/src/family_tree/writer/FileHandler.java new file mode 100644 index 0000000000..1d535c5bd7 --- /dev/null +++ b/src/family_tree/writer/FileHandler.java @@ -0,0 +1,47 @@ +package family_tree.writer; + +import java.io.*; + +public class FileHandler implements Writer { + private String filePath; +public FileHandler(String file){ + filePath = file; +} + + + @Override + public boolean save(Serializable serializable) { + try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(filePath))){ + objectOutputStream.writeObject(serializable); + return true; + }catch (Exception e){ + e.printStackTrace(); + return false; + } +} + + + public Object read() { + try (ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(filePath))){ + + return objectInputStream.readObject(); + + + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + +} + + + + + + + + + + + diff --git a/src/family_tree/writer/Writer.java b/src/family_tree/writer/Writer.java new file mode 100644 index 0000000000..67088c8319 --- /dev/null +++ b/src/family_tree/writer/Writer.java @@ -0,0 +1,13 @@ +package family_tree.writer; + +import java.io.Serializable; + +public interface Writer { + boolean save(Serializable serializable); + + + + + + +} diff --git a/src/main.java b/src/main.java deleted file mode 100644 index 930a6a7d24..0000000000 --- a/src/main.java +++ /dev/null @@ -1,5 +0,0 @@ -public class main { - public static void main(String[] args) { - - } -} From 8dadd47a0c93671005c15aa147b54be13ed21727 Mon Sep 17 00:00:00 2001 From: Iryna Brezovskaya Date: Tue, 20 Aug 2024 16:52:12 +0300 Subject: [PATCH 3/9] main.java --- out/production/homeWork/Main.class | Bin 0 -> 2038 bytes out/production/homeWork/family_tree/Gender.class | Bin 0 -> 1022 bytes out/production/homeWork/family_tree/Human.class | Bin 0 -> 6221 bytes .../family_tree/family_tree/FamilyTree.class | Bin 0 -> 2339 bytes .../family_tree/writer/FileHandler.class | Bin 0 -> 1666 bytes .../homeWork/family_tree/writer/Writer.class | Bin 0 -> 155 bytes .../homeWork/family_tree/writer/tree.txt | Bin 0 -> 805 bytes src/family_tree/writer/tree.txt | Bin 0 -> 805 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 out/production/homeWork/Main.class create mode 100644 out/production/homeWork/family_tree/Gender.class create mode 100644 out/production/homeWork/family_tree/Human.class create mode 100644 out/production/homeWork/family_tree/family_tree/FamilyTree.class create mode 100644 out/production/homeWork/family_tree/writer/FileHandler.class create mode 100644 out/production/homeWork/family_tree/writer/Writer.class create mode 100644 out/production/homeWork/family_tree/writer/tree.txt create mode 100644 src/family_tree/writer/tree.txt diff --git a/out/production/homeWork/Main.class b/out/production/homeWork/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..ce6c2237d23d057fa53db945e4c870049df15d78 GIT binary patch literal 2038 zcma)7Yf~Fl7=BJj*d*PSBwQ?5F1^_10;JY@Yp`NzDM+{|7=)_rk}P4F&8D+iu=SIp ze$b9He&{D>oN@dIh_*x-9Y6bN`9qG+*#wfbj3XJ&*?ph)`keQ?`}aS;{|Vp*HpB3t zO@UuU0PO;iO>J9Co0?Tj&#!Ijc}Jjq%&-jSxGvzlQE1RcHN zEZMp)a50|9u4^U3e0bNPAl>{t>B*&DCWKSyP!LfOMXV+4;=_ugml&$@IG8H7`wNWoo7Lsdy1*SVu+MX7ZQf z|0nlEPQie{x#rTEpBrU{(J#q8D-dl~nA$37RuJa}!tUdP&)w?5*X~XTFX5tsODf_> z2*jEVZtGS-w>`Q|rrFh!Wep@JDGVzZQ89}2At#Pe($m>;UNdiM4lRAsi*^Csu=ai|ytQ>#~ zf_Pg>e{y%-CkJ1+`;-$?@Q%Ph^Fe%S8;)+LCk<1d(yW51+d)hS3|8!XOQ+ZM(6NZk~ao=;&+~pmB>~9$kAVqFmIN-e^j0(JlZ~;# zHn{a5uitkJrmx_W!#*cf)AL6NGb`FgWkVy};>xV2b)Z*v)HjpHkWqBas#qyS&*JXwk zfX^JhT;HQ4&0TO0B=;bG_Eg^IDq$dmMXqX10ZaJ6ljX2XN78tKy9^SkLdovpWa=q8 zQ&sdf{KViVeu`@cM|gy5%=6h(v%`m2A?|04Ror2mkGwa5j}ew5pAyCqK4uai^6ftQ zSN1SCvyY*b*tuO?h$`Pl)QDO|Qt)pNm$M%9$}V1wDnI%I4PZ9O?A};T4$IY38uRRb zQ6l}G)^LjEbIFk-{JQ6)8i+(2_%(mB*YEk+VLm=cu9D0Z{4@m7i}UEi7|xL9eoSEi zYZ$}^r`(r3kVix%pI2E+5MOx}gE9kmagUXbkxz|JK3XODe-CZ63n9-ZKV$IIQR4%% zL?rLgeT=WfZtUS^HkEve+sh5&Pf-O(&@4sTN18~FqCl!aM1hWVx(uUuNHuSK8zn&O j$n^|8zxx;Z8wJacIB=PESB@G)eyOE5*>M|OeK7t71AOyH literal 0 HcmV?d00001 diff --git a/out/production/homeWork/family_tree/Gender.class b/out/production/homeWork/family_tree/Gender.class new file mode 100644 index 0000000000000000000000000000000000000000..188a4489b193d3a6cbd223f36b540f2c43ccba2f GIT binary patch literal 1022 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 literal 0 HcmV?d00001 diff --git a/out/production/homeWork/family_tree/writer/FileHandler.class b/out/production/homeWork/family_tree/writer/FileHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..476e42c17467234f71233eb2352c0646361461ee GIT binary patch literal 1666 zcmZuxT~8ZF6g^`b7MA7HK={f+z9?%9PD9d^n9{UKXwurG5{N2&sTO+@HZiufUMFq; zP+szoN-ao5YTo-x`YTG#-CdhSL6&EB?!9yFJ!kIBzyJUJ4}fp6Z6bxVfsBP7^eT+J zbYHuLnp=NSc)I^mR|19J4X^G6n+oYAXRjZ9=r>?m7=Wcdq=mEPaaZ?3ozEghWg#Ove$DD3PKVMNL_l#*D&1NTNgi9BO2YzeGWpXR8c73@HTBV5XC=8rIY`Q5fmZ!vH$vof7I!otdjGA)bg zcTAbZ3>M^i;RbJnO*k93ctI98%A5{MTx3~NXqIoq6h^pblyM`B8e-HaJ9!Lu>6OxR zA?iHt;~SD#LoeUQ2O*vHE}eBe#3Rz!V*Ca&rv&2b*=OK8gKv#8V4sR0T@wwV)i~v* zRAd&zbuORab|eV?qZ}C`-Z_CoL6&1dR*tb+q8^`@Io!#=52v^2-_Ea4jQj`jEvoln z*;7npV;-Xp|GxUa*y#H}fmKLSk`Xq*55 literal 0 HcmV?d00001 diff --git a/out/production/homeWork/family_tree/writer/Writer.class b/out/production/homeWork/family_tree/writer/Writer.class new file mode 100644 index 0000000000000000000000000000000000000000..10c9a962670a03d585cb1712ecae35079692ff7b GIT binary patch literal 155 zcmX^0Z`VEs1_mbvPId++Mh3~W#N5oB%J`C^)KvZQqRf)iBK>eM#m>OO$RLoFSeB@t zlbDyT@1K;Fnq0!jz*3x8mI~CU;RBY-%-0W2Ey_&H$*f9D%1O1>jACTq3eGPrN=|jl m%mFIoh8U*@Qq9K5z{tQ1w4Q;15okIq0~?6Nzz!st7&rg{PbU8W literal 0 HcmV?d00001 diff --git a/out/production/homeWork/family_tree/writer/tree.txt b/out/production/homeWork/family_tree/writer/tree.txt new file mode 100644 index 0000000000000000000000000000000000000000..14774725cf270cbb58f6a306c125c8b53f92fd89 GIT binary patch literal 805 zcmZ8fzi-n}5WYBW(w0y)Nh?*Vx|H4C>4a2DQ<*79oe+97uZfZEn&%hlcBlX`urWj( zkbsK4LsX~~eso4+dg1@*#*DZ-Tg1VG8+9bA7t?H$>-W>E>-O=Vp#^h0VEGi`v9EM* zQ)sDSIg6nEP`cj1o(QPC;lb=)&ks6EMo-}cN~q~bk!h$<@u0GgSSk%ouVCr2CF(0( z8Fi?=G}XSxRqBTaB&T6j59~;U7^abh2}IO&+gkZi7n#*qU<{pbkbegP-1R0Oh@v}f zsZJlh`ntNleNh8QUy;jn{xJB-q literal 0 HcmV?d00001 diff --git a/src/family_tree/writer/tree.txt b/src/family_tree/writer/tree.txt new file mode 100644 index 0000000000000000000000000000000000000000..66646d0558471c22de44bd235f423d190e5a9fd2 GIT binary patch literal 805 zcmZ8fzi-n}5WYBW(w0y)36&~UUCM6nbV4ensoW_@Ob9)i*Tl$n&GQR&J5+!=bYqA* zRH8!c3{jy{_|X}O>4pEJ8#ChWY!L?!mcP62yYIV`Kiy-m{`CArYgqK2i(QvYy6}JvN#&sp(MD zxv!KsBu4uB*XsEXaZ!d+3+%){k}RL+N_^yCR_Sx(BnnJwNCu8NGmGD50h!MW&%b#e>QoVyQGVy@I97mZ-0E zWz?beovHRiu2MhTCpitPdSFK)#4wF4Odz7J+t$jDy2z}?0%PcegZw)X;I6m%Kos3+ zOLg|-rg$ael%L8Gvx zldX{tfd)D%Sl~32-FXo8!(ubmVDE@PPI;FY<=*d0*2FtcO3n*Yl5$Zpvg#Abe{o4# z*HGD%A=(mJ!oSUYFqh_P{KkAULvwA0aT@b_E0}NIyfee`D>E9uMYL!J<_alDGM~-J Xd|}>l&Tle*!0b~T!}B>Uy_VCzu=4Jg literal 0 HcmV?d00001 From 480339df5f1f2ec766351cf36d538082c247d631 Mon Sep 17 00:00:00 2001 From: Iryna Brezovskaya Date: Mon, 26 Aug 2024 18:59:15 +0300 Subject: [PATCH 4/9] =?UTF-8?q?main.java=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D0=B0=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D1=83=20=D0=B8=20=D0=B8=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- out/production/homeWork/Main.class | Bin 2038 -> 2136 bytes .../homeWork/family_tree/Human.class | Bin 6221 -> 7014 bytes .../family_tree/family_tree/FamilyTree.class | Bin 2339 -> 3280 bytes .../homeWork/family_tree/writer/tree.txt | Bin 805 -> 805 bytes src/Main.java | 17 +++++++- src/family_tree/Human.java | 11 +++++- src/family_tree/family_tree/FamilyTree.java | 37 ++++++++++++------ .../family_tree/HumanComparatorByAge.java | 8 ++++ .../family_tree/HumanComparatorByName.java | 9 +++++ src/family_tree/family_tree/TreeNode.java | 22 +++++++++++ .../family_tree/iterators/HumanIterator.java | 26 ++++++++++++ src/family_tree/writer/tree.txt | Bin 805 -> 805 bytes 12 files changed, 116 insertions(+), 14 deletions(-) create mode 100644 src/family_tree/family_tree/HumanComparatorByAge.java create mode 100644 src/family_tree/family_tree/HumanComparatorByName.java create mode 100644 src/family_tree/family_tree/TreeNode.java create mode 100644 src/family_tree/family_tree/iterators/HumanIterator.java diff --git a/out/production/homeWork/Main.class b/out/production/homeWork/Main.class index ce6c2237d23d057fa53db945e4c870049df15d78..02cc4bf3b6884e7322ce50b2d90a97dd9c22dc34 100644 GIT binary patch delta 1016 zcmYjPT~iWa6nP(uypBEKS4GqCnDA8grcKil(|~nx@9t z%bLml0cr}x)YM(m)q2-uzoN^g^DZgv&c0{QdCqg*^Yy#try~9M^XUtKemq!}f=rR% z!T}KnWgLQ)!M!}`_A}TYW)~LwAN6I@9B-D}vml~P%d&<>A3?gd^;j=% zJ=gPg_|Yz+L&jkQv=tVtI*MZ=j?3soQ2WI~HV;n7u%KIWn_dM&ocvbL8}!$l+#{nG z0S0R%J(rv{t~xE_4Eh*^WGcnb>Rq02hDH|B>3BAk4*SM!ILn~un!cfbrZ=yD(2M#< z8_sjweO5Zh$PysQNLtha z*s9@jolXt|)kx4OmmM&U8>HEB6B87Olb1-ENP3D8qifjZ-$b3i2q(#=ZFLhl_rL#2 zcsFcBtAiQ4QH6Tcpnp|XjgTD>N}|#8=e_8gBa6DV~T3+!4NX^XCjtLtSJb@vlBi=J(8$* z`^z0cj1Uvu4@U`+MD0KUm!f`k6S1+%EUL)|wD}UcprHG|zB@2O-3B2d?qil>N|@X3 sHm$or7NB+~^dLnZ`U+Q`tmTR&K0i0YMC{$!C5ejS;b>x*H(axS0bicC?f?J) delta 952 zcmZWnTTc^F5dO|yy34x4wge1f%T=XYY5_roqE=KyDHlb-;ssVHSOS<3G%-HZL?6@` zeb^@x6aPX1rB$Nw*~Db~q`$;BjdKo4P2A1SoIT&nH#6Tk->n}N#+P3oJ^|>%!kW>= zd>TRwjc!qC>^2aDtf7IyKj$oE7Vl53uB6kkfxAo2vW_MO!*h!dy+ZMcmn*}59MEvk zL<_?1SJqV?L92$Si9?7nRJ!d_rQ0Mm>-A_ip`ybbkzUMna*o$tPO!Y>97jwXMVP_Y zpI&kn)4YXl6FrDC$j5?zh>g$Ngc--EYJ1cc^~P`d2hXf_g=?IcSNpIPBDbs zJ8DSQaoT+>dmGlTXrn8Gy8+Dno;w2~;z zrf(WD<&|NERtgoVCF1RK8zO{D@83cq73j<3Ofq6`;@m_@`*I2a!gydHLdr+~(cO<( zQX9mmA&oiWG%){HZMsl0?Erxt?m?oy@EO6<$cCuiMtL1Om&Bl%I2#=pP0Yo~{03&J Bqn`i( diff --git a/out/production/homeWork/family_tree/Human.class b/out/production/homeWork/family_tree/Human.class index 77ad3c0a92146f8faae2f1805e35bcbc6054f682..15947294dfeb63023f3dfce7b3bfe6c0b3496df7 100644 GIT binary patch literal 7014 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 BwGjXS literal 2339 zcmaJ?T~ixn6n@?$upuna1`6_}EiEM^g;Z2p2x1G`77S1Yp`f)cVS%M#gPTn)z4R}5 zRsTS5xUe%V9qj0M*BO6>cm4;bTA#DKB?(ezXLjE`d(Ly7bKd7Y`};pX{|aCNyBb0Y z&0EGjBVBT>eEO>67`s`k=*FNB(NTk1h1xO8w%l=raH4-PhA8SZ#N=DOLeILfZRL0G zxQ=P2E7#XN`vT2OkjR!(2zo|v8W7RYsBpsjmN)E;^xW!}nRDxy;)ITqh%3}>mbMLB zV(54jr5-IfrJ+?v8{SfAtWKg3%@u6dueG=xzk*KSg~Cn4F>RMj zS`*p-M0@>+BBkSkL^OC2lbcq4jX{!oP)8aU6=EBvdx#WI^dHxeAsz4GeHLK3renAT zM{-trP6hT%J%({f!(|;K7*&Xu`}f*KLEAKnv*vxapS#b74P#8lhoBlFwr6g6ja}JV z;e18MRZNfvtMO`iQ|&9_{jrWuq{4buSXudX9XAA}jwpWRqQGe#pCU_k^q#WU3kuaV z=3U3KH!>P#723-B^34+^Hr8}vm_a0p&nR$F?`TX6^Ewvr1x?1zj%jl{2P%aVzy{6q z3a)}=M_aI@;}(|LpQ81E;%D2Y1o=xr{z{=MG4v161vo?&H^g*Cc2 zWi8vBEp4xw&VmmX&lYkRek3e};5WBS+Vt3~?OycMeIi6kr zB9EeXbUAmbQhMi<85-tYBX@Vk*a`U6?s!L&VL3T*3ZdevLc8CKWA>P*aK2D-a^^Kl z8rW2(KPWAxmZO|)3MN9lI7>KcLo&^1+wj(#(75Jo<=vuX6k)CaJ^37J`5D5`pgs0H zw|I{+8fZj4ns8UVd|%|T%{RfRr-$I&;!}KM$!Ek$Jw=nCgdr%6e1a?@y&Jn)C<&v_mWT0lsZ6j2tT4fcxew|DV1D) zg09;!<0-oKaXOjW$9cIWBYWXJhWqr+lN8WOdTne=I|+8Mb)6VM7lzP{OMDx_=?dDJ zL)sba;9HV%h!8=jc8Ih%c>|i?^DV+Jeatyrh#%j;S-uMXx0lGIR&J1{_YgIuL~zj(;6mp*R5FMY@_UBORBIQmllz+$95Yn%Ts9TIxsT7O0?Ok6 zJe>PjS@K^hx1zhe6{&%J++Iq>zmd2{ul`_vR)vNylpfX$${~u&JP#w>iBVn|T)`Nw u^T#xe@xv~R@*IjZWS8awvQc`KaF29FE{zENjXn)CULSgB{f^cU?*9vO>+Y!l diff --git a/out/production/homeWork/family_tree/writer/tree.txt b/out/production/homeWork/family_tree/writer/tree.txt index 14774725cf270cbb58f6a306c125c8b53f92fd89..ef201c9957e230c48b833cd673cc100b8a47cda3 100644 GIT binary patch delta 37 vcmV+=0NVeh2Bij&DhN{gUWBnQSj&+zfe7@Dx`Hg}PFaz=^8ui, Serializable, Comparable { private long id; @@ -31,6 +33,9 @@ public Human(String name, Gender gender, LocalDate birthDate, LocalDate deathDat this.mother = mother; this.father = father; } + + + public long getId() { return id; } @@ -199,4 +204,8 @@ public String getChildrenInfo() { } + @Override + public int compareTo(Human o) { + return name.compareTo(o.name); + } } \ No newline at end of file diff --git a/src/family_tree/family_tree/FamilyTree.java b/src/family_tree/family_tree/FamilyTree.java index 46cc1d42f2..2bd7e1ad0e 100644 --- a/src/family_tree/family_tree/FamilyTree.java +++ b/src/family_tree/family_tree/FamilyTree.java @@ -1,30 +1,30 @@ package family_tree.family_tree; -import family_tree.Human; import java.io.Serializable; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; -public class FamilyTree implements Serializable { +public class FamilyTree> implements Serializable, Iterable { private long humansId; - private List humanList; + private List humanList; public FamilyTree() { this(new ArrayList<>()); } - public FamilyTree(List humanList) { + public FamilyTree(List humanList) { this.humanList = humanList; } - public boolean add(Human human) { + public boolean add(E human) { if (human == null) { return false; } if (!humanList.contains(human)) { humanList.add(human); - human.setId(humansId++); + human.setId(humansId++); addToParents(human); addToChildren(human); return true; @@ -32,17 +32,17 @@ public boolean add(Human human) { return false; } - private void addToParents(Human human) { - for (Human parent : human.getParents()) { + private void addToParents(E human) { + for (E parent : human.getParents()) { parent.addChild(human); } } - private void addToChildren(Human human) { + private void addToChildren(E human) { if (human.getChildren() == null) { return; } - for (Human child : human.getChildren()) { + for (E child : human.getChildren()) { child.addParent(human); } } @@ -55,12 +55,27 @@ public String getInfo() { StringBuilder sb = new StringBuilder(); sb.append("tree:\n"); sb.append(humanList.size()); - for (Human human : humanList) { + for (E human : humanList) { sb.append(human); sb.append("\n"); } return sb.toString(); } + public void sortByAge() { + humanList.sort(new HumanComparatorByAge<>()); + } + + + public void sortByName(){ + humanList.sort(new HumanComparatorByName<>()); + } + + + + @Override + public Iterator iterator() { + return null; + } } diff --git a/src/family_tree/family_tree/HumanComparatorByAge.java b/src/family_tree/family_tree/HumanComparatorByAge.java new file mode 100644 index 0000000000..d05a02b7f3 --- /dev/null +++ b/src/family_tree/family_tree/HumanComparatorByAge.java @@ -0,0 +1,8 @@ +package family_tree.family_tree; + +import java.util.Comparator; +public class HumanComparatorByAge> implements Comparator{ + public int compare(T o1, T o2){ + return Integer.compare(o1.getAge(), o2.getAge()); + } +} diff --git a/src/family_tree/family_tree/HumanComparatorByName.java b/src/family_tree/family_tree/HumanComparatorByName.java new file mode 100644 index 0000000000..49c0303c25 --- /dev/null +++ b/src/family_tree/family_tree/HumanComparatorByName.java @@ -0,0 +1,9 @@ +package family_tree.family_tree; +import java.util.Comparator; + +public class HumanComparatorByName > implements Comparator{ + @Override + public int compare(T o1, T o2){ + return o1.getName().compareTo(o2.getName()); + } +} diff --git a/src/family_tree/family_tree/TreeNode.java b/src/family_tree/family_tree/TreeNode.java new file mode 100644 index 0000000000..7e306dc244 --- /dev/null +++ b/src/family_tree/family_tree/TreeNode.java @@ -0,0 +1,22 @@ +package family_tree.family_tree; + +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +public interface TreeNode extends Serializable { + void setId(long id); + long getId(); + T getFather(); + T getMother(); + boolean addChild(T human); + boolean addParent(T human); + String getName(); +// LocalDate getBirthDate(); +// LocalDate getDethDate(); + List getParents(); + ListgetChildren(); + int getAge(); + + +} diff --git a/src/family_tree/family_tree/iterators/HumanIterator.java b/src/family_tree/family_tree/iterators/HumanIterator.java new file mode 100644 index 0000000000..dba4ea2572 --- /dev/null +++ b/src/family_tree/family_tree/iterators/HumanIterator.java @@ -0,0 +1,26 @@ +package family_tree.family_tree.iterators; + +import java.util.Iterator; +import java.util.List; + +public class HumanIterator implements Iterator { + private int index; + + public HumanIterator(int index, List humanList) { + this.index = index; + this.humanList = humanList; + } + + private List humanList; + + + @Override + public boolean hasNext() { + return index Date: Mon, 26 Aug 2024 18:59:44 +0300 Subject: [PATCH 5/9] =?UTF-8?q?main.java=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D0=B0=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D1=83=20=D0=B8=20=D0=B8=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../family_tree/HumanComparatorByAge.class | Bin 0 -> 1134 bytes .../family_tree/HumanComparatorByName.class | Bin 0 -> 1183 bytes .../family_tree/family_tree/TreeNode.class | Bin 0 -> 624 bytes .../family_tree/iterators/HumanIterator.class | Bin 0 -> 1131 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 out/production/homeWork/family_tree/family_tree/HumanComparatorByAge.class create mode 100644 out/production/homeWork/family_tree/family_tree/HumanComparatorByName.class create mode 100644 out/production/homeWork/family_tree/family_tree/TreeNode.class create mode 100644 out/production/homeWork/family_tree/family_tree/iterators/HumanIterator.class diff --git a/out/production/homeWork/family_tree/family_tree/HumanComparatorByAge.class b/out/production/homeWork/family_tree/family_tree/HumanComparatorByAge.class new file mode 100644 index 0000000000000000000000000000000000000000..f3a7f291e3191fa791caf426c94b8030ad66180c GIT binary patch literal 1134 zcmb7D+fLg+5IyT$OhQr&rBHfxffnZ?qPA}&iWHFAT1uf37E+(kCTxw7VEab=D@t5D=>5-JLz2Idf)b_s`#-zW{8bUWA5>j%*1zUZHIu}@JLX&D`dwdgTn11 zZedP`QNlbH80IJ0>_7@vL=1XA9Gvoq0&b0Tghod}SQ1d8^ zp|J0{0hdG7oq|OWeHEKw!|F~tncSP^G@?9>w?ZC=NAGyV2SSR7PU3yb+1k2MNTRzv z&6*&Wnli4kxE~IqzIf&NqrwUYvNfZ{1f~FG3W1O#oDghd5{{Re81Wf<{ literal 0 HcmV?d00001 diff --git a/out/production/homeWork/family_tree/family_tree/HumanComparatorByName.class b/out/production/homeWork/family_tree/family_tree/HumanComparatorByName.class new file mode 100644 index 0000000000000000000000000000000000000000..f4631a0377544ac3d9002efaa9cfa1c6b8b1c34d GIT binary patch literal 1183 zcmb7DT~8B16g{&oEG=7E5m51~pvZ1pY&1U6rU{U!O=>mihQuc`En``-A7q`H^gsFH z3q~J|&;BUmo!yphDTJ8p%-p$q=A3)y-ud(Q=Pv;J*vUgfMn~4b9OfC!6aIx)Js$L{ z@46?VCmH7JZs5uWL&mZX7qNhxj=X_I7!1Wv+;_dCUNN_0fyIBD~(UvmwO)N%vS z9{61mIlSx9^(?o-9`_D;d_lcJ$Eb82w;ymhh$y|BMK1d6Cc}2Rj7gu>QiUCP6w-Vvv%uUwBJUcdBipQ*B9gIZ1l!(Dns8CvP_ z(0q?}d$clI=SttfzQw=q)2x02Sv;WGNC0?Ws0j%K(WH$BFJ_@@SyI}hEGGKXJop3rQO0Q- zh_;7jcjnETdENK@^Z7+Yx75)n$LQjfFQoVWqCz3ezjqtNIBgb9tWoRFHD1608gU6UJ;QBw< zQla!+gj66%#7jnv^>8aCJ#!?N3W|1y>>{X#N)^5FP{=|)(2a{E{PciPuWMgr2km94 zgh{<D)CvRZB%Qh=4c1}ZVK0F jZ&PoezMsNPYQ;VW)ZXY0p*u?9V>*d5lB82Qi_!TnbCZlC literal 0 HcmV?d00001 diff --git a/out/production/homeWork/family_tree/family_tree/iterators/HumanIterator.class b/out/production/homeWork/family_tree/family_tree/iterators/HumanIterator.class new file mode 100644 index 0000000000000000000000000000000000000000..90e59de22b96a09aef61d61f283b24ce8c6e2aeb GIT binary patch literal 1131 zcmb7DU2hUW6g{&nU4boB3fNk$X#D`J#lH9;g!qvfNwCJWA+d?kfv$8aU7BSvtv|;X zUwqJ{jj0d*0DqM6%xgym<1i4hVA_acLSSlJew5{| zbUWpjt!=063rtj%tNfZkq)=?eZ~-w3aT^KP0_FE|M|Jn#`kv#A#L9O(>G!;T`T1Z+ zy7l9uKvcP#&Ypm%YpSG;6s81XTl%Yp>Qis35qKE*s$14bC4n@iEo5wDkrPOcrUlHt z`s4)m>iW|e8?(5~bH^cDwoosIgr|zCShymPJ|Q~s7h6*uSNa2wjM+0zs_QG2T16mJ zsGrGHicR`>+S}xR_kkc)I(Db)dUtqa$&K6QXH_Era zJLG(DUb10Dvtt#78C{mOCHt$+9(&0F*btap^JV+P3%NTi#0`>}!hibA_bwFKHG#*~ zm51Z+P#cF%b$0kFLznTj-oR@+&s5OVk-=KhZ;9(1DFXs?Tn#;;oN+@>7_qBCJdX(D zD6SFD6B%%ia8H$fK$PYVVU-pSG5MWPgmmCMnOtLB<6IL+lJo|Ve0U8DxXBX<0yz;x zTF}5P#yRdfw}9K+b(F$9vCzyNS}CB&HP74|;`)BBbU+sem^{KofzPnaFEArtnK1)L z6Tw&0feSmlaqL1Xo*-JW#9tIf<`MsJxQj(f Date: Tue, 3 Sep 2024 19:12:21 +0300 Subject: [PATCH 6/9] =?UTF-8?q?main.java=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D0=B0=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D1=83=20=D0=B8=20=D0=B8=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=20MVP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- out/production/homeWork/Main.class | Bin 2136 -> 403 bytes .../homeWork/family_tree/Gender.class | Bin 1022 -> 0 bytes .../homeWork/family_tree/Human.class | Bin 7014 -> 0 bytes .../family_tree/family_tree/FamilyTree.class | Bin 3280 -> 0 bytes .../family_tree/HumanComparatorByAge.class | Bin 1134 -> 0 bytes .../family_tree/HumanComparatorByName.class | Bin 1183 -> 0 bytes .../family_tree/family_tree/TreeNode.class | Bin 624 -> 0 bytes .../family_tree/iterators/HumanIterator.class | Bin 1131 -> 0 bytes .../family_tree/writer/FileHandler.class | Bin 1666 -> 0 bytes .../homeWork/family_tree/writer/Writer.class | Bin 155 -> 0 bytes .../homeWork/family_tree/writer/tree.txt | Bin 805 -> 0 bytes src/Main.java | 92 +++++++++--------- .../family_tree/HumanComparatorByName.java | 9 -- src/family_tree/writer/tree.txt | Bin 805 -> 0 bytes .../FamilyTree}/FamilyTree.java | 8 +- .../FamilyTree}/HumanIterator.java | 2 +- src/{family_tree => model/human}/Gender.java | 2 +- src/{family_tree => model/human}/Human.java | 4 +- .../family_tree => model/human}/TreeNode.java | 3 +- .../comparators}/HumanComparatorByAge.java | 4 +- .../comparators/HumanComparatorByName.java | 11 +++ src/model/service/Service.java | 80 +++++++++++++++ .../writer/FileHandler.java | 2 +- src/{family_tree => model}/writer/Writer.java | 2 +- src/model/writer/tree.txt | Bin 0 -> 798 bytes src/view/commands/AddHuman.java | 17 ++++ src/view/commands/Command.java | 18 ++++ src/view/commands/Finish.java | 15 +++ src/view/commands/GetHumanInfo.java | 16 +++ src/view/commands/Save.java | 16 +++ src/view/commands/SortByAge.java | 15 +++ src/view/commands/SortByName.java | 15 +++ 32 files changed, 265 insertions(+), 66 deletions(-) delete mode 100644 out/production/homeWork/family_tree/Gender.class delete mode 100644 out/production/homeWork/family_tree/Human.class delete mode 100644 out/production/homeWork/family_tree/family_tree/FamilyTree.class delete mode 100644 out/production/homeWork/family_tree/family_tree/HumanComparatorByAge.class delete mode 100644 out/production/homeWork/family_tree/family_tree/HumanComparatorByName.class delete mode 100644 out/production/homeWork/family_tree/family_tree/TreeNode.class delete mode 100644 out/production/homeWork/family_tree/family_tree/iterators/HumanIterator.class delete mode 100644 out/production/homeWork/family_tree/writer/FileHandler.class delete mode 100644 out/production/homeWork/family_tree/writer/Writer.class delete mode 100644 out/production/homeWork/family_tree/writer/tree.txt delete mode 100644 src/family_tree/family_tree/HumanComparatorByName.java delete mode 100644 src/family_tree/writer/tree.txt rename src/{family_tree/family_tree => model/FamilyTree}/FamilyTree.java (89%) rename src/{family_tree/family_tree/iterators => model/FamilyTree}/HumanIterator.java (91%) rename src/{family_tree => model/human}/Gender.java (66%) rename src/{family_tree => model/human}/Human.java (98%) rename src/{family_tree/family_tree => model/human}/TreeNode.java (87%) rename src/{family_tree/family_tree => model/human/comparators}/HumanComparatorByAge.java (77%) create mode 100644 src/model/human/comparators/HumanComparatorByName.java create mode 100644 src/model/service/Service.java rename src/{family_tree => model}/writer/FileHandler.java (96%) rename src/{family_tree => model}/writer/Writer.java (79%) create mode 100644 src/model/writer/tree.txt create mode 100644 src/view/commands/AddHuman.java create mode 100644 src/view/commands/Command.java create mode 100644 src/view/commands/Finish.java create mode 100644 src/view/commands/GetHumanInfo.java create mode 100644 src/view/commands/Save.java create mode 100644 src/view/commands/SortByAge.java create mode 100644 src/view/commands/SortByName.java diff --git a/out/production/homeWork/Main.class b/out/production/homeWork/Main.class index 02cc4bf3b6884e7322ce50b2d90a97dd9c22dc34..665af7477bced6eaae3f4e36ba686e1f9ab9d8e9 100644 GIT binary patch delta 246 zcmca1FqxU_)W2Q(7#J9w7{n)X>2t9&a4<5k_$FrNP4;G~t><#BNKP#%$;{6yW@iv# zWDw3uEKAhS%-8qyhs!WBa0Ta=7A2>;W#*(ZGH`-4>w(lUC^E1!FagbG0FsOhtPE^G zk`u_&2hxl{npJB%1LH=pG#8KrNi#6;F>nJ(9xywE70BQPayfy*{6JGcy0w8Aq!2@= cG?Gq61_1^^pduk4W&tV}24Ybln~6aT09^tg#{d8T literal 2136 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 BwGjXS diff --git a/out/production/homeWork/family_tree/family_tree/HumanComparatorByAge.class b/out/production/homeWork/family_tree/family_tree/HumanComparatorByAge.class deleted file mode 100644 index f3a7f291e3191fa791caf426c94b8030ad66180c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1134 zcmb7D+fLg+5IyT$OhQr&rBHfxffnZ?qPA}&iWHFAT1uf37E+(kCTxw7VEab=D@t5D=>5-JLz2Idf)b_s`#-zW{8bUWA5>j%*1zUZHIu}@JLX&D`dwdgTn11 zZedP`QNlbH80IJ0>_7@vL=1XA9Gvoq0&b0Tghod}SQ1d8^ zp|J0{0hdG7oq|OWeHEKw!|F~tncSP^G@?9>w?ZC=NAGyV2SSR7PU3yb+1k2MNTRzv z&6*&Wnli4kxE~IqzIf&NqrwUYvNfZ{1f~FG3W1O#oDghd5{{Re81Wf<{ diff --git a/out/production/homeWork/family_tree/family_tree/HumanComparatorByName.class b/out/production/homeWork/family_tree/family_tree/HumanComparatorByName.class deleted file mode 100644 index f4631a0377544ac3d9002efaa9cfa1c6b8b1c34d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1183 zcmb7DT~8B16g{&oEG=7E5m51~pvZ1pY&1U6rU{U!O=>mihQuc`En``-A7q`H^gsFH z3q~J|&;BUmo!yphDTJ8p%-p$q=A3)y-ud(Q=Pv;J*vUgfMn~4b9OfC!6aIx)Js$L{ z@46?VCmH7JZs5uWL&mZX7qNhxj=X_I7!1Wv+;_dCUNN_0fyIBD~(UvmwO)N%vS z9{61mIlSx9^(?o-9`_D;d_lcJ$Eb82w;ymhh$y|BMK1d6Cc}2Rj7gu>QiUCP6w-Vvv%uUwBJUcdBipQ*B9gIZ1l!(Dns8CvP_ z(0q?}d$clI=SttfzQw=q)2x02Sv;WGNC0?Ws0j%K(WH$BFJ_@@SyI}hEGGKXJop3rQO0Q- zh_;7jcjnETdENK@^Z7+Yx75)n$LQjfFQoVWqCz3ezjqtNIBgb9tWoRFHD1608gU6UJ;QBw< zQla!+gj66%#7jnv^>8aCJ#!?N3W|1y>>{X#N)^5FP{=|)(2a{E{PciPuWMgr2km94 zgh{<D)CvRZB%Qh=4c1}ZVK0F jZ&PoezMsNPYQ;VW)ZXY0p*u?9V>*d5lB82Qi_!TnbCZlC diff --git a/out/production/homeWork/family_tree/family_tree/iterators/HumanIterator.class b/out/production/homeWork/family_tree/family_tree/iterators/HumanIterator.class deleted file mode 100644 index 90e59de22b96a09aef61d61f283b24ce8c6e2aeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmb7DU2hUW6g{&nU4boB3fNk$X#D`J#lH9;g!qvfNwCJWA+d?kfv$8aU7BSvtv|;X zUwqJ{jj0d*0DqM6%xgym<1i4hVA_acLSSlJew5{| zbUWpjt!=063rtj%tNfZkq)=?eZ~-w3aT^KP0_FE|M|Jn#`kv#A#L9O(>G!;T`T1Z+ zy7l9uKvcP#&Ypm%YpSG;6s81XTl%Yp>Qis35qKE*s$14bC4n@iEo5wDkrPOcrUlHt z`s4)m>iW|e8?(5~bH^cDwoosIgr|zCShymPJ|Q~s7h6*uSNa2wjM+0zs_QG2T16mJ zsGrGHicR`>+S}xR_kkc)I(Db)dUtqa$&K6QXH_Era zJLG(DUb10Dvtt#78C{mOCHt$+9(&0F*btap^JV+P3%NTi#0`>}!hibA_bwFKHG#*~ zm51Z+P#cF%b$0kFLznTj-oR@+&s5OVk-=KhZ;9(1DFXs?Tn#;;oN+@>7_qBCJdX(D zD6SFD6B%%ia8H$fK$PYVVU-pSG5MWPgmmCMnOtLB<6IL+lJo|Ve0U8DxXBX<0yz;x zTF}5P#yRdfw}9K+b(F$9vCzyNS}CB&HP74|;`)BBbU+sem^{KofzPnaFEArtnK1)L z6Tw&0feSmlaqL1Xo*-JW#9tIf<`MsJxQj(f?m7=Wcdq=mEPaaZ?3ozEghWg#Ove$DD3PKVMNL_l#*D&1NTNgi9BO2YzeGWpXR8c73@HTBV5XC=8rIY`Q5fmZ!vH$vof7I!otdjGA)bg zcTAbZ3>M^i;RbJnO*k93ctI98%A5{MTx3~NXqIoq6h^pblyM`B8e-HaJ9!Lu>6OxR zA?iHt;~SD#LoeUQ2O*vHE}eBe#3Rz!V*Ca&rv&2b*=OK8gKv#8V4sR0T@wwV)i~v* zRAd&zbuORab|eV?qZ}C`-Z_CoL6&1dR*tb+q8^`@Io!#=52v^2-_Ea4jQj`jEvoln z*;7npV;-Xp|GxUa*y#H}fmKLSk`Xq*55 diff --git a/out/production/homeWork/family_tree/writer/Writer.class b/out/production/homeWork/family_tree/writer/Writer.class deleted file mode 100644 index 10c9a962670a03d585cb1712ecae35079692ff7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmX^0Z`VEs1_mbvPId++Mh3~W#N5oB%J`C^)KvZQqRf)iBK>eM#m>OO$RLoFSeB@t zlbDyT@1K;Fnq0!jz*3x8mI~CU;RBY-%-0W2Ey_&H$*f9D%1O1>jACTq3eGPrN=|jl m%mFIoh8U*@Qq9K5z{tQ1w4Q;15okIq0~?6Nzz!st7&rg{PbU8W diff --git a/out/production/homeWork/family_tree/writer/tree.txt b/out/production/homeWork/family_tree/writer/tree.txt deleted file mode 100644 index ef201c9957e230c48b833cd673cc100b8a47cda3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmZ8fF>ljQ5WYBW(w0y)36&~UT{QJc&*cn2hQYd0(V0qzRFt9N(ad)4_vA&rZHrXjV4WM zI@ENoDW|Hz6BGjVEGi` zv9EOJhR{;OOcp`=p>(~i4G~az(Sz}gjvus?jGn?Slu*->BGXWz;z4B-u~ZtGUcu63 zOVn4|GHOx#%1HYbSE(Ovk(`EAJ+LDYVwgr2CJ<5EUDwKw+Q_WN0%PcegZw)X;I5bX zKos3sm+JVz;lvZajkl|1fa=>?EoB`7u=qw66QKicy{HZU6}k?rKJ zf<|FWCtD*Q0u6LjFvV#oyK^(@hQ(&A!M-g5IpSSnlzYD^SwrtUDLGG#NXkV?->MHK z|HUO~T|;F_hGr5wl<57@p5*={1}F1-|p{8UO$Q diff --git a/src/Main.java b/src/Main.java index af7d2f45ec..a1e43689dc 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,10 +1,10 @@ -import family_tree.family_tree.FamilyTree; -import family_tree.Gender; -import family_tree.Human; +import model.FamilyTree.FamilyTree; +import model.human.Gender; +import model.human.Human; import java.io.IOException; import java.time.LocalDate; -import family_tree.writer.FileHandler; +import model.writer.FileHandler; @@ -12,55 +12,55 @@ public class Main { -final static String filePath = "src/family_tree/writer/tree.txt"; +//final static String filePath = "src/model/writer/tree.txt"; public static void main(String[] args) throws IOException { -// FamilyTree tree = load(); - FamilyTree tree = testTree(); - System.out.println(tree); - save(tree); - tree.sortByAge(); - System.out.println(tree); - tree.sortByName(); - System.out.println(tree); +//// FamilyTree tree = load(); +// FamilyTree tree = testTree(); +// System.out.println(tree); +// save(tree); +// tree.sortByAge(); +// System.out.println(tree); +// tree.sortByName(); +// System.out.println(tree); } - private static FamilyTree testTree() { - FamilyTree tree = new FamilyTree(); - - Human grisha = new Human("Гриша", Gender.Male, LocalDate.of(1952, 12, 12), null, null, null, null); - Human masha = new Human("Мария", Gender.Female, LocalDate.of(1951, 1, 2), null, null, null, null); - - tree.add(grisha); - tree.add(masha); - Human gena = new Human("Геннадий",Gender.Male, LocalDate.of(1971, 4, 29),null,null, masha, grisha); - tree.add(gena); - Human sveta = new Human("Светлана", Gender.Female, LocalDate.of(1976, 2, 17), null, null, masha, grisha); - tree.add(sveta); - - return tree; - - } - - - - private static void save(FamilyTree familyTree) { - FileHandler fileHandler = new FileHandler(filePath); - - fileHandler.save(familyTree); - - } - - private static FamilyTree load() { - FileHandler fileHandler = new FileHandler(filePath); - - return (FamilyTree) fileHandler.read(); - - - } +// private static FamilyTree testTree() { +// FamilyTree tree = new FamilyTree(); +// +// Human grisha = new Human("Гриша", Gender.Male, LocalDate.of(1952, 12, 12), null, null, null, null); +// Human masha = new Human("Мария", Gender.Female, LocalDate.of(1951, 1, 2), null, null, null, null); +// +// tree.add(grisha); +// tree.add(masha); +// Human gena = new Human("Геннадий",Gender.Male, LocalDate.of(1971, 4, 29),null,null, masha, grisha); +// tree.add(gena); +// Human sveta = new Human("Светлана", Gender.Female, LocalDate.of(1976, 2, 17), null, null, masha, grisha); +// tree.add(sveta); +// +// return tree; +// +// } +// +// +// +// private static void save(FamilyTree familyTree) { +// FileHandler fileHandler = new FileHandler(filePath); +// +// fileHandler.save(familyTree); +// +// } +// +// private static FamilyTree load() { +// FileHandler fileHandler = new FileHandler(filePath); +// +// return (FamilyTree) fileHandler.read(); +// +// +// } } \ No newline at end of file diff --git a/src/family_tree/family_tree/HumanComparatorByName.java b/src/family_tree/family_tree/HumanComparatorByName.java deleted file mode 100644 index 49c0303c25..0000000000 --- a/src/family_tree/family_tree/HumanComparatorByName.java +++ /dev/null @@ -1,9 +0,0 @@ -package family_tree.family_tree; -import java.util.Comparator; - -public class HumanComparatorByName > implements Comparator{ - @Override - public int compare(T o1, T o2){ - return o1.getName().compareTo(o2.getName()); - } -} diff --git a/src/family_tree/writer/tree.txt b/src/family_tree/writer/tree.txt deleted file mode 100644 index ef201c9957e230c48b833cd673cc100b8a47cda3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmZ8fF>ljQ5WYBW(w0y)36&~UT{QJc&*cn2hQYd0(V0qzRFt9N(ad)4_vA&rZHrXjV4WM zI@ENoDW|Hz6BGjVEGi` zv9EOJhR{;OOcp`=p>(~i4G~az(Sz}gjvus?jGn?Slu*->BGXWz;z4B-u~ZtGUcu63 zOVn4|GHOx#%1HYbSE(Ovk(`EAJ+LDYVwgr2CJ<5EUDwKw+Q_WN0%PcegZw)X;I5bX zKos3sm+JVz;lvZajkl|1fa=>?EoB`7u=qw66QKicy{HZU6}k?rKJ zf<|FWCtD*Q0u6LjFvV#oyK^(@hQ(&A!M-g5IpSSnlzYD^SwrtUDLGG#NXkV?->MHK z|HUO~T|;F_hGr5wl<57@p5*={1}F1-|p{8UO$Q diff --git a/src/family_tree/family_tree/FamilyTree.java b/src/model/FamilyTree/FamilyTree.java similarity index 89% rename from src/family_tree/family_tree/FamilyTree.java rename to src/model/FamilyTree/FamilyTree.java index 2bd7e1ad0e..228bc0ff0f 100644 --- a/src/family_tree/family_tree/FamilyTree.java +++ b/src/model/FamilyTree/FamilyTree.java @@ -1,6 +1,10 @@ -package family_tree.family_tree; +package model.FamilyTree; +import model.human.comparators.HumanComparatorByAge; +import model.human.comparators.HumanComparatorByName; +import model.human.TreeNode; + import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; @@ -78,6 +82,8 @@ public Iterator iterator() { } + public void addHuman(E human) { + } } diff --git a/src/family_tree/family_tree/iterators/HumanIterator.java b/src/model/FamilyTree/HumanIterator.java similarity index 91% rename from src/family_tree/family_tree/iterators/HumanIterator.java rename to src/model/FamilyTree/HumanIterator.java index dba4ea2572..80c90c3be2 100644 --- a/src/family_tree/family_tree/iterators/HumanIterator.java +++ b/src/model/FamilyTree/HumanIterator.java @@ -1,4 +1,4 @@ -package family_tree.family_tree.iterators; +package model.FamilyTree; import java.util.Iterator; import java.util.List; diff --git a/src/family_tree/Gender.java b/src/model/human/Gender.java similarity index 66% rename from src/family_tree/Gender.java rename to src/model/human/Gender.java index 74cb058047..6af3128b47 100644 --- a/src/family_tree/Gender.java +++ b/src/model/human/Gender.java @@ -1,4 +1,4 @@ -package family_tree; +package model.human; public enum Gender { Male, Female; diff --git a/src/family_tree/Human.java b/src/model/human/Human.java similarity index 98% rename from src/family_tree/Human.java rename to src/model/human/Human.java index dd50861e3c..9cf9b73570 100644 --- a/src/family_tree/Human.java +++ b/src/model/human/Human.java @@ -1,6 +1,4 @@ -package family_tree; - -import family_tree.family_tree.TreeNode; +package model.human; import java.io.Serializable; import java.time.LocalDate; diff --git a/src/family_tree/family_tree/TreeNode.java b/src/model/human/TreeNode.java similarity index 87% rename from src/family_tree/family_tree/TreeNode.java rename to src/model/human/TreeNode.java index 7e306dc244..71298c1f0e 100644 --- a/src/family_tree/family_tree/TreeNode.java +++ b/src/model/human/TreeNode.java @@ -1,7 +1,6 @@ -package family_tree.family_tree; +package model.human; import java.io.Serializable; -import java.time.LocalDate; import java.util.List; public interface TreeNode extends Serializable { diff --git a/src/family_tree/family_tree/HumanComparatorByAge.java b/src/model/human/comparators/HumanComparatorByAge.java similarity index 77% rename from src/family_tree/family_tree/HumanComparatorByAge.java rename to src/model/human/comparators/HumanComparatorByAge.java index d05a02b7f3..e63483a226 100644 --- a/src/family_tree/family_tree/HumanComparatorByAge.java +++ b/src/model/human/comparators/HumanComparatorByAge.java @@ -1,4 +1,6 @@ -package family_tree.family_tree; +package model.human.comparators; + +import model.human.TreeNode; import java.util.Comparator; public class HumanComparatorByAge> implements Comparator{ diff --git a/src/model/human/comparators/HumanComparatorByName.java b/src/model/human/comparators/HumanComparatorByName.java new file mode 100644 index 0000000000..90dbebb958 --- /dev/null +++ b/src/model/human/comparators/HumanComparatorByName.java @@ -0,0 +1,11 @@ +package model.human.comparators; +import model.human.TreeNode; + +import java.util.Comparator; + +public class HumanComparatorByName > implements Comparator{ + @Override + public int compare(T o1, T o2){ + return o1.getName().compareTo(o2.getName()); + } +} diff --git a/src/model/service/Service.java b/src/model/service/Service.java new file mode 100644 index 0000000000..5e72b6a490 --- /dev/null +++ b/src/model/service/Service.java @@ -0,0 +1,80 @@ +package model.service; + +import model.FamilyTree.FamilyTree; +import model.human.Human; +import model.human.TreeNode; +import model.writer.FileHandler; + +import java.io.Serializable; + +public class Service { + + private FamilyTree tree; + final static String filePath = "src/model/writer/tree.txt"; + + public > Service(){ + FamilyTree tree = new FamilyTree(); + tree = new FamilyTree<>(); + } + + + private static FamilyTree load() { + FileHandler fileHandler = new FileHandler(filePath); + + return (FamilyTree) fileHandler.read(); + + + } + + private void save(FamilyTree tree) { + FileHandler fileHandler = new FileHandler(filePath); + + Serializable familyTree; + fileHandler.save(tree); + + } + + public boolean addHuman() { + + Human human = new Human(null, null, null, null, null, null, null); + + tree.addHuman(human); + return true; +// FamilyTree tree = new FamilyTree(); +// +// Human grisha = new Human("Гриша", Gender.Male, LocalDate.of(1952, 12, 12), null, null, null, null); +// Human masha = new Human("Мария", Gender.Female, LocalDate.of(1951, 1, 2), null, null, null, null); +// +// tree.add(grisha); +// tree.add(masha); +// Human gena = new Human("Геннадий",Gender.Male, LocalDate.of(1971, 4, 29),null,null, masha, grisha); +// tree.add(gena); +// Human sveta = new Human("Светлана", Gender.Female, LocalDate.of(1976, 2, 17), null, null, masha, grisha); +// tree.add(sveta); +// +// return tree; + + } + + + public String getHumanInfo(){ + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Список членов семьи\n"); + for (Human human: tree){ + stringBuilder.append(human); + stringBuilder.append("\n"); + } + return stringBuilder.toString(); + } + + public void sortByAge() { + tree.sortByAge(); + } + + public void sortByName() { + tree.sortByName(); + } +} + + + diff --git a/src/family_tree/writer/FileHandler.java b/src/model/writer/FileHandler.java similarity index 96% rename from src/family_tree/writer/FileHandler.java rename to src/model/writer/FileHandler.java index 1d535c5bd7..85e6f0790a 100644 --- a/src/family_tree/writer/FileHandler.java +++ b/src/model/writer/FileHandler.java @@ -1,4 +1,4 @@ -package family_tree.writer; +package model.writer; import java.io.*; diff --git a/src/family_tree/writer/Writer.java b/src/model/writer/Writer.java similarity index 79% rename from src/family_tree/writer/Writer.java rename to src/model/writer/Writer.java index 67088c8319..524a047fa6 100644 --- a/src/family_tree/writer/Writer.java +++ b/src/model/writer/Writer.java @@ -1,4 +1,4 @@ -package family_tree.writer; +package model.writer; import java.io.Serializable; diff --git a/src/model/writer/tree.txt b/src/model/writer/tree.txt new file mode 100644 index 0000000000000000000000000000000000000000..f9c7de3bba251152cf3cdb7145d42d293700fb1d GIT binary patch literal 798 zcmZ8fF>ljA6n=5sq%EOp5{fECUD&aIKqn+9ZDqtzR)(WKl0&v*&KK%3RJ3A1EDRL` z5{R-QhNw^}fS6e?u=5Wpb|&6?wn&19(|zxK-}}CM@`rPn%QST2ekdbvL&PfDzoVs` zy8eEC``n!LM-DjKFy9-*BFVPG02cTfsLU8x4jza{!XFqF`BYiYQz$+cr?;u;QPaDo zwb&;{e)wbU)pzlx3Y9HzGxb=q#NBgIN1|pCiA}ssa=rTNr~Cf$pTvQMZEzGtxTmz~ zT^B|gSScbH6-z(p?}~`Z>jBK~_EZ#VnLLC8sGug4qR>#G7C`MjVyO+Z1Gez%U-=ckOhvO%9G=70-*&f?7q#((D avLpMMd8;MA&HQ6#Kf^IRpVQK@n*Rk~LF!-t literal 0 HcmV?d00001 diff --git a/src/view/commands/AddHuman.java b/src/view/commands/AddHuman.java new file mode 100644 index 0000000000..dc84cbbddf --- /dev/null +++ b/src/view/commands/AddHuman.java @@ -0,0 +1,17 @@ +package view.commands; + +import view.ConsoleUI; + +public class AddHuman extends Command { + public AddHuman(ConsoleUI consoleUI) { + super(consoleUI); + description = "добавить члена семьи"; + + } + + @Override + public void execute() { + + } + +} diff --git a/src/view/commands/Command.java b/src/view/commands/Command.java new file mode 100644 index 0000000000..73f9599ddc --- /dev/null +++ b/src/view/commands/Command.java @@ -0,0 +1,18 @@ +package view.commands; +import view.ConsoleUI; + +public abstract class Command { + String description; + ConsoleUI consoleUI; + + public Command(ConsoleUI consoleUI) { + this.consoleUI = consoleUI; + } + + public String getDescription() { + return description; + } + + public abstract void execute(); +} + diff --git a/src/view/commands/Finish.java b/src/view/commands/Finish.java new file mode 100644 index 0000000000..d2250fdb4f --- /dev/null +++ b/src/view/commands/Finish.java @@ -0,0 +1,15 @@ +package view.commands; + +import view.ConsoleUI; + +public class Finish extends Command { + public Finish(ConsoleUI consoleUI) { + super(consoleUI); + description = "Завершение работы"; + } + + @Override + public void execute() { + consoleUI.finish(); + } +} diff --git a/src/view/commands/GetHumanInfo.java b/src/view/commands/GetHumanInfo.java new file mode 100644 index 0000000000..6f35d9579f --- /dev/null +++ b/src/view/commands/GetHumanInfo.java @@ -0,0 +1,16 @@ +package view.commands; + +import view.ConsoleUI; + +public class GetHumanInfo extends Command { + public GetHumanInfo(ConsoleUI consoleUI) { + super(consoleUI); + description = "Получить список членов дерева"; + + } + + @Override + public void execute() { + consoleUI.getHumanListInfo(); + } +} diff --git a/src/view/commands/Save.java b/src/view/commands/Save.java new file mode 100644 index 0000000000..debf69f9fc --- /dev/null +++ b/src/view/commands/Save.java @@ -0,0 +1,16 @@ +package view.commands; +import model.writer.FileHandler; +import view.ConsoleUI; + +public class Save extends Command { + public Save(ConsoleUI consoleUI) { + super(consoleUI); + description = "сохранить в файл"; + } + + @Override + public void execute() { + consoleUI.save(); + } + +} diff --git a/src/view/commands/SortByAge.java b/src/view/commands/SortByAge.java new file mode 100644 index 0000000000..4a0e05d01e --- /dev/null +++ b/src/view/commands/SortByAge.java @@ -0,0 +1,15 @@ +package view.commands; + +import view.ConsoleUI; + +public class SortByAge extends Command { + public SortByAge(ConsoleUI consoleUI) { + super(consoleUI); + description = "Сортировать по возрасту"; + } + + @Override + public void execute() { + consoleUI.sortByAge(); + } +} diff --git a/src/view/commands/SortByName.java b/src/view/commands/SortByName.java new file mode 100644 index 0000000000..d23dcfae54 --- /dev/null +++ b/src/view/commands/SortByName.java @@ -0,0 +1,15 @@ +package view.commands; + +import view.ConsoleUI; + +public class SortByName extends Command { + public SortByName(ConsoleUI consoleUI) { + super(consoleUI); + description = "Сортировать по имени"; + } + + @Override + public void execute() { + consoleUI.sortByName(); + } +} From 546a61538eb846d40e1b95bb1508ec82c8a701fd Mon Sep 17 00:00:00 2001 From: Iryna Brezovskaya Date: Wed, 4 Sep 2024 19:11:21 +0300 Subject: [PATCH 7/9] =?UTF-8?q?main.java=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D0=B0=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D1=83=20=D0=B8=20=D0=B8=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=20MVP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/FamilyTree/FamilyTree.class | Bin 0 -> 3363 bytes .../model/FamilyTree/HumanIterator.class | Bin 0 -> 1080 bytes .../homeWork/model/human/Gender.class | Bin 0 -> 1022 bytes .../homeWork/model/human/Human.class | Bin 0 -> 7055 bytes .../homeWork/model/human/TreeNode.class | Bin 0 -> 612 bytes .../comparators/HumanComparatorByAge.class | Bin 0 -> 1074 bytes .../comparators/HumanComparatorByName.class | Bin 0 -> 1123 bytes .../homeWork/model/service/Service.class | Bin 0 -> 2303 bytes .../homeWork/model/writer/FileHandler.class | Bin 0 -> 1648 bytes .../homeWork/model/writer/Writer.class | Bin 0 -> 149 bytes out/production/homeWork/model/writer/tree.txt | Bin 0 -> 798 bytes .../homeWork/presenter/Presenter.class | Bin 0 -> 1069 bytes out/production/homeWork/view/ConsoleUI.class | Bin 0 -> 2787 bytes out/production/homeWork/view/MainMenu.class | Bin 0 -> 1727 bytes out/production/homeWork/view/View.class | Bin 0 -> 162 bytes .../homeWork/view/commands/AddHuman.class | Bin 0 -> 516 bytes .../homeWork/view/commands/Command.class | Bin 0 -> 540 bytes .../homeWork/view/commands/Finish.class | Bin 0 -> 565 bytes .../homeWork/view/commands/GetHumanInfo.class | Bin 0 -> 615 bytes .../homeWork/view/commands/Save.class | Bin 0 -> 554 bytes .../homeWork/view/commands/SortByAge.class | Bin 0 -> 588 bytes .../homeWork/view/commands/SortByName.class | Bin 0 -> 586 bytes src/Main.java | 8 +- src/model/FamilyTree/FamilyTree.java | 3 + src/model/human/Human.java | 3 + src/model/service/Service.java | 5 +- src/presenter/Presenter.java | 38 +++++++ src/view/ConsoleUI.java | 105 ++++++++++++++++++ src/view/MainMenu.java | 40 +++++++ src/view/View.java | 6 + 30 files changed, 204 insertions(+), 4 deletions(-) create mode 100644 out/production/homeWork/model/FamilyTree/FamilyTree.class create mode 100644 out/production/homeWork/model/FamilyTree/HumanIterator.class create mode 100644 out/production/homeWork/model/human/Gender.class create mode 100644 out/production/homeWork/model/human/Human.class create mode 100644 out/production/homeWork/model/human/TreeNode.class create mode 100644 out/production/homeWork/model/human/comparators/HumanComparatorByAge.class create mode 100644 out/production/homeWork/model/human/comparators/HumanComparatorByName.class create mode 100644 out/production/homeWork/model/service/Service.class create mode 100644 out/production/homeWork/model/writer/FileHandler.class create mode 100644 out/production/homeWork/model/writer/Writer.class create mode 100644 out/production/homeWork/model/writer/tree.txt create mode 100644 out/production/homeWork/presenter/Presenter.class create mode 100644 out/production/homeWork/view/ConsoleUI.class create mode 100644 out/production/homeWork/view/MainMenu.class create mode 100644 out/production/homeWork/view/View.class create mode 100644 out/production/homeWork/view/commands/AddHuman.class create mode 100644 out/production/homeWork/view/commands/Command.class create mode 100644 out/production/homeWork/view/commands/Finish.class create mode 100644 out/production/homeWork/view/commands/GetHumanInfo.class create mode 100644 out/production/homeWork/view/commands/Save.class create mode 100644 out/production/homeWork/view/commands/SortByAge.class create mode 100644 out/production/homeWork/view/commands/SortByName.class create mode 100644 src/presenter/Presenter.java create mode 100644 src/view/ConsoleUI.java create mode 100644 src/view/MainMenu.java create mode 100644 src/view/View.java diff --git a/out/production/homeWork/model/FamilyTree/FamilyTree.class b/out/production/homeWork/model/FamilyTree/FamilyTree.class new file mode 100644 index 0000000000000000000000000000000000000000..fa9f61ea250cb30f55e0fc9abd6ba721477540f0 GIT binary patch literal 3363 zcma)8+fo!)6kRD71#|s$4018ARID!g+U}BPHXrXnOAv2ANxyRh^ zm#5?heBmKhDHO3P$(vRAgS_P>KanyqYxn87fM{7%^_)JvFKex{_dfjb-!H!c=*15@ zd>S@iHm{n|dB;vhdomewA#P`#5Hth~l%P~YX{VjCoo)^O#-_0lf+*7wl5b%RJ7&{U zRx;Xe&f3X^(TrskEg88nUWhGWV-jEk0y@eyY;?aR&D3;sc=EE9aLO2aqk&DR)KE4v zKWnDMhlXpTgi(bpI;st9MU95?)k!o26X}#=+NrFDEgpoTG_j@&5@5T59pddbr=}!x zoq?U$MQ1m2c3?__HW)@d8g%S2@C^29s8V!Yi>S~YB7F@dS<4aoK;xiNXup9*G-)sx zdo+F4%vdRhV74{J*9+jP5=6v6i#Tm?o%&|%`;N;#nQX3_OPp4V48Ib0!+}88bU%UFRY2@G09-bQQb8eugW&!WbD**Ovf1wTMNacwtMHPpOpzAjzAD+S;h{}t0N>E=M9Wtlw0Q9oR#9i zwH8;27uHkP<+Um#g{#7tfpNS<8M5{bRshu*kjNJ#^2-`(8wVcmFNPPz@YOY$RU5<} z?-|7FtV)-|q=AHp6LiuFoett?DXy`eQsY?#O;(dG(S6O zWkw|^BgWGSGdX555#PPdfHPwgN1fN4>kcyptzPZBFqiXhc#>ldQcba_1*}bDPZ$dq zsFpixBzdvwxzR&Zep2Sl7;((Rl{4m?N2#=t+fDQ@Wd(5faN+JSTS-DDiw0kIlBtz| z>l8VKmTGVdg_B3Ejhm}}m5 zd|u~H9Dc3@d3dVD9ATOLB8GOw-4P+ zzS1_2%tr*zJJlnz$lm}hBBao&VFiaYoM~A>yM`Z8!v%ZdchnEH^80bJy7lmHQCUH+ zbX}VWxEcEq;j_hsxtr?mqDmhVoSZ`>4>(c;xL|cNZ>6A%RSr5&`vD9cNB=>c$KVrU z<^}ID_|0R`PK3Q0?jvwpt)9r`AYHp0z@ZL&rq^WWe)NlUG)1wCIfY4ZGQwKN)2u8I_e(waP7x OsaD_OJAU=y`~Lx^g{gA@ literal 0 HcmV?d00001 diff --git a/out/production/homeWork/model/FamilyTree/HumanIterator.class b/out/production/homeWork/model/FamilyTree/HumanIterator.class new file mode 100644 index 0000000000000000000000000000000000000000..efbb0b0ba4379ab05389b1e8f56f0d297bd18133 GIT binary patch literal 1080 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 P?Z>?+*E3YTilOPh3#|^J literal 0 HcmV?d00001 diff --git a/out/production/homeWork/model/human/TreeNode.class b/out/production/homeWork/model/human/TreeNode.class new file mode 100644 index 0000000000000000000000000000000000000000..c283537f3a679adf99e21d35fa49767a15ed5553 GIT binary patch literal 612 zcmZWmO;5r=6nu+7`4B|}@!M;Av3DgTYC-}*G->0(+d?;GNokX^_25tQ;1BRe8E4x- zVtZ)XnKy6d^}V0puWurHq#J`ujJoT{6M?-<);zS`Scn<0L1jkm760INz(e1DnXkk` z8B~QnWo2YLB9=UmpL`w&MwN|FV~uV{#kS zlQ~fmFT_ad{kFEJxz)?V9T0=3f=f1VD}!pJZ&s&9`fk!bsx4GYbO8P^hud_tt9MX8 e&fzZgQlAs*?{ufoo#pU3U8EUV(j{G`==u+NCx;&Z literal 0 HcmV?d00001 diff --git a/out/production/homeWork/model/human/comparators/HumanComparatorByAge.class b/out/production/homeWork/model/human/comparators/HumanComparatorByAge.class new file mode 100644 index 0000000000000000000000000000000000000000..f2842ee4546d3a74c14a5b54f78a2d5caefae942 GIT binary patch literal 1074 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 avLpMMd8;MA&HQ6#Kf^IRpVQK@n*Rk~LF!-t literal 0 HcmV?d00001 diff --git a/out/production/homeWork/presenter/Presenter.class b/out/production/homeWork/presenter/Presenter.class new file mode 100644 index 0000000000000000000000000000000000000000..62d0afaf79593e214da6e0bb8e836183f50d02d5 GIT binary patch literal 1069 zcmZuvYflqF6g|@xwvTD4eehCV0@@a3eQQ!f0wzR~4H&CU{J4~{E@`)9yDjl&nFvHp z`~m(b!(-L* z1twoRuH$bB#4FWi3Q434q$M(t0>u+g^_A-@&wO|JB#;<7>Qo?O>1;L`>IQNG$e(^_$=-}C&PuiI^vCdaJATrfvl z`ELhZ+qIm&zvq7LX~=DfJNjdK1lhN{#ALB3v4mv-d5O{W0;NjTx^ko8dyd<#XK)v* z2G%6jagWW%6LQ=WR`}a)|5SOLwQ>_&ZR&OviKLhc5c?vfL2~0=G+zS-Abcc6t zw;9DAO>6W9UQ6vdT1IYs+nd@VtkC)x7b?ad7bAG$T{2HV@Lyxx;OQgcL0!3a0a4pH zgHij1?57J%ogx1%fIVO=Ai*dZvq&L_5~lEwZ>C3JY{KLTC_da!Wl`%ywyDRhnK^?-GGR6n*- U;%UID?RbXg6f5w8j4{0Y2m4>S_y7O^ literal 0 HcmV?d00001 diff --git a/out/production/homeWork/view/ConsoleUI.class b/out/production/homeWork/view/ConsoleUI.class new file mode 100644 index 0000000000000000000000000000000000000000..102c6e4e18a095e33bd9a18b191e4968128c0649 GIT binary patch literal 2787 zcmZ`*TUQfT6#h<#ObEj*2qJ0=wI~ENSgls^hE!{6K;)8E@X{d;Fp^B@WCCh$URt%a zPkrg)xetBuL0JZEUG)d_DfuaV?`r#PS5`7-_MG#5d+%@WJ^AyW-(Lbai64XT zp+=0;hKu0vg z9MR2e5IyLXgne|#BP@mCvG%Ljh26wS@qj>+>sAqgR6#^k3}7!cNoOfhIj>`uVV3i{ z5Bn9oui^j>lC7BgiapHRl01==;&`cd#HTcdIZuCrjO&n!!?HLwEa=H(T3U{%I4Uj7 z3s1Xowc@yn6Vj^a*Y!l!)&n>x(4GG||2V&v&lPSJ9^`ZRKl0D>xvs)38lU7}7VZ=t zN)0|#amoSAq%Hg8jiGs6T0c^8Mp}cebyQ0^=8sjJmFDJo-9D2|X=cpG*imyX9l(gd zW)ePi@Yf2r3wQEsg}eFRc+GXoLOZ8o4Ce&`rheUy8Ky3%7iFce`4{=; zUDP$_s?60(Dx81D#pA;LqT~veSudpq6R3}lj!jKoIW<0hZd@Sre+k$+vNLSWwBuSb zOGo^}>8rdnN!>=Xsaf5c)Mk^kgktH0mW*qbA@4n--(D~>%!1oK! z*uFSVPo%R}LO*Rte;Z5Q?2%oGZpz_<6Jo; zcx~cd&TjtR?V)s4)^)t^S2QAZiz^`Er}ZGc4&xxhijOevh$7P0d~;IoqWCZ zR^T?4lEC3b3@N|?UL{(9E^k}Ma2dxz3G zjSC1mAGFSmp=LO^AfGUFABZ!kgCM2|u(O8(ZF}{k9 z{^y7v4R2k?#Z}bvp+l#Ejb@m%zHTDQpf){*+K5#AMx*yZ}XieA$sn5odKSinB{Ch(A65j|4{*x z;W-Qmj6Ky4^jt%?>$&^8Pff!W7+SV$%Uu-+r_xmg!vfnSA~Lb z6ftNDMl_7#oWRI|Wqy_`>y}+M?T$dqaGFisu1P*ql}^J*B(LDSz=U@uAhvUBwc2Kf zXH<+~Txz_)^r@0ZDmZrAX_ya-`E)gg2}~-O(r^*e0;7YWsa>zt1QIDfXJ38!^dkjH zf$71#cTLyJTeLrMRLo#p!4-k2K~lwOx$Doi^rorevZTxlO#UBbtxm?AWIQi$VUV%G z?zZ<-T$9@=f%xEdML*!#>vA*8=%?eUxGl@BuXn6Q&1|X2AS`>Zs3C`20+F`$h3So~ zDED5}@Di3dOMQRewAqPds+jKU#Xzw9FkTS|EzZi5ugR0I3*78)olno79YIRTYgon# zHPlT`J29BhHy20#CbtGFF8C%^itm2VwyMN*W7tfp@xfNG8J}v9}Jqhf7mE$+|9Lu0iB`AxII-^W-*z}6$BDLal zT86n{$r49;1uRN0($z73K>!*?UV6SuT!m0Zg#US8`P?G%2iKDKRpt;Pa|~tY5YeBY zW`2ZvjIo{UA>v0!gs|-+GZMMfk6f0>Y(Fw5k*od4HHj?rBiAL8_K_bvW%v19K$K6F znqt(fv5FDed=z)M+UBRm!g+j&INl*^!q<&=@g7&K02Mr7RRRxD2&y|mm_ML=j0_9A zQ3|glWgSPjDew)JvdPGkE?(Hq#$WE@)$Od@OCI5k5PrpK7jJoB{I-039TMOE^INuy zjqe#S3@LXW!+cKgImzD?uJ9|jfNA9UWm+e)iA$c;S@NaRt1Ln`yBvt-&A|KEq1Z=6 zHH7|xsvsl�s%{cpQ}RI4C0__02?TJ%!~PT@+8dH|o_o$3D$-zE@9D1BsI^CGY`7 v(AV_9hxmwc1U|;CAkh-vf>ONkdrkU|tB_ahkhinoMb&&(5LMub$I|}=xt)GJ literal 0 HcmV?d00001 diff --git a/out/production/homeWork/view/View.class b/out/production/homeWork/view/View.class new file mode 100644 index 0000000000000000000000000000000000000000..1fa260a5011c07dcad8d8c03f8ae8b7127d3b4b1 GIT binary patch literal 162 zcmX^0Z`VEs1_mbvZgvJHMh4EZ%+zxIFd)Isz{1ENkd;`LsGpOVm#*)hl$DxX!pOi~ zP?VWh;+R)lo?67nAgbYmP!e1MluEbO3}a+qEiOqc0;*=#0P(nj^Gl18Q{6IiQh`>0 mOxFYHVq;_gssP%~z`z8wjFo|n0c0sV0|!t9s1PL1zy$#1S|iv1 literal 0 HcmV?d00001 diff --git a/out/production/homeWork/view/commands/AddHuman.class b/out/production/homeWork/view/commands/AddHuman.class new file mode 100644 index 0000000000000000000000000000000000000000..c9e1ce33e2eb0d0beea0bec2ea1bc5bb125c0e76 GIT binary patch literal 516 zcmZ9I%TB^T6o&r+q+H5H5WK8#V+0cW02mV`F_;iHDErb*a16Aj6m+W_H#`g&iNp&J z;A;9p##1gDUG!xBzh}OG&iVX$odGz(P7DDA6@*l*AcDJirW>2dw4h-Q# zVF~w$A-i9nw^VJbXLtDJS*6&FAi}UGpXE%B>VQcaHp9xoq#ETlMnHbXlr({t09XI+e z@q_!tCPS=Y_Z@?u3O_Qj;vD!7#V$=5pap{}^EXR1MXE;H_tjGQ1+0`&CWwybU1_RG z1gR?2A3>Z5>!k9Feq@j(MK`g59MNcX*j!S}6N@ib>TGw07Ym(Q>F4*=&lw2(vIfM%lrolu>5E6dM&6k!vZD=8ivKU^%lU=ln1%psV57{uXR++H%$O-22mOiwY&HY%tRiW3q0 zk-Sf27!YdiZ~0*o$za+e)Z3eY&WND(!-*hNTp5U~`ahhG{PQq))Dqo^}#o5=4s9V literal 0 HcmV?d00001 diff --git a/out/production/homeWork/view/commands/Finish.class b/out/production/homeWork/view/commands/Finish.class new file mode 100644 index 0000000000000000000000000000000000000000..9f71f44b1ec39400589af45cf93bbffc79d69690 GIT binary patch literal 565 zcmZ8e%TB^j5IqA(c@$JYd_UMJCbDybaUqG(gt$@J*K*Zspfzn#m&BEcAK-6@5j7_I z0j_R;$T+2_(aq$Z$(eJ`%>DR$eFw0GQVJ17HNSsHQh=rd=TOr z(vsdLA-`N7P-?d2+AVRoTU}`+kRX)Qow`>Ks_%FG8`W2D>P7XJ{4O_p>fOKgZ<9zN ztwGn3L6%VXYqiY=?kOSN6t3yWb5Gh9Ay+>$E{sacuudxbo+GW3Y9KSFV;ng`()^A= z82cYAg#sot6m?8uije)An|C@MT1J;w8iZKQZVJL^U0PzV(>@Z;fpOI0POfg7Myp{s zGQh)T%sZ7Xp%|L}94y?TO3=iWFgqTPr}piRV~TAVXr)8KTCf#Lyh((=0bD7#Ki6qS zJB)+AUS53$m2+Aj$=-l9!!?U2SB?1zq>;odqhiR%9OfDEWN;o$W;{sVsj z5CH@N?ws0x2vLqR!*VJ0dwTsPU7*D-)RA!Yp=klcuRHODdbhD5JwIw5 zpPR1|5*4Q=2suOAVzbrU74EjV+h8YeIF{L{nyw6W*G%|((j!bo?f*aP=dH>FO&kfU zMTMT{>qbah?%ynowCpp)p5oTD$ GP*xVGL1*Tu<=RieYs+y4i9nwZVZQx-LxN zZZKqu^*~ayOvh^T{hey58AFU=(ZBHe{TJBBSzTw$3csUPb-z0%gr!%D-og?U(&CMgY*NHeI$PX`RC|2@T# zMNUCp!xW|&lA|p%M4X^txL9fu)T|a&pQsCy?{+%}+}_g<+LTGxEkkcNbz4XtCL`{V za2T?KlE0gh6I2-#e#VWiOON9Xt7{v4OGqbGUa!h|uuL798rFt$2=B@=%ri?xzS%>dg!_qFc2$0VB!gxKgU5A UZs^9aL=-~d8|iR)2LJ#7 literal 0 HcmV?d00001 diff --git a/out/production/homeWork/view/commands/SortByAge.class b/out/production/homeWork/view/commands/SortByAge.class new file mode 100644 index 0000000000000000000000000000000000000000..e3afc6c7a5860142a1856244e9bc98ed586f7e9e GIT binary patch literal 588 zcmZ9JPj3=Y6vfX4%J63xDzyBuRq3v!Ms{v6CM`*$3F!vQei&ZpGsBFT8Cu;{-1bZK z8`MUv>0;cwdh>-E?*KyD&CNR}=l$-z@BO{M3jrKrCx--*8d5sekS1)NNpaq?-0|3S zhJLFvKM>Myq$7j3gz|287U{T-@7m(zeS5E;L5A>BU8yj-h^FdybfH3ZqpqWAblFgU zRM=n@s$2H2qp$3K%OZ!o23V7oO%$99B zqgF5Qq%&&Aq;(xnP$Fcl|3eYhACH;C1~xTRbW~9z7!SAL%l@isa(Ay!NOjyHk5KGN zM;uSa1L1uz2R1vUu4|cg-}Gdx7iKCrl|G?9@4I}#F zff_%EX{Y1z0djj`|myku#c*a1d59@K*g)VRROqt8sLuLUpAsqVwoSMg37> zMUB-jb)$Z(aTYpq8VmzV$P-G7_1dl%?0-MB27-|53E%eQmq5A>p=h33BdgK3oa072 z@T7Cxj8V%5UZP0I+K>GZmjCZi$12t|tQ*)siI86$fS~)&$|iSe9YU(*_PB?FDIIY* z9CU?uWOe(TDVnZr^*fd)V?9fzf)nWz%G1J6+nZ0*BxvHBu!jL7^tLKAnPVPFjvD(j$RUeYtk$P~yv7?= r{4-t^(+FEA&8WK*4P@%qDBNOYPMmhJ#LWDJX0VfeGa6x=RRWa iterator() { public void addHuman(E human) { + long id = human.getId(); + } } diff --git a/src/model/human/Human.java b/src/model/human/Human.java index 9cf9b73570..966a37580f 100644 --- a/src/model/human/Human.java +++ b/src/model/human/Human.java @@ -32,6 +32,9 @@ public Human(String name, Gender gender, LocalDate birthDate, LocalDate deathDat this.father = father; } + public Human() { + + } public long getId() { diff --git a/src/model/service/Service.java b/src/model/service/Service.java index 5e72b6a490..86e341ffdc 100644 --- a/src/model/service/Service.java +++ b/src/model/service/Service.java @@ -34,13 +34,12 @@ private void save(FamilyTree tree) { } - public boolean addHuman() { + public void addHuman() { Human human = new Human(null, null, null, null, null, null, null); tree.addHuman(human); - return true; -// FamilyTree tree = new FamilyTree(); + // FamilyTree tree = new FamilyTree(); // // Human grisha = new Human("Гриша", Gender.Male, LocalDate.of(1952, 12, 12), null, null, null, null); // Human masha = new Human("Мария", Gender.Female, LocalDate.of(1951, 1, 2), null, null, null, null); diff --git a/src/presenter/Presenter.java b/src/presenter/Presenter.java new file mode 100644 index 0000000000..4d05e719dd --- /dev/null +++ b/src/presenter/Presenter.java @@ -0,0 +1,38 @@ +package presenter; + +import model.service.Service; +import view.ConsoleUI; +import view.View; + + +public class Presenter { + private View view; + private Service service; + + public Presenter(View view){ + this.view = view; + service = new Service(); + } + + + public void sortByAge() { + service.sortByAge(); + getHumanListInfo(); + } + + public void sortByName() { + service.sortByName(); + getHumanListInfo(); + } + + public void getHumanListInfo() { + String info = service.getHumanInfo(); + view.printAnswer(info); + } + + + public void addHuman(String name, int age) { + service.addHuman(); + getHumanListInfo(); + } +} diff --git a/src/view/ConsoleUI.java b/src/view/ConsoleUI.java new file mode 100644 index 0000000000..99236a19aa --- /dev/null +++ b/src/view/ConsoleUI.java @@ -0,0 +1,105 @@ +package view; + +import presenter.Presenter; + +import java.util.Scanner; + +public class ConsoleUI implements View{ + + + private static final String INPUT_ERROR = "Вы ввели неверное значение"; + private Scanner scanner; + private Presenter presenter; + private boolean work; + private MainMenu menu; + + public ConsoleUI() { + scanner = new Scanner(System.in); + presenter = new Presenter(this); + work = true; + menu = new MainMenu(this); + } + + @Override + public void printAnswer(String text) { + System.out.println(text); + } + + @Override + public void start() { + hello(); + while (work){ + printMenu(); + execute(); + } + } + + public void finish() { + System.out.println("Завершение работы"); + work = false; + } + + public void sortByAge() { + presenter.sortByAge(); + } + + public void sortByName() { + presenter.sortByName(); + } + + public void getHumanListInfo() { + presenter.getHumanListInfo(); + } + + + + + private void hello(){ + System.out.println("Здравствуйте!"); + } + + private void execute(){ + String line = scanner.nextLine(); + if (checkTextForInt(line)){ + int numCommand = Integer.parseInt(line); + if (checkCommand(numCommand)){ + menu.execute(numCommand); + } + } + } + + private boolean checkTextForInt(String text){ + if (text.matches("[0-9]+")){ + return true; + } else { + inputError(); + return false; + } + } + + private boolean checkCommand(int numCommand){ + if (numCommand <= menu.getSize()){ + return true; + } else { + inputError(); + return false; + } + } + + private void printMenu(){ + System.out.println(menu.menu()); + } + + private void inputError(){ + System.out.println(INPUT_ERROR); + } + + public void save() { + } + + public void setMenu(MainMenu menu) { + this.menu = menu; + } + +} + diff --git a/src/view/MainMenu.java b/src/view/MainMenu.java new file mode 100644 index 0000000000..59ea10baaa --- /dev/null +++ b/src/view/MainMenu.java @@ -0,0 +1,40 @@ +package view; + +import view.commands.*; + +import java.util.ArrayList; +import java.util.List; + +public class MainMenu { + private List commandList; + public MainMenu(ConsoleUI consoleUI) { + commandList = new ArrayList<>(); + commandList.add(new AddHuman(consoleUI)); + commandList.add(new GetHumanInfo(consoleUI)); + commandList.add(new SortByName(consoleUI)); + commandList.add(new SortByAge(consoleUI)); + commandList.add(new Finish(consoleUI)); + commandList.add(new Save(consoleUI)); + } + + + public String menu(){ + StringBuilder stringBuilder = new StringBuilder(); + for (int i = 0; i < commandList.size(); i++) { + stringBuilder.append(i+1); + stringBuilder.append(". "); + stringBuilder.append(commandList.get(i).getDescription()); + stringBuilder.append("\n"); + } + return stringBuilder.toString(); + } + + public void execute(int choice){ + Command command = commandList.get(choice-1); + command.execute(); + } + + public int getSize(){ + return commandList.size(); + } +} diff --git a/src/view/View.java b/src/view/View.java new file mode 100644 index 0000000000..495198af16 --- /dev/null +++ b/src/view/View.java @@ -0,0 +1,6 @@ +package view; + +public interface View { + void printAnswer(String text); + void start(); +} From 1488def08ca3cc763edb152af7d8398324e0315d Mon Sep 17 00:00:00 2001 From: Iryna Brezovskaya Date: Thu, 5 Sep 2024 01:25:47 +0300 Subject: [PATCH 8/9] =?UTF-8?q?main.java=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D0=B0=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D1=83=20=D0=B8=20=D0=B8=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=20MVP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- out/production/homeWork/Main.class | Bin 403 -> 507 bytes .../model/FamilyTree/FamilyTree.class | Bin 3363 -> 3404 bytes .../model/FamilyTree/HumanIterator.class | Bin 1080 -> 1388 bytes .../homeWork/model/human/Human.class | Bin 7055 -> 7088 bytes .../homeWork/model/service/Service.class | Bin 2303 -> 3784 bytes out/production/homeWork/model/writer/tree.txt | Bin 798 -> 910 bytes .../homeWork/presenter/Presenter.class | Bin 1069 -> 1740 bytes out/production/homeWork/view/ConsoleUI.class | Bin 2787 -> 2888 bytes out/production/homeWork/view/MainMenu.class | Bin 1727 -> 1778 bytes .../homeWork/view/commands/AddHuman.class | Bin 516 -> 2600 bytes .../homeWork/view/commands/Load.class | Bin 0 -> 571 bytes src/Main.java | 47 +-------- src/model/FamilyTree/FamilyTree.java | 7 +- src/model/FamilyTree/HumanIterator.java | 17 +++- src/model/human/Human.java | 5 +- src/model/service/Service.java | 93 ++++++++++-------- src/model/writer/tree.txt | Bin 798 -> 910 bytes src/presenter/Presenter.java | 30 +++++- src/view/ConsoleUI.java | 13 ++- src/view/MainMenu.java | 2 + src/view/commands/AddHuman.java | 37 ++++++- src/view/commands/Load.java | 16 +++ 22 files changed, 162 insertions(+), 105 deletions(-) create mode 100644 out/production/homeWork/view/commands/Load.class create mode 100644 src/view/commands/Load.java diff --git a/out/production/homeWork/Main.class b/out/production/homeWork/Main.class index 665af7477bced6eaae3f4e36ba686e1f9ab9d8e9..fb7b29c7c385e9b80919116be56667ef50e58588 100644 GIT binary patch delta 291 zcmbQt{F|BU)W2Q(7#J9w8005%nP~ErWu}(vJLl&W=jWt`dU7$aGcbb)ZXO061~x_p z*5Z=Hq7rrnzKJ$1x}3={b&L!GKBzja85y`-E0R+SN-}|p*coIdo-?ZFWncnY#Q-FM zCNZ!9Nq!(tA4oF-X;!W642&DW(gHvdB+bAe#2^SHc_0daJYgV@lR<<*6le%YvnP-S z8Opnxfjx3N1E-JnHU=()A$$zXKuIwM4hC@s9wP=xuxVlt9YA4mpd<&-DH1>#Mg}P$ Qj|E6e1FRhQV{J0OF;9ehZ)- z&sNkabD0%`5^Ob*P-G|+pHNl!aoT}CoY5A{4K+g&B;7XbKnPtDtch4(B0d%!RWK@{ zPHUCj&bHBziV?_m6yv-D7ZBD;<=s+L^T`cO5y%QIN~ns&hC|`{j$mXgJl!7;h3Y#e zBf;q5L?|9i#NsN(VN+p6!hs4*YD<=#W(AkDMY&9x)|TaO+6&7YEn2YPp2B6A=&M3C zm0>~=oRDxuKhMBUXA25woz-?JmA*N$s}u!nCtoqH(#b(yUX!>+`}IF8H|UQM>~v>V zn^7tT8DT5Tw3a|dDQwuGqm<~Vs)52;1QW)~`WR36W(ZfXyh$gjQP1#Q>6YfScB`k4 znTdP845kmaaGRpDnCugn?3*Xw9l9sORM2Rk-zD5VaO>#rt<8kKX)R4MdJR=kO%mTD zOs>b1$>Yh%lZ~3sM2U4o4O6y;Te_$2eevh*!h2DUt_7w`(a7;o91J09V z(mt!MOqiQTL)Me1g)LD2-A}k2ev>*Car79@oLe@G6ET ebV0OoQ|58ll72o0m zXT{FM1zSl>36kjExOC%6H!fW04>0&RXKtBdabYHzx%b@fe&2V`J!jsRyeQG${d)Zd zzvY?apmt*bF&q8-_T(1*2Y^#{~gbG!j4DFW{&Qw5qr$P%s!ygsWqt)m@RX zSa>)#74933sJLW)bADAeRhpk%g-YPK`N8$pp~U*l*{m633~?y*Y=)nlE69Tn0tst8 z4iAl8$fEZIMM7}U2=G=dL-Z`du?Tg6<_=8KTch1TKJ6*M6r&^-mvMz=SO1D!qZu=M zoV01ee6E)EGDQwi0flg)2-zsMXbLS_Ek(mJ(jpV4*O*YQjT5o7Z_ua|*DZx&ce|K0 zqi(&6t;u~&HfIxV;3lEdoV+GEd2O23ZqYt+n^l)$zfHWA2w3c2+`A3-?;`{#=0_DO zpwl~OouQo0<%b)0NQFGy2E!6#+T04d)~Dc9S|^%=?%C6yT^l^M0F?1e*HfhR*+a4l1QxImie%LU@9O5%|5 zl18#LxPX9$HD%#S`AC-qM_5y!)#m$12jh%(EF(nq)*jM*9Z7U{>s7C?aS6u+lIZD{ zlNx~|!6noS%%O}1yUbjVR&=6U_nqP`^S?jqNrc&x6O(3*C*LT;UNmAKJJV-)-6I>~|Z6BQ~#R<5?vj)!&=by7|^8+iu% zUPeD1Y+wmd1(~hXf?QHew^H7^oN+|vY-T;bq#q*sbN{3_+K4~&pZq&e$CXaL_mF$` zuZYb1J-UWVS?84_>{a&WBM1YJWyw--Aa&7heF-B1&6%m_hKe5hazF(w|0+C^t*er$ fC)8w$eK``vk`l#bEXBEB5_G}zd5T$DR`Bc(KD^0_ diff --git a/out/production/homeWork/model/FamilyTree/HumanIterator.class b/out/production/homeWork/model/FamilyTree/HumanIterator.class index efbb0b0ba4379ab05389b1e8f56f0d297bd18133..0d25e734fa613843880faba6689c8c1d8c75faf5 100644 GIT binary patch delta 751 zcmZWm+iuf95It)rb?Q33q)<`{bju}i9B9I=TtcBjDo-d#R3Ie}2&=5xKw?L>Q}r$1 z5c!RNKmw^HKm~p0jX&T6c;W*Pvv!(Ps#adloS8XiX7)?!kFNjx_w5IO$5`v>-@7_e z$Qqc(Sq5#}_N!tyU{K9MUBfvB{?^{HOP!$6ELGi&&gS-dQ?!H=tnY4$cF=I06fQ7K zS6$w6J;6mB^>r+O8%Sb_;k5ZQB5B&rR%s*f8qQXw@NxnfTr!|u#+BYLUe7b+M_Df% zzte8JULf8)YYWeoLdO&f3`@^N%iR&&Jqq)N&mA}5!$KW7a1B>`e=EwY8J5`xC2NMi z*?c&ztY~9iR3EM?Znp@9&IAnFih?OjgW+0aFC#&A5+%aRguII~fhnsGW~uwotl~b> zpD3i_I^7v608u4~Y#eD!(z!v%92HU-ZsHdGr4`HECc7{St_*|A!yfLCMXy75Ieew& zyHaM1JYY7WHX?g&KrIPJh~&FVUlPixHAac|aDOn0PoN~pS)Xy{J<NV#VBv9wc(qg9S6ot>sq(+mpk=oYA)*7wabgX~qLU1GQvJqU`l`e#CT&du$&!Bk@QK7{j z(2d~2XYm=tGl|%Rgxq`XH_177zMQ9V=kxpJ4ZuD&ubo%NMG;jG0cMg|grc6ji(OTU z;v0FZf+$YzWKghsC+7#JR~G^*YIl9@8R;zCU$2b8~X^5BV%5RAA8xiBD`Q{)?dx9UXphM%3=#bEu vl=T34eKdgGwT^kUXG}}n^B}ugmQ)=jZKM1z$`BKkExh`-`Wn_rB{qHl@4F~? diff --git a/out/production/homeWork/model/human/Human.class b/out/production/homeWork/model/human/Human.class index 17eb892f675ffac0a5b986f47394793ea31b4d05..8d11b20559f6f1a5c05f768c5255131106f06156 100644 GIT binary patch delta 755 zcmYjPTT4`76kXrg$!1dLay;Wq;^@&)Yb0kd$U-OcLK<0O<%7`>6G3Q6rqhjz>ZOMS zB{mclq;?T{FsDq$lIkJ5_ZAdnm**aOi2gw991VInA8YM(_Fntj`x~iE*N&;x*(g@f zdy~hL(POEe!_mfpf#j+7p23t0A!Iq>LTL`l5Ehpza#^$@2bBmttQ z|37+68zf8FtRX+9ogh1Du`FwM!}+b+8Ai_9`fuvz$u8I|Zba2Z=`-TmCB}vrOFD-+ z-Vx}yEJ6P^?Fz?!ReJn;)D4;UPne@z<`|bY&fDBV4Q^vI?(iOWu@@8Q#XT7+IABb2 z1^4;q6ql6dG#>IPJd$exQ_2JTj9IFWsXn1PNA)Sy=TtN1JfknUhgY1*Yiz(9G~zAV V@Qx1e(S;9kG}xy;PX7p|)nCJ!nXCW+ delta 748 zcmXX@Nl#Nz7(KW3iLIscD+NRAD`-m%v_K*j2#5och@uh_H8?aHlQvE%h%uVr#)Tw~ zH@a}4Aey)U3szG_qb4d&8{$IaoVfHSxY6@2F5Z3TeCM0Lsiq4}qrz^39bpHS!jLgh z87o1RfG?XKN+*sDW)3Dga=G-0?##fT9T8Yf=j9GWVHA4AE+Ha?Nz2$`AA=$A5r74s z_)(W>XN~PQtXM?rYAKzDD}EoL2MEOLfUgkHEjsWwUs2ml{ZlX$}1q!h)G=<`fU8qnUQ3<{iJO1a0vPW&c+j{(BRtD04;vP}MT>++W?Dryu8yJK1{6V%B$y-ee3? zUa}#w<0iA3*UI}hXeVhorF5^J)P~7UE4Euth%+kZxE|Ba(mq0a+IEh6Jr5r)%I3gE z?FyH8RgMI9ifhXEPvDYqotM19i;Z%^F*M*NuQkrOZlNEyk;NT3QMO;7;2kIFd6yT; zb3@a-VnNOX4cQsoqZg?@r22^J4Am!8pHeLvFKB%U7hZ8svsi`K=)fCv;Vmn?Lm%GD N%jJi}hkF%M;vYNNNs!7uhyCXX?JG0%LMMy7c z+N7jSdQaOVZPTVVl3rsP*9(c-tIyM)*8iZt^?yih>3e2o+2vC8ftmTfb9>)&&UZfk z@!uOa0rcQb2ov7 z;&4;J=KCrH(5PV3eN2YXAaFJ)*yu@J${3EGiS!$$eq6H>rk)9+ML}ye6OSyB5cj*B zX(xmxv4`923ttA@+rm0V8=8?=qE~Q(}(doFJb`0AJ;vu>_o=a&~ zIIdZi?S#kmu$42-5VoN;gbs8D(4}H0x)n5d5R)Pvag`LTnb4g9#>{k{ShL{&6W$(H zu?LTELrZX*p_VI4>V}wXhAOg;s(1|h6a^w&q)@tnhRZ2+OU|`Dslr6cW3(vUyp&N-*fVacNEeOw6R4gMm>Ct>q7iSk zk*8Qr#S|`)?UXjD_u5umbH)rO$+xVdSx#2MI#J%Ai?tHOjPz%<*#4}F&k0i@GId%b zO-{BJU%;aQJgcC-RJFpE$UmpzOZYN7fZgJfB^|H|cI-+j4oEhO?^ zSMd#eljpUTPP4)lbgy=Ll^s({JTghM__mn%&N5B^G+RlaA8Ry-R}?624BuDr1L@MB zV|&)+taweu>oQwvvUbMlnK?3{%j%C*{8&~)-m2HrHN(b)r8&6_t8mZ#Cc%MKm_8V# z;|o0KPqScH-1^XC})-by?zz0I0lk36bL=%>YmX}P38;XRj1wZr$}5*4DVEPZ4Fo#Y=X?X zlh98;C&db)i4GA0;2yY-X;!wR8| z(Qk2WH+y=1>>=)n7oK|fEmEF!Wgk&jiRZ36sGG;ObB#N$;-j~^@@Q|uu2){iTJgot z-D7jOpm%W8Q{(JVX}Tu>)P?ekWq+ z#t3%dDMWZB*v--XFpcctgnR_gV=rFd?e9hGW8C|Bia+jh6ee$naTLG9?_CDp@Y#}F z{DEtVoAU-#*EiooAb|b<#@L6bSVwB#DUygg{1Ore8Td2T@p%P{3^kWA#N98B%`N!P=PP>1F*%a-|StgG>BdAvNfyaqOx5O%Q$zBSg> z_+62kTlgn|eoso@YcmhVF&6uAw(|fwdAZ$8MA=f6x-ZtQ+=Lu5wiSVL!&FG=I>G^VL#|c&+yY$vorw@>)CSdr)MsuWsXq%Wa&c jjnP$XR3cB$6)f9p5&^Bv^XEGL#IF$F{*1rk?`ZuWo>Rup literal 2303 zcmaJ@TUQ%Z7~LmOCWPUZaxIoZv27AAsa0tu6bh7E328M5g4aVbgsCB6O(s};^U38} z{sA9-a`~n%3$o|uRfu@IYM@F+UmxXWC-|RiW^*2ERbpRz7WHqcd{L%bIfnxD({tPu;ZX?R7T*;TYz+>*KIoO%Y(g>I$hlE7CL)WpjpW{q6huwt$f z+uSmu@q9{V?@HS^%UHC{Y&32b?AQr3hrg03yj%+%y*e(VkC~~$30(AID>jU!&~Qb^ zRa_JB%XHeocFIw%U$r^GwzI|>!UFB5i$7U3v&=An5UTtb5V%tMw)A`H$>A5JXQih- zhhLTsN{>sw@$gd*ZI4U89)4YV5>Wm_I-W}ZD*!( zG%L;HO7oplQoZ5&f2n><3J53ZyE>*ZL&bL9P3QEadNZxsGpA!--Ok!V-m)imCo+bz zF6f9WYrwT8bucSFmNy zUY6M+Nvfwf6#|WMGiM}W_|Dx|5?QS1M zUOqFKrRkUw-#0ovGIAoZqq!Y*JjS@fC^?%~i{TOn#2xX<7ek;<)xz6a0v9~*mp2-j zdqQVoDcW<+?hrVCLZEw<1@w$zJKyuUjXcX-a8{Z(6^4=>eEHJ?G-tY z%onYcp;j(&z12FT1|7ZJ4nA&vAAh+bAh77166nBvJmC3l=iI>gqGHt0?;Tn)P6W^z z*@rlQwz`kn_|f}EI#eOaXAsqVHuBj-qGq(vvP4T8!x@ZsvCOxQT916iIZ>ozdGA=x zD%bNG-sf47-yyo-J9vP=YOrA+O$(7doPQ4O2U>j&v-)>T@o=p>j5;F%@Z$q~==gNv zBM)tbXi8=CG1}rl{~p>`R2nW=16_b_0`xMGJ_oSJu{C=sFx*Q)-9$y=Bm7m?%ay#u zgp{C;19Ytl_h+ArIPx=kNcQS!u4^n>811-KR;~_@tC3hA;}aqaNX&Q)-xFV@F@As$ zyAg@^2MIj5q8Rq@+Ty@3cvIjTT;vDm^EtW_{eycLTj>u@D8KLi{geJvs)BCsx|s+t z%9`D#m@z~!j_a)bO-x{f|5Z?ZR7HrO-jSn9H10|C(`y|mN=wt)0N>we*AUV${1?k4 x)b{dZ5A&^h>34O`z9@v-!5ONUJ?^7FY3Dy&}%^2AxCh4iLm9sD~Ft8ODF$m`7r=;fSWt8S7=IMEW z$R}nu4(!;uh+*QEbBs)rn;BKacQOf96c;koF)#x)F@Uu)R1_3U{=n!Y&*qkzo0yYY zP{P1kT$WmrSO8YY3Q`CJjFV3?D%lp)fi&}#FtGSSl(M9!=Ao%%fM`Uup#TUbXE90D zZ(-%Y<^qthVnD0G=3%%H#U(6Y9(OrA&<6JDO#GO}AuD*nE>KYbGo8)7yeP9cBN4v^ OtjPLFv>+Y3`4s@a$7FN> delta 314 zcmeBUpT{;qnd5zz|J#xU`8y_Rn=!IXOwvYn7~?@zdx# z-pA;~%Ho@tlR8tm*m|+)!tM(jF6_Oqp`fAwtX{gHgn{eAoC_N+HeA?ou^-42xG?#` pR-h7~q6=Ft?6|NKtWE-|UKpfa`od(e@(!RmU<*J5ABd2s006ILX8`~J diff --git a/out/production/homeWork/presenter/Presenter.class b/out/production/homeWork/presenter/Presenter.class index 62d0afaf79593e214da6e0bb8e836183f50d02d5..f81e739ee340ca1162b95a277e49925ddf0083b5 100644 GIT binary patch literal 1740 zcmZ`)YflqF6g|@i3uRld<)H%N6Z%jW6;ND6@qwa^n4mR&TCxH8SmO%nZ11S?}^au=YJA01Rbi9VOwy`ZY z1A(4J*K>m2%GtetA+-lcl)9Ofn&)t;Pdbnp`AlZk0m&(X}Qh!FMTPk!=r8BhQNu? z;s|;M*O3&+6_2P}suA@8ODr%@bv^lfx3wYtm(E6$H~DIN(`nWm-&N1iWh&TmJIuKn zQ*N7Jt`;=^uOb4yR3XYft$DF&VnkrkSe>ZT1Wt9cJ=TPbwjQJWUx<&TSC_sWvI*Rl zv~*4nS%>&bEr`c%;V?9`GrJ=Wk`1xp`oWfhQgZ0_ITnF7b?F?~WY*ie{-#`UmA1L= zj9gWoILC%ga7+{YaTN54W5vA>g7Z4Zb)HYJkkod=mY`BbBi}4p)(e6n@_;74kifB0gFN`aTk1NmOml0kD>BDMh}s5B%p8% zjH(&bsAgy%p$av5@mQzhu*QfrPOOPoERJ}DwWh@Z3L&qFD)+(4H=Il0IK8vzrJ{Kb z@L|%0h+Z#4*;pi~z#Wt$@YM)BtH3M!n2uvQMc8SWC?0{$cD2l633oLtr#FHi{O@5o!m>0rkX95wum}mLQmatl|AWdjEJV6nh?y>tdy#WaIlumjtFPmz z%(C0&*fR4+&~jb0JN$@*UD#q1q!~|_;s>s?31|PK*#f@~w^<5XL(Yb7UCj!3pi4n0 aJj5g2odvAmvF@@0p74}n&{YOY;OQTnv_N!(-L* z1twoRuH$bB#4FWi3Q434q$M(t0>u+g^_A-@&wO|JB#;<7>Qo?O>1;L`>IQNG$e(^_$=-}C&PuiI^vCdaJATrfvl z`ELhZ+qIm&zvq7LX~=DfJNjdK1lhN{#ALB3v4mv-d5O{W0;NjTx^ko8dyd<#XK)v* z2G%6jagWW%6LQ=WR`}a)|5SOLwQ>_&ZR&OviKLhc5c?vfL2~0=G+zS-Abcc6t zw;9DAO>6W9UQ6vdT1IYs+nd@VtkC)x7b?ad7bAG$T{2HV@Lyxx;OQgcL0!3a0a4pH zgHij1?57J%ogx1%fIVO=Ai*dZvq&L_5~lEwZ>C3JY{KLTC_da!Wl`%ywyDRhnK^?-GGR6n*- U;%UID?RbXg6f5w8j4{0Y2m4>S_y7O^ diff --git a/out/production/homeWork/view/ConsoleUI.class b/out/production/homeWork/view/ConsoleUI.class index 102c6e4e18a095e33bd9a18b191e4968128c0649..7cf70a07fb8c78d4dab47ac4bc2b2afef43fbfab 100644 GIT binary patch delta 1233 zcmZvc%TE(g6vn?PGwpQRBBi!f6h*XBAht>(H5%nnArfn3Ax0NMstlyDElQz^FYx_- zrGJ476PIEP3m3XIZd|%G@!wG6cW0)vHEW#>wze0f@eG)8W*P}Xagm9EfrC}_h?+=7JV+FPY7(884hFRv@LAIi}3 zZE9=dJRm(MD%Tze zre^GKfe%{^M$C+}7|g%}p-Lm@p(W>yH#sCyV-yHF!oD7c~ zCgrh3(R|yDqMFgf(%z2 zLOnQW3(YWE#Q8b3)|@%EltnNl9AVoA92CDz8MGu9)XX_iqUoJs#%Ixjqjb&)+A)d* z#*F+9jv>mEXLxQnV7En5>9QAwFU1g5NWYQrVTLiMFd>Sp{ZTtd#S?@tfgJoeK|7qJ z9mWl^>8P;91Hz`GAb3rX0z^$>%0TJi1Q6ZuZTXlc; zoAxsMG)c^qqfd2fc~ErkcE#l-InVMhI3V?AOX4db^s^wRKbL6G#YTh9&@{6S$htxK WWpRO!akY_gk&L1%<0U0{@ai8~-k00@4S1oE1(T61G29?SK?J`) z@0u9@4UBT(g~l5-_-FWU5aW5HIH+S1S)^DsVwi+6&mBzi<#`3C$M4{GdHrC3si_K;6Wc1Vx_q~~qt-?eWYq$>$ z58OR7AMNIyi7?OW?!H;w+TbU${0$t2fjAO8jw6Xa96=c=Jmi~0R0BiU#3NocY@s6R zc|Q)F2Vj51+0rh~?eJcQU^?FO3@p+GBkk)XgB92ot{j3MOFKWpg{mk`(;#TVKn_v# zq8lgptWU9WRAQb`XFxaNq&$_BvXv_fN*6*r5As8K#86PGyMjh0WX-0PDRoSjX!^9G zw*&o@)PJ`!-r)Qu%hV4YsGsrm^l^y}#Srb{C-m%M`u{_l@qrwpiMufvo zT&x{1?h$r7s!$@*xz3>c$bZ|F+oDrH@-gbKF!*r>T}2OfZ2%KqeJ`h%;+to9?gcj} zNj7tN;jNRHy$x+20~VI3nZrEYt-JNe$w~2r1d{=#5WzH4oMDPJkL)i(T=Kw`^A-Vu z7lIZgY5{c*^)u41pso>fol(xQWL`lf160zptF=)vqAtt6hn<{~@J(WFDRXLXgpRvX zzu{z+gcsOpUD3Das^MjjPKo|SI$9@MF>>IJQm9F<8eZYG=#lToXjA7kTr7P?u~R+l aZ&!o=h9#xlaL{g;TY82N4R2Vk$Ok!ervA8fZ{IEEeFDx3w@$I0Q z!zM@QQ}~yPj|&Q4*P$^tchuw<$DQxWYC5UVJy93zcfr$6uTItvnw;URGpnO&*mg-;LK$wyMUzXU6oKW^)_8*si}WNd@(Dj`jF&Fi`**1~Xnb)DsB(mNq>^Hv|%xgn7-aFeXCDsGXg zu~+fQgUlxJ$qf=|-$2-%QKeV$f@Cc0pRSP1#)2m*oXW=BT)4`B<`Y8|&Us+)g6p1W z_43c>Sf$L^TVeF!YU&^$c8}OrT4*CeI|m8V&tCbmRz?MJwMM1hV30{}d#W=v)d9KU z6n8}JU8yqBzc3nztDg)AHqO1;9#geFLe_d2qurnXr!muAA^rbGJH2i9)5HO}Qs?$; z2yNdf#C=hrq^6E(Y|*25KwoWAQoIr^#`c+BNu<4P>)p&gx;$EQtE@(=$a!V?zmrvN A}`lO}a7h z2i%QoH*SoPXlkm7x^ctG-{R85k2$y3nv=|&nR(BgXXZ!vOW4}{{qZv}%KZ)NjmpLz z6xWNX#bR|KHNCb{sV~JRx6Lo3UlB7aa|j>IYipsVL0ta z6vkjeCy(jmaW`+I+eU0ol5w9KiM~^c$ab_4Ne$*C0pmTm+UyJ-7`bI`tvPW=iFOrNLS6%OGs=~Y)sBhde|k5 zU5wBzn~2HeyV0x((d)TyQ1GbpK6QvOZZadZw?t)Q{KDFTqkfW++yt}!9JBr$5e?WK zsFnUP<_GGG|KHDcZ`wVy3t1<9t-m4C+EawvLZL(x^GJJA;C^F@TpW&qS z#9Fr=TaTv|$rNcVkdT)9Di>ijN_X=EYP&&zpLVq>lI{ZC;CJG-EcJGz+>hJ0xK< z!xmdzGWAR}nbHh{7i4sxQ^HmiUFc@mT=(7eqRF!iEjl^uavbWp=(v$DndFme*&zk( z=oN4U8G6G_O(Ij`gjZC&itP-oxsqA$>!0z4Z@r+D~+rOzIj0l6@;MdH!Zg7UJ;mFJAD;U6_ggq+uBH9SEogM~BFOFvO z=5+!o969fO<~|DE!MhUPQ}I6bGi-X1pLougWsvh)p~#(e(=aFe_<*5j1Fi(oYW03B zxi~7m0-w9KvA`5f{jEvYZjbco~ zaTO;pUdy7XXL&T9OKF)A&7_2QZHO46^&t(Bq2flSPzKZ$qM2)En4af!`=FT-8OCpp;K-fqW=%2-T!gDXbv@a zv(Im)5~Uu;$10LIOK=vsIi6X|rfNh;1-_9Q6`aSX5%KI?K&71zzNaDGI5FnkZirsVUtJVw^9bNtjWQ0>#kT#D+m3UrAn=*He`JAbE07 zE;_2HyG6b(VphVO3LTfI$(vfyRkU>abYU`|rebo*wmaMeI6?jyhC|jvhl=V*T(DJb zAlMZDqDE*;)X~>oK}&{;oZuwMW}ghPuV0G7m1La6g(ebwOK(8FY#+URT8~HTr)*-(HRB=s8cre6N2o$dYZ~li~_=(O;A9F zmZh)dS-bD;J)g5C{%gR-VFvOc&*%kn&gn>Znrx_8DuOiE92?uE{9L3EY@!hXzSJ`0 zye(;Jsmlp1??Rv?bEQIxkLd!Ww%X123i2d?#h@2Y3&<~g^v;uXf@Gmr`v;c6`a7g0 z$d7HSEA-xkR`{bClGvp_Aa4vM%sXD$I%LuVk5|w>y@)N#=!q|4 zTgQ$vLIY*Ikr*ta{{iH!cr6Wa&e?U+|cv6|!y`YJdWlZ5h^tE^xo<`;^I znw1=sZKo1@2!Bu(2FeQJ(?M@g3i^WzV{93xVu4^_XBi*$Kfz=f(`9@S43xozr^{tz z#noFOu6_!g^zNiAZBxWqeC3 zADxxPcjR57(~`J}1yJ*06t`$sCjCC#CY?fO@4)x?flm98&U+i4ztAV4UBbYy=Na8h bmY_JYhjjMukc3fM03)=ZknYfjE%@mlf2KB) delta 205 zcmZ1>(!#=Z>ff$?3=9lT3{n%hJO$M*Y`L)S!o~|5E^NB6<6_grp2-Us#U{@8oV{Ea0U-kekCyg!21YF*_N@$@8-aW#1_2<+$G{9E*%??F zI2gDYxEKV1JTZuR1|bGvAP=aML4-k+fe{GB7{q}j$W(10W&~k`QEXrVey|ZdV74G5 O)C@)j37}dg21x*rNg%8M diff --git a/out/production/homeWork/view/commands/Load.class b/out/production/homeWork/view/commands/Load.class new file mode 100644 index 0000000000000000000000000000000000000000..0d6a2ddd96d86974fa587df1e6ec6c7d20c0076a GIT binary patch literal 571 zcmZ8e%TC)s6g@Wyahw=K!=to78+Ig>>K&UP7DPfIS>4cPZ|qSzm19?qlXh9P-L-pu z1H>ad1Rua^{6kgmIB6@oxteq4+;d+Kzi#dU>|&#e0*VGo7G_W;ERCf2N$sL zBBNego6K8yf;z$U|FlGy|G&v97O`Yt*}_w-5bVb@5K3WQu(;XmGU&vCAk4Wk5^sk6 zBayuIjzVVYZtQzu*Gr_vQ?iu4mjlA$q~zb#=?U5dLwpwgFy-XxVLVKHu_v{YslQ+A zd9cAV6!;k6NcsvKpE25Jta+>TY7A=CjSHBkx#~Gb8%2%=>no_i#44lZi5_cMXT+I$ qG3-Woft9K2R*r#6>l|~JSor5S>0*{W?cB{`CF`bcgqMs8X#589b%hE5 literal 0 HcmV?d00001 diff --git a/src/Main.java b/src/Main.java index a1fed2103b..a4bcaed767 100644 --- a/src/Main.java +++ b/src/Main.java @@ -16,57 +16,12 @@ public class Main { -//final static String filePath = "src/model/writer/tree.txt"; + public static void main(String[] args) throws IOException { ConsoleUI consoleUI = new ConsoleUI(); consoleUI.start(); -//// FamilyTree tree = load(); -// FamilyTree tree = testTree(); -// System.out.println(tree); -// save(tree); -// tree.sortByAge(); -// System.out.println(tree); -// tree.sortByName(); -// System.out.println(tree); } - - - -// private static FamilyTree testTree() { -// FamilyTree tree = new FamilyTree(); -// -// Human grisha = new Human("Гриша", Gender.Male, LocalDate.of(1952, 12, 12), null, null, null, null); -// Human masha = new Human("Мария", Gender.Female, LocalDate.of(1951, 1, 2), null, null, null, null); -// -// tree.add(grisha); -// tree.add(masha); -// Human gena = new Human("Геннадий",Gender.Male, LocalDate.of(1971, 4, 29),null,null, masha, grisha); -// tree.add(gena); -// Human sveta = new Human("Светлана", Gender.Female, LocalDate.of(1976, 2, 17), null, null, masha, grisha); -// tree.add(sveta); -// -// return tree; -// -// } -// -// -// -// private static void save(FamilyTree familyTree) { -// FileHandler fileHandler = new FileHandler(filePath); -// -// fileHandler.save(familyTree); -// -// } -// -// private static FamilyTree load() { -// FileHandler fileHandler = new FileHandler(filePath); -// -// return (FamilyTree) fileHandler.read(); -// -// -// } - } \ No newline at end of file diff --git a/src/model/FamilyTree/FamilyTree.java b/src/model/FamilyTree/FamilyTree.java index b9de82bb9d..18977c927e 100644 --- a/src/model/FamilyTree/FamilyTree.java +++ b/src/model/FamilyTree/FamilyTree.java @@ -59,7 +59,7 @@ public String toString() { public String getInfo() { StringBuilder sb = new StringBuilder(); sb.append("tree:\n"); - sb.append(humanList.size()); + sb.append(humanList.size()).append(" members\n"); for (E human : humanList) { sb.append(human); sb.append("\n"); @@ -79,13 +79,12 @@ public void sortByName(){ @Override public Iterator iterator() { - return null; + return new HumanIterator<>(humanList); } public void addHuman(E human) { - long id = human.getId(); - + add(human); } } diff --git a/src/model/FamilyTree/HumanIterator.java b/src/model/FamilyTree/HumanIterator.java index 80c90c3be2..088c9807dd 100644 --- a/src/model/FamilyTree/HumanIterator.java +++ b/src/model/FamilyTree/HumanIterator.java @@ -1,18 +1,18 @@ package model.FamilyTree; - +import model.human.TreeNode; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class HumanIterator implements Iterator { private int index; + private List humanList; - public HumanIterator(int index, List humanList) { - this.index = index; + public HumanIterator(List humanList) { + this.index = 0; this.humanList = humanList; } - private List humanList; - @Override public boolean hasNext() { @@ -21,6 +21,13 @@ public boolean hasNext() { @Override public E next() { + if (!hasNext()) { + throw new java.util.NoSuchElementException("No more elements"); + } return humanList.get(index++); + + } + public void remove() { + throw new UnsupportedOperationException("Remove operation is not supported"); } } diff --git a/src/model/human/Human.java b/src/model/human/Human.java index 966a37580f..532b350357 100644 --- a/src/model/human/Human.java +++ b/src/model/human/Human.java @@ -26,14 +26,15 @@ public Human(String name, Gender gender, LocalDate birthDate, LocalDate deathDat this.gender = gender; this.birthDate = birthDate; this.deathDate = deathDate; - this.parents = parents; + this.parents = new ArrayList<>(); this.children = new ArrayList<>(); this.mother = mother; this.father = father; } public Human() { - + this.parents = new ArrayList<>(); + this.children = new ArrayList<>(); } diff --git a/src/model/service/Service.java b/src/model/service/Service.java index 86e341ffdc..e9d6e60c9e 100644 --- a/src/model/service/Service.java +++ b/src/model/service/Service.java @@ -1,3 +1,4 @@ + package model.service; import model.FamilyTree.FamilyTree; @@ -12,68 +13,80 @@ public class Service { private FamilyTree tree; final static String filePath = "src/model/writer/tree.txt"; - public > Service(){ - FamilyTree tree = new FamilyTree(); - tree = new FamilyTree<>(); + public Service() { + this.tree = (FamilyTree) load(); // Загрузка дерева при создании сервиса + if (this.tree == null) { + this.tree = new FamilyTree<>(); + } } - - private static FamilyTree load() { + public static FamilyTree load() { FileHandler fileHandler = new FileHandler(filePath); - - return (FamilyTree) fileHandler.read(); - - + return (FamilyTree) fileHandler.read(); } - private void save(FamilyTree tree) { + public void save() { FileHandler fileHandler = new FileHandler(filePath); - - Serializable familyTree; fileHandler.save(tree); - } - public void addHuman() { - - Human human = new Human(null, null, null, null, null, null, null); - - tree.addHuman(human); - // FamilyTree tree = new FamilyTree(); -// -// Human grisha = new Human("Гриша", Gender.Male, LocalDate.of(1952, 12, 12), null, null, null, null); -// Human masha = new Human("Мария", Gender.Female, LocalDate.of(1951, 1, 2), null, null, null, null); -// -// tree.add(grisha); -// tree.add(masha); -// Human gena = new Human("Геннадий",Gender.Male, LocalDate.of(1971, 4, 29),null,null, masha, grisha); -// tree.add(gena); -// Human sveta = new Human("Светлана", Gender.Female, LocalDate.of(1976, 2, 17), null, null, masha, grisha); -// tree.add(sveta); -// -// return tree; - + public void addOrUpdateHuman(Human human) { + if (human == null) { + throw new IllegalArgumentException("Human cannot be null"); + } + + if (human.getId() == -1) { + // Adding new human + tree.add(human); + } else { + // Updating existing human + for (Human existingHuman : tree) { + if (existingHuman.getId() == human.getId()) { + existingHuman.setName(human.getName()); + existingHuman.setGender(human.getGender()); + existingHuman.setBirthDate(human.getBirthDate()); + existingHuman.setDeathDate(human.getDeathDate()); + existingHuman.setChildren(human.getChildren()); + existingHuman.setMother(human.getMother()); + existingHuman.setFather(human.getFather()); + return; + } + } + throw new IllegalArgumentException("Human with ID " + human.getId() + " not found"); + } + save(); } + private void updateRelations(Human human) { + // Обновляем связи с родителями и детьми + for (Human parent : human.getParents()) { + parent.addChild(human); + } + for (Human child : human.getChildren()) { + child.addParent(human); + } + } - public String getHumanInfo(){ + public String getHumanInfo() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("Список членов семьи\n"); - for (Human human: tree){ - stringBuilder.append(human); - stringBuilder.append("\n"); - } - return stringBuilder.toString(); + for (Human human : tree) { + stringBuilder.append(human); + stringBuilder.append("\n"); + } + return stringBuilder.toString(); } public void sortByAge() { - tree.sortByAge(); + tree.sortByAge(); } public void sortByName() { tree.sortByName(); } -} +} + + diff --git a/src/model/writer/tree.txt b/src/model/writer/tree.txt index f9c7de3bba251152cf3cdb7145d42d293700fb1d..05273494e2f3b33f5c8f12a633dc1bed4403d122 100644 GIT binary patch delta 447 zcmbQo*2g|UnPW#_>^7FY3Dy&}%^2AxCh4iLm9sD~Ft8ODF$m`7r=;fSWt8S7=IMEW z$R}nu4(!;uh+*QEbBs)rn;BKacQOf96c;koF)#x)F@Uu)R1_3U{=n!Y&*qkzo0yYY zP{P1kT$WmrSO8YY3Q`CJjFV3?D%lp)fi&}#FtGSSl(M9!=Ao%%fM`Uup#TUbXE90D zZ(-%Y<^qthVnD0G=3%%H#U(6Y9(OrA&<6JDO#GO}AuD*nE>KYbGo8)7yeP9cBN4v^ OtjPLFv>+Y3`4s@a$7FN> delta 314 zcmeBUpT{;qnd5zz|J#xU`8y_Rn=!IXOwvYn7~?@zdx# z-pA;~%Ho@tlR8tm*m|+)!tM(jF6_Oqp`fAwtX{gHgn{eAoC_N+HeA?ou^-42xG?#` pR-h7~q6=Ft?6|NKtWE-|UKpfa`od(e@(!RmU<*J5ABd2s006ILX8`~J diff --git a/src/presenter/Presenter.java b/src/presenter/Presenter.java index 4d05e719dd..f3933ccfb3 100644 --- a/src/presenter/Presenter.java +++ b/src/presenter/Presenter.java @@ -1,17 +1,20 @@ package presenter; import model.service.Service; +import model.human.Human; +import model.human.Gender; import view.ConsoleUI; import view.View; +import java.time.LocalDate; public class Presenter { private View view; - private Service service; + private Service service = new Service(); public Presenter(View view){ this.view = view; - service = new Service(); + } @@ -31,8 +34,27 @@ public void getHumanListInfo() { } - public void addHuman(String name, int age) { - service.addHuman(); + public void addHuman(Human human) { + service.addOrUpdateHuman(human); + getHumanListInfo(); + } + + public void save() { + service.save(); + getHumanListInfo(); + } + + public Service getService() { +return service; + } + + public void load() { + service.load(); + getHumanListInfo(); + } + + public void addHuman(String name, Gender gender, LocalDate birthDate, LocalDate deathDate) { + service.addOrUpdateHuman(new Human()); getHumanListInfo(); } } diff --git a/src/view/ConsoleUI.java b/src/view/ConsoleUI.java index 99236a19aa..f16c24358d 100644 --- a/src/view/ConsoleUI.java +++ b/src/view/ConsoleUI.java @@ -1,7 +1,9 @@ package view; +import model.human.Gender; import presenter.Presenter; +import java.time.LocalDate; import java.util.Scanner; public class ConsoleUI implements View{ @@ -50,7 +52,9 @@ public void sortByName() { public void getHumanListInfo() { presenter.getHumanListInfo(); } - + public Presenter getPresenter() { + return presenter; + } @@ -95,11 +99,14 @@ private void inputError(){ } public void save() { + presenter.save(); } - public void setMenu(MainMenu menu) { - this.menu = menu; + + public void load() { + presenter.load(); } + } diff --git a/src/view/MainMenu.java b/src/view/MainMenu.java index 59ea10baaa..5e3fb9b417 100644 --- a/src/view/MainMenu.java +++ b/src/view/MainMenu.java @@ -15,6 +15,8 @@ public MainMenu(ConsoleUI consoleUI) { commandList.add(new SortByAge(consoleUI)); commandList.add(new Finish(consoleUI)); commandList.add(new Save(consoleUI)); + commandList.add(new Load(consoleUI)); + } diff --git a/src/view/commands/AddHuman.java b/src/view/commands/AddHuman.java index dc84cbbddf..73b8c5e9d9 100644 --- a/src/view/commands/AddHuman.java +++ b/src/view/commands/AddHuman.java @@ -1,17 +1,52 @@ package view.commands; +import model.human.Gender; +import model.human.Human; import view.ConsoleUI; +import java.time.LocalDate; +import java.util.Scanner; + public class AddHuman extends Command { public AddHuman(ConsoleUI consoleUI) { super(consoleUI); - description = "добавить члена семьи"; + description = "добавить или изменить данные члена семьи"; } @Override public void execute() { + Scanner scanner = new Scanner(System.in); + + System.out.print("Введите ID члена семьи для обновления или оставьте пустым"); + String idStr = scanner.nextLine(); + long id = idStr.isEmpty() ? -1 : Long.parseLong(idStr); + + System.out.print("Введите имя: "); + String name = scanner.nextLine(); + + System.out.print("Введите пол (Male/Female): "); + String genderStr = scanner.nextLine(); + Gender gender = Gender.valueOf(genderStr); + + System.out.print("Введите дату рождения (YYYY-MM-DD): "); + LocalDate birthDate = LocalDate.parse(scanner.nextLine()); + + System.out.print("Введите дату смерти (YYYY-MM-DD) или оставьте пустым: "); + String deathDateStr = scanner.nextLine(); + LocalDate deathDate = deathDateStr.isEmpty() ? null : LocalDate.parse(deathDateStr); + + Human human = new Human(name, gender, birthDate, deathDate, null, null, null); + human.setId(id); + + + consoleUI.getPresenter().getService().addOrUpdateHuman(human); + + System.out.println("Член семьи добавлен или обновлен."); } + + + } diff --git a/src/view/commands/Load.java b/src/view/commands/Load.java new file mode 100644 index 0000000000..9c249a5ad7 --- /dev/null +++ b/src/view/commands/Load.java @@ -0,0 +1,16 @@ +package view.commands; + +import view.ConsoleUI; + +public class Load extends Command { + public Load(ConsoleUI consoleUI) { + super(consoleUI); + description = "Загрузить данные из файла"; + } + + @Override + public void execute() { + consoleUI.load(); + } + +} From 6336c23935e5a10d44472ca5188628b4329f4ddb Mon Sep 17 00:00:00 2001 From: Iryna Brezovskaya Date: Tue, 10 Sep 2024 01:33:10 +0300 Subject: [PATCH 9/9] =?UTF-8?q?main.java=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D0=B0=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D1=83=20=D0=B8=20=D0=B8=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=20MVP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/FamilyTree/FamilyTree.class | Bin 3404 -> 3438 bytes .../homeWork/model/human/Human.class | Bin 7088 -> 7137 bytes .../homeWork/model/service/Service.class | Bin 3784 -> 4394 bytes .../homeWork/presenter/Presenter.class | Bin 1740 -> 1923 bytes src/model/FamilyTree/FamilyTree.java | 14 ++++-- src/model/human/Human.java | 19 +++++--- src/model/service/Service.java | 34 +++++++++++++- src/model/writer/tree.txt | Bin 910 -> 910 bytes src/presenter/Presenter.java | 17 +++++-- src/view/MainMenu.java | 2 + src/view/View.java | 2 + src/view/commands/AddChild.java | 43 ++++++++++++++++++ src/view/commands/AddParent.java | 42 +++++++++++++++++ 13 files changed, 158 insertions(+), 15 deletions(-) create mode 100644 src/view/commands/AddChild.java create mode 100644 src/view/commands/AddParent.java diff --git a/out/production/homeWork/model/FamilyTree/FamilyTree.class b/out/production/homeWork/model/FamilyTree/FamilyTree.class index f1b1433cfa18ad74e2d44365418ece666f0681c7..a4580b653198fcf5ecc19b80d6db9394197c61a7 100644 GIT binary patch delta 542 zcmZ9J%S%E*7{$+AAF203K~IDzBhd0eR@zIjyjjr8Xpv!U0;Q605v`)KqKqE2xvK)# zZHrd!T(zoge?zOFtq65Yv65kC&K%Cn_x+d`>xcCrDRuV=$Qy}Wb#rSwzLQAFut8NY zi8cY#dOZH)Kix<%qd5-=dH|!^r>QAzcjYi9kcVx-okLK-nM0$5JIHRTkc8;{*V`lG zdK_?Vfq`oeI?xLbobbbq5voJFozT&5#Rbl&SO94paWAP;dIHDPzo`sU>2mC(8p|+t z&XWRN5lS8WJq7l=M@PaXr;EiU?DPD}y~LriPxk$cKw0GA6__WMPv92+`P?;p;dCva z6-K`4g&6~IU=Ty_AxO*+hO3YcLS9uM)heV~16fX$AlV~RWyVtK52K}s<_e^iwDgOB zmbGNt$6>+*>RGglSA+bI+ ztZgg|R;glVzUOo$LJ@4oZSJ6!Jf>3{b>Z)zQl3h!z%8C~DlN*c5gHJK)? zFj8x~MRR9u`{h*WaZz*q4fGJhh$+;+*Mw(-}3+hZf#fj+uRHmFdEvGW5G#BzT(0(wh8TzJ~eK9ny z`eWUlQVLPusG>^*sF=`p7oru%~Gfc9; p6w5^IJ>$kbOC58zZmziJMJMJ1az7JI*xx|)U^45Bo@6-$oufgWVjj!ZIR6#E=aj1xehengBVM@x{HWM+#smEBx85KPmO7u|XQL7i3I7|tyCoel& zgTrw|2uGSY3P&55Rpcl8$tIb!VBC*y3!gRj*!gTOdN-H znu_yPN*4ojqdtV%){6M?CYIs^ijUZiHn@nlmB<$y(ScP%( zgfmU_V<7L~(tx00(wXxNG*TyJ-_pnJ!gP&^wOFTZu*%LRGmPU!uEER1eKFd)A~*+c z58)jq&V`lFDz!9^7aFvk^K6@GvUG2dJ^N`S5hDnvzTxGeNej#k6P0F)!*(8J7&PK2Sm0^%;RZDXCxE7g@n|LP}+Cgi4 zoOxL^kQdc8vFDbHNY)$R2*jj;1EMQu77T;V3bjbxkc}hQY+_4Zpz=0+#(Swwi#6hIbg_v`#Hg%BPR9sCcmqBlz?TZ+t~X+Qxe(I1 zuQ`9n#D|6RK7`VtFRlpVBO<7CUkiTB#FcqL9phT?;|6M4@+C%#UTxwU5v?U=r(1kP zSa@zV@hN#0b~0MWFg{HyYD&tA*PGae&*%`(C*z#5G}m>io_*qTCT_ru43IHvqurTF z4_VGY(i!Dw!m(6wT?D<9-pCOr;`t5D$g$u!%?T zXueo@a)w?S%8W@LTFvw=sr;^`b*g{O#N$%w!>sfwA|zd&6x63?D*0U@JVSoo%Dp;k z+r4b&Aw0_`O4DQ}(Z@1qrIK5$!4#i7pMRoQb}Dl6giQOABWcT-%yQi7F{L!HB_&Nn zN7qvFz1+v`C8BP>(Qt330GDmtUV^4K_PN#8Plt3;btYAJGHv%xjt$z`)mpK7b)@LG zXa*|k-V8XSN!HrArO!5x=bvx;e{1G%QXk!XZi%{8(iK>|*)3MmdF;&jp5It{L~vc8 z)=)~;1X#8OLX{=fwm!!i+Sp@_yS54HgOh;>_s|CqnyS7e!PGH|NGWx^Ids}HfAtKQ zgj`lU`N{O8{Lzk;lGA)eIQE`*0@CRUQ^kpWqL-z8d)Q*VC%)_MQP>W@m zj5Fb6t#Pf+MA$HB2Ezy&l?*yV3TJK5sEQatBNQ^iY#~Oqf%&RnDGMdjn=%{igf5Y~ zX)U*gSmxORwt5rO71aBzu+qaRdt!cfCbMyJ+^fy>u2!;eHPhZle4WQ0dCPllxe%RJ zD%Hm}L{FPt>9n2gOj#2X_C&}qSx2Yo*9wy7E0sUHJy3u6!$E%YH$PU!*)=e@fZp;zdenBYjtyAjn@a z!RbU4nPz1IUo}Ow3Z+`T+Vl|q&POd;Nn(MbueWJ-=^OYSUUuOVTq*EXvAa=ydjUvx z2VY7>cfGi(u=xAu9Bp^;L=oA$Rc>SE*?HF;rFVpj}$y zyO5~BwV3Np-dcfycr1s-1A!ftJBY6XYk%e5cK$9w1CD1HEu|k$pbt7c)T0G6MDb$= zf`Ok9A%KeDJdXM5?ee(M<3_mAP ziPWt$gZMomL0YvFr*)I&!bdSHE?3Q#qo{i)>hc%=1XT2D`>iI$GnthAOv$rY57uB2 z)_DjeTtd~f>n~I-$tRM&^P+1})~Hv}9KzwV-MsoGAN&dfu6eyN(pVlN=laITuYDIc zmoFanUHqGZoxD4@mM>2FEY@W~=<^lKhkmpiB<%xY$SaS};)Uglv%ZV@CBg>`=8QrR=N42iczaz>8#Ye zE+p1PGhpeCl#e2oGgXfBJ?r<}+bT7oeClRs8tIo74bx@-n4 zX*7bx4;%cI<5Ol*>@q$3pq9Ks&pxVWSLxX&)GUWj7HR5g&qjdlJfqyqVtEUW#H~1ywV)R} za5iq|$DcbqzRkE63S$I+$3LiuAzz|gg)XH!;;TdIuk9x9>v~w-XU7*(gWdQn(7hdz z_-=fjqqvapcE!6nn<9}Mj}tp-@LfDu?NJ-IXh?VCO0?jgDyYJ&|B~eusy~{jcn$l9 z@L&iL>ErzBHI3AEA$7}Mkh+gs-%nBxkko@D^)N|2`aelY8S^K_?`tlpXDA`Txwh!~ z9pWGQzI7MAXz(y`j2_=*poh&dXYdPL3kQ1)Qi}A(8P9H9sD;~Ke_5uBYBSQS_ycgl9#@NTG HMbm!)4ecKr literal 7088 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 Me9Q3vPg-u{Kbd=CG5`Po literal 1740 zcmZ`)YflqF6g|@i3uRld<)H%N6Z%jW6;ND6@qwa^n4mR&TCxH8SmO%nZ11S?}^au=YJA01Rbi9VOwy`ZY z1A(4J*K>m2%GtetA+-lcl)9Ofn&)t;Pdbnp`AlZk0m&(X}Qh!FMTPk!=r8BhQNu? z;s|;M*O3&+6_2P}suA@8ODr%@bv^lfx3wYtm(E6$H~DIN(`nWm-&N1iWh&TmJIuKn zQ*N7Jt`;=^uOb4yR3XYft$DF&VnkrkSe>ZT1Wt9cJ=TPbwjQJWUx<&TSC_sWvI*Rl zv~*4nS%>&bEr`c%;V?9`GrJ=Wk`1xp`oWfhQgZ0_ITnF7b?F?~WY*ie{-#`UmA1L= zj9gWoILC%ga7+{YaTN54W5vA>g7Z4Zb)HYJkkod=mY`BbBi}4p)(e6n@_;74kifB0gFN`aTk1NmOml0kD>BDMh}s5B%p8% zjH(&bsAgy%p$av5@mQzhu*QfrPOOPoERJ}DwWh@Z3L&qFD)+(4H=Il0IK8vzrJ{Kb z@L|%0h+Z#4*;pi~z#Wt$@YM)BtH3M!n2uvQMc8SWC?0{$cD2l633oLtr#FHi{O@5o!m>0rkX95wum}mLQmatl|AWdjEJV6nh?y>tdy#WaIlumjtFPmz z%(C0&*fR4+&~jb0JN$@*UD#q1q!~|_;s>s?31|PK*#f@~w^<5XL(Yb7UCj!3pi4n0 aJj5g2odvAmvF@@0p74}n&{YOY;OQTnv_N getParents() { List list = new ArrayList<>(2); if (father != null) { diff --git a/src/model/service/Service.java b/src/model/service/Service.java index e9d6e60c9e..3a75e35984 100644 --- a/src/model/service/Service.java +++ b/src/model/service/Service.java @@ -77,6 +77,24 @@ public String getHumanInfo() { return stringBuilder.toString(); } + public void addParentToHuman(long childId, Human parent) { + Human child = findHumanById(childId); + if (child != null && parent != null) { + child.addParent(parent); + parent.addChild(child); + save(); + } + } + + private Human findHumanById(long id) { + for (Human human : tree) { + if (human.getId() == id) { + return human; + } + } + return null; + } + public void sortByAge() { tree.sortByAge(); } @@ -85,8 +103,22 @@ public void sortByName() { tree.sortByName(); } + public void addChildToHuman(long parentId, Human child) { + + Human parent = findHumanById(parentId); + if (parent != null && child != null) { + parent.addChild(child); + child.addParent(parent); + save(); + } + } + } + + + + + -} diff --git a/src/model/writer/tree.txt b/src/model/writer/tree.txt index 05273494e2f3b33f5c8f12a633dc1bed4403d122..b3fec4d2a6a19a6e915edddaac20067784210478 100644 GIT binary patch delta 22 ccmeBU?_=NK!OX