From 2fcfefe44b39303259329d5a67b60f22bd07b331 Mon Sep 17 00:00:00 2001 From: Bartosz Chyzy Date: Sat, 28 Mar 2020 11:33:42 +0100 Subject: [PATCH] Implementacja i testy --- Project1/.idea/.gitignore | 2 + Project1/.idea/description.html | 1 + Project1/.idea/encodings.xml | 6 ++ Project1/.idea/misc.xml | 9 +++ Project1/.idea/modules.xml | 8 ++ Project1/.idea/project-template.xml | 3 + Project1/.idea/vcs.xml | 6 ++ Project1/Project1.iml | 37 +++++++++ .../Project1/com/s434666/Main.class | Bin 0 -> 3642 bytes .../Project1/com/s434666/PersonTest.class | Bin 0 -> 1151 bytes .../Project1/com/s434666/PeselValidator.class | Bin 0 -> 2067 bytes .../com/s434666/PeselValidatorTest.class | Bin 0 -> 1322 bytes .../Project1/com/s434666/models/Person.class | Bin 0 -> 844 bytes Project1/src/com/s434666/Main.java | 70 ++++++++++++++++++ Project1/src/com/s434666/PersonTest.java | 20 +++++ Project1/src/com/s434666/PeselValidator.java | 23 ++++++ .../src/com/s434666/PeselValidatorTest.java | 31 ++++++++ Project1/src/com/s434666/models/Person.java | 19 +++++ 18 files changed, 235 insertions(+) create mode 100644 Project1/.idea/.gitignore create mode 100644 Project1/.idea/description.html create mode 100644 Project1/.idea/encodings.xml create mode 100644 Project1/.idea/misc.xml create mode 100644 Project1/.idea/modules.xml create mode 100644 Project1/.idea/project-template.xml create mode 100644 Project1/.idea/vcs.xml create mode 100644 Project1/Project1.iml create mode 100644 Project1/out/production/Project1/com/s434666/Main.class create mode 100644 Project1/out/production/Project1/com/s434666/PersonTest.class create mode 100644 Project1/out/production/Project1/com/s434666/PeselValidator.class create mode 100644 Project1/out/production/Project1/com/s434666/PeselValidatorTest.class create mode 100644 Project1/out/production/Project1/com/s434666/models/Person.class create mode 100644 Project1/src/com/s434666/Main.java create mode 100644 Project1/src/com/s434666/PersonTest.java create mode 100644 Project1/src/com/s434666/PeselValidator.java create mode 100644 Project1/src/com/s434666/PeselValidatorTest.java create mode 100644 Project1/src/com/s434666/models/Person.java diff --git a/Project1/.idea/.gitignore b/Project1/.idea/.gitignore new file mode 100644 index 0000000..5c98b42 --- /dev/null +++ b/Project1/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/Project1/.idea/description.html b/Project1/.idea/description.html new file mode 100644 index 0000000..db5f129 --- /dev/null +++ b/Project1/.idea/description.html @@ -0,0 +1 @@ +Simple Java application that includes a class with main() method \ No newline at end of file diff --git a/Project1/.idea/encodings.xml b/Project1/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/Project1/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Project1/.idea/misc.xml b/Project1/.idea/misc.xml new file mode 100644 index 0000000..bf392ff --- /dev/null +++ b/Project1/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/Project1/.idea/modules.xml b/Project1/.idea/modules.xml new file mode 100644 index 0000000..8c66cbc --- /dev/null +++ b/Project1/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Project1/.idea/project-template.xml b/Project1/.idea/project-template.xml new file mode 100644 index 0000000..1f08b88 --- /dev/null +++ b/Project1/.idea/project-template.xml @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/Project1/.idea/vcs.xml b/Project1/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Project1/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Project1/Project1.iml b/Project1/Project1.iml new file mode 100644 index 0000000..4df31a6 --- /dev/null +++ b/Project1/Project1.iml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Project1/out/production/Project1/com/s434666/Main.class b/Project1/out/production/Project1/com/s434666/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..d691362ba4998f82476fe58810fecf8e30ab8156 GIT binary patch literal 3642 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 D;9l!w literal 0 HcmV?d00001 diff --git a/Project1/out/production/Project1/com/s434666/PeselValidatorTest.class b/Project1/out/production/Project1/com/s434666/PeselValidatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6e97b2dd8f5e624defb11b1a0a71e3d79114adba GIT binary patch literal 1322 zcmaJ=e^1j;6g_WjtZYRXD9C_0RAfw{+q&)tzZA?!&;U9)!>MpCP%48fPiIcJ!tYC1pcUN*Q{R~v1LOjV7hO1!4#U@sW7-)j~_ z@;@c&+_I@m$l~^!4#V6@SGToGeyUj-@$BllVXL-g=tM&$%nPa2B|Xv}e`lDS5|^)f zt#DWQf$l2BOg5J-6${0ZLS6KboR^inOrb1;pky*~-rYvaaweB4mrI4LEMnK8j4Dbto6E>b zS;-M9&~dJqDJpW&M@>A5+hsc)Qf;S4sjcc4(ov(un-m)NImob*st$hY*|@nn6xuV4 zHdl2TTWs*37i16{yT@XZ_vTinR8Ji zy`VEbEYW+JrgucnI|HCKNP8Lme*v-px5eO8kby+5BnNFcpA4| uQR9E=+;QQAA5QvVtPcmGW)PwRaS}C8q83QhB8f^23EKXrphuJyz~kS*4G~-b literal 0 HcmV?d00001 diff --git a/Project1/out/production/Project1/com/s434666/models/Person.class b/Project1/out/production/Project1/com/s434666/models/Person.class new file mode 100644 index 0000000000000000000000000000000000000000..d97ed506f00bf5c7919e391aef1c9092bf3b8c6e GIT binary patch literal 844 zcmbVKT~E|d5Iwh_v|9xhP!{}HKftA;eQ>izF}@IdvB6DhNH#uoYr&F!khW{$8$U@C zHyRWD0sbiB%n} z!0X<{;r~0?Iv_&3#e2GM-cRy)f0B*k@@+Uy>7?x!QJ5ZtWy1CBP^&*AmB6|m6`5D{ zpY#WVftS&SwDN{=Srs|y&`(HEEwJ3%y2wkw4vI+`#jg^+rPWM5W;-0rY&Odnzs6F=M z+;HfrJ#+C^N~FnUu;*uYm;!EK+q! zeLCee_Zx)!a0U}R9zgYTI8 YOq~jtnIWeZB@3t7Fk>OGD!V#=0E#25xc~qF literal 0 HcmV?d00001 diff --git a/Project1/src/com/s434666/Main.java b/Project1/src/com/s434666/Main.java new file mode 100644 index 0000000..5b2702c --- /dev/null +++ b/Project1/src/com/s434666/Main.java @@ -0,0 +1,70 @@ +package com.s434666; + +import com.s434666.models.Person; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStreamWriter; +import java.util.Map; +import java.util.Scanner; +import java.util.TreeMap; + +public class Main { + private static PeselValidator peselValidator; + + public static void main(String[] args) { + peselValidator = new PeselValidator(); + + var people = readPeople(); + if(saveToFile(people)) + System.out.println("Pomyślnie zapisano liste do pliku"); + else + System.out.println("Nie udało się zapisać listy do pliku"); + } + + private static Iterable readPeople(){ + var people = new TreeMap(); + var scanner = new Scanner(System.in); + + while (true){ + System.out.println("Miasto: "); + var city = scanner.nextLine(); + System.out.println("Imię: "); + var name = scanner.nextLine(); + System.out.println("Nazwisko: "); + var surname = scanner.nextLine(); + System.out.println("PESEL: "); + + var pesel = scanner.nextLine(); + if(peselValidator.validatePesel(pesel)) + people.put(pesel, new Person(city, name,surname, pesel)); + else + System.out.println("Niepoprawny PESEL! Ta osoba nie zostanie dodana do bazy!"); + + System.out.println("Czy chcesz dodać koleją osobę? y - tak"); + if(scanner.nextLine().trim().toUpperCase().charAt(0) != 'Y') + break; + } + + return people.values(); + } + + private static Boolean saveToFile(Iterable people){ + var file = new File("lista.txt"); + try { + file.createNewFile(); + FileOutputStream fileOutputStream = new FileOutputStream(file); + BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream)); + + for (Person person : people) { + bufferedWriter.write(person.print()); + bufferedWriter.newLine(); + } + bufferedWriter.close(); + } catch (Exception ex){ + return false; + } + return true; + } +} diff --git a/Project1/src/com/s434666/PersonTest.java b/Project1/src/com/s434666/PersonTest.java new file mode 100644 index 0000000..23f5d1e --- /dev/null +++ b/Project1/src/com/s434666/PersonTest.java @@ -0,0 +1,20 @@ +package com.s434666; + +import static org.junit.jupiter.api.Assertions.*; + +import com.s434666.models.Person; +import org.junit.*; + +public class PersonTest { + @Test + public void personPrintCorrentString(){ + var city = "Warszawa"; + var name = "Andrzej"; + var surname = "Nowak"; + var pesel = "763648363842"; + var person = new Person(city,name,surname,pesel); + var personPrint = String.format("City: %s, Name: %s, Surname: %s, PESEL: %s", city,name,surname, pesel); + + assertEquals(person.print(),personPrint); + } +} \ No newline at end of file diff --git a/Project1/src/com/s434666/PeselValidator.java b/Project1/src/com/s434666/PeselValidator.java new file mode 100644 index 0000000..eb95a2f --- /dev/null +++ b/Project1/src/com/s434666/PeselValidator.java @@ -0,0 +1,23 @@ +package com.s434666; + +import java.util.stream.IntStream; + +public class PeselValidator { + public Boolean validatePesel(String pesel){ + if(pesel.length()!=11) + return false; + + try{ + var splitedNumbers = pesel.chars().map(c-> Character.getNumericValue(c)).toArray(); + var factors = new int[]{9,7,3,1,9,7,3,1,9,7}; + + //DLACZEGO W JAVIE NIE MA ZIP WITH?! :(((( + var controlSum = IntStream.range(0,10).map(i->factors[i]*splitedNumbers[i]).sum(); + + return controlSum%10 == splitedNumbers[10]; + } + catch(Exception ex){ + return false; + } + } +} diff --git a/Project1/src/com/s434666/PeselValidatorTest.java b/Project1/src/com/s434666/PeselValidatorTest.java new file mode 100644 index 0000000..661a8de --- /dev/null +++ b/Project1/src/com/s434666/PeselValidatorTest.java @@ -0,0 +1,31 @@ +package com.s434666; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.*; + +public class PeselValidatorTest { + + PeselValidator peselValidator; + + @Before + public void setUp(){ + peselValidator = new PeselValidator(); + } + + @Test + public void validatePeselInvalidPeselReturnsFalse(){ + assertFalse(peselValidator.validatePesel("")); + assertFalse(peselValidator.validatePesel("TO NIE JEST PESEL")); + assertFalse(peselValidator.validatePesel("50121876785")); + assertFalse(peselValidator.validatePesel("5012183435436781")); + assertFalse(peselValidator.validatePesel("50034781")); + } + + @Test + public void validatePeselValidPeselStringReturnsTrue(){ + assertTrue(peselValidator.validatePesel("93020998613")); + assertTrue(peselValidator.validatePesel("55112035952")); + assertTrue(peselValidator.validatePesel("62092707537")); + assertTrue(peselValidator.validatePesel("50121876781")); + } +} \ No newline at end of file diff --git a/Project1/src/com/s434666/models/Person.java b/Project1/src/com/s434666/models/Person.java new file mode 100644 index 0000000..41a26bc --- /dev/null +++ b/Project1/src/com/s434666/models/Person.java @@ -0,0 +1,19 @@ +package com.s434666.models; + +public class Person { + private String city; + private String firstName; + private String surname; + private String pesel; + + public Person(String city, String firstName, String surname, String pesel) { + this.city = city; + this.firstName = firstName; + this.surname = surname; + this.pesel = pesel; + } + + public String print(){ + return String.format("City: %s, Name: %s, Surname: %s, PESEL: %s", city,firstName,surname, pesel); + } +}