diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..234aced12a100c17a9db54eb0f55e3a0a13047a5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +tp/.idea +tp/target +tp/src/test +tp/src/main/resouces diff --git a/tp/pom.xml b/tp/pom.xml index f56050452a998ba2b858bd8eaf0e9f60b44fb176..7f3c7bedd0c42d722e06de85e00953a235ee9174 100644 --- a/tp/pom.xml +++ b/tp/pom.xml @@ -8,10 +8,58 @@ <artifactId>tp</artifactId> <version>1.0-SNAPSHOT</version> +<!-- <dependencies>--> +<!-- <dependency>--> +<!-- <groupId>org.jetbrains</groupId>--> +<!-- <artifactId>annotations</artifactId>--> +<!-- <version>RELEASE</version>--> +<!-- <scope>compile</scope>--> +<!-- </dependency>--> +<!-- <dependency>--> +<!-- <groupId>org.junit.jupiter</groupId>--> +<!-- <artifactId>junit-jupiter</artifactId>--> +<!-- <version>5.9.0</version>--> +<!-- <scope>test</scope>--> +<!-- </dependency>--> +<!-- <dependency>--> +<!-- <groupId>org.apache.commons</groupId>--> +<!-- <artifactId>commons-lang3</artifactId>--> +<!-- <version>3.1</version>--> +<!-- </dependency>--> +<!-- </dependencies>--> + + <build> + <pluginManagement> + <plugins> +<!-- <plugin>--> +<!-- <groupId>org.apache.maven.plugins</groupId>--> +<!-- <artifactId>maven-surefire-plugin</artifactId>--> +<!-- <version>2.22.0</version>--> +<!-- </plugin>--> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>3.1.0</version> + <executions> + <execution> + <goals> + <goal>java</goal> + </goals> + </execution> + </executions> + <configuration> + <mainClass>org.example.Main</mainClass> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + <properties> <maven.compiler.source>18</maven.compiler.source> <maven.compiler.target>18</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> + </project> \ No newline at end of file diff --git a/tp/src/main/java/org/example/Contact.java b/tp/src/main/java/org/example/Contact.java index 41229ec4a1749647d243b75ce6e95b5ce6957004..dedc3530f0a645f810c79784e555656bd78a2392 100644 --- a/tp/src/main/java/org/example/Contact.java +++ b/tp/src/main/java/org/example/Contact.java @@ -1,18 +1,23 @@ package org.example; +import java.util.*; public abstract class Contact implements Comparable<Contact>{ + protected String type; //Fields - protected Person pers; + protected List<String> first_name; + protected String last_name; protected String addr; - protected String[] phone; - protected String[] email; - protected String[] social; + protected List<String> phone; + protected List<String> email; + protected List<String> social; protected String job; //Ctor - public Contact(Person pers, String addr, String[] phone, String[] email, - String[] social, String job){ - this.pers = pers; + public Contact(String type, List<String> first_name, String last_name, String addr, List<String> phone, List<String> email, + List<String> social, String job){ + this.type = type; + this.first_name = first_name; + this.last_name = last_name; this.addr = addr; this.phone = phone; this.email = email; @@ -21,22 +26,23 @@ public abstract class Contact implements Comparable<Contact>{ } //Getter - public Person getPers(){ - return pers; - } + public String get_type() { return type;} + public String getLast_name() { return last_name;} + + public List<String> getFirst_name() { return first_name; } public String getAddr() { return addr; } - public String[] getPhone() { + public List<String> getPhone() { return phone; } - public String[] getEmail() { + public List<String> getEmail() { return email; } - public String[] getSocial() { + public List<String> getSocial() { return social; } @@ -46,22 +52,22 @@ public abstract class Contact implements Comparable<Contact>{ //Test //Setter - public void setPers(Person pers){ - this.pers = pers; - } + public void set_type(String type){this.type = type;} + public void setFirst_name(List<String> first_name){this.first_name = first_name;} + public void setLast_name(String last_name){this.last_name = last_name;} public void setAddr(String addr) { this.addr = addr; } - public void setPhone(String[] phone) { + public void setPhone(List<String> phone) { this.phone = phone; } - public void setEmail(String[] email) { + public void setEmail(List<String> email) { this.email = email; } - public void setSocial(String[] social) { + public void setSocial(List<String> social) { this.social = social; } @@ -70,33 +76,38 @@ public abstract class Contact implements Comparable<Contact>{ } //Methodes + //Type cannot be edited + public void EditFirstName(List<String> newFirstName){ + this.first_name = newFirstName; + } + public void EditLastName(String newLastName){ + this.last_name = newLastName; + } public void EditAddress(String newAddrr){ this.addr = newAddrr; } - public void EditPhone(String[] newPhone){ + public void EditPhone(List<String> newPhone){ this.phone = newPhone; } - public void EditEmail(String[] newEmail){ + public void EditEmail(List<String> newEmail){ this.email = newEmail; } - public void EditSocial(String[] newSocial){ + public void EditSocial(List<String> newSocial){ this.social = newSocial; } public void EditJob(String newJob){ this.job = newJob; } - public void EditFirstName(String newFirst){ - this.pers.EditFirstName(newFirst); - } - public void EditLastName(String newLast){ - this.pers.EditLastName(newLast); - } @Override public String toString(){ + String w_names = ""; String w_phone = ""; String w_email = ""; String w_social = ""; + for(String elem: this.first_name){ + w_names += elem + " "; + } for(String elem: this.phone){ w_phone += elem + " "; } @@ -107,11 +118,11 @@ public abstract class Contact implements Comparable<Contact>{ w_social += elem + " "; } - return pers.toString() + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n" + return w_names + this.last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n" + w_social + "\n" + this.job; } @Override public int compareTo(Contact c){ - return this.pers.getFirst_name().compareTo(c.getPers().getFirst_name()); + return this.first_name.get(0).compareTo(c.first_name.get(0)); } } diff --git a/tp/src/main/java/org/example/Family.java b/tp/src/main/java/org/example/Family.java index b5266bc4e56a2f52b0ce2e422a2eabf07186c6c6..1aae917d7efdfdcca02ec8d3ff93f83d507babea 100644 --- a/tp/src/main/java/org/example/Family.java +++ b/tp/src/main/java/org/example/Family.java @@ -1,19 +1,26 @@ package org.example; +import java.util.ArrayList; +import java.util.List; + public class Family extends Contact{ private String relation; - public Family(Person pers, String addr, String[] phone, String[] email, - String[] social, String job, String relation){ - super(pers, addr, phone, email, social, job); + public Family(List<String> first_name, String last_name, String addr, List<String> phone, List<String> email, + List<String> social, String job, String relation){ + super("Family", first_name, last_name, addr, phone, email, social, job); this.relation = relation; } @Override public String toString(){ + String w_names = ""; String w_phone = ""; String w_email = ""; String w_social = ""; + for(String elem: this.first_name){ + w_names += elem + " "; + } for(String elem: this.phone){ w_phone += elem + " "; } @@ -24,7 +31,7 @@ public class Family extends Contact{ w_social += elem + " "; } - return pers.toString() + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n" + return w_names + this.last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n" + w_social + "\n" + this.job + "\n" + this.relation; } } diff --git a/tp/src/main/java/org/example/Friend.java b/tp/src/main/java/org/example/Friend.java index 16e8c74067b4f18447310337e8126feecc154f22..ae75ea235ccac2bbe7b8057f48f6bcee08e27c7f 100644 --- a/tp/src/main/java/org/example/Friend.java +++ b/tp/src/main/java/org/example/Friend.java @@ -1,9 +1,12 @@ package org.example; +import java.util.ArrayList; +import java.util.List; + public class Friend extends Contact{ - public Friend(Person pers, String addr, String[] phone, String[] email, - String[] social, String job){ - super(pers, addr, phone, email, social, job); + public Friend(List<String> first_name, String last_name, String addr, List<String> phone, List<String> email, + List<String> social, String job){ + super("Friend", first_name, last_name, addr, phone, email, social, job); } } diff --git a/tp/src/main/java/org/example/Main.java b/tp/src/main/java/org/example/Main.java index b56cdca075561522bdc137fbdfd86be403306323..4b9ac2b5c7d4ebb81abd01e3cdeb2509d01294b9 100644 --- a/tp/src/main/java/org/example/Main.java +++ b/tp/src/main/java/org/example/Main.java @@ -1,6 +1,6 @@ package org.example; +import java.io.*; import java.util.*; - public class Main { static ArrayList<Contact> contactArray = new ArrayList<Contact>(); public static void main(String[] args) { @@ -11,6 +11,8 @@ public class Main { System.out.println("[2] Delete Contact"); System.out.println("[3] Show Contact"); System.out.println("[4] Search Contact"); + System.out.println("[5] Export Contact"); + System.out.println("[6] Import Contact"); Scanner myObj = new Scanner(System.in); String usrInput = myObj.nextLine(); @@ -31,6 +33,12 @@ public class Main { case "4": Search(); break; + case "5": + Export(contactArray); + break; + case "6": + //Import(contactArray); + break; default: System.out.println("Please enter valid input"); break; @@ -75,7 +83,6 @@ public class Main { String firstName = myObj.nextLine(); System.out.println("Enter last names"); String lastName = myObj.nextLine(); - Person p = new Person(lastName, firstName); System.out.println("Enter Address"); String address = myObj.nextLine(); @@ -88,11 +95,12 @@ public class Main { System.out.println("Enter Job"); String job = myObj.nextLine(); - String[] phoneList = phone.split(" "); - String[] emailList = phone.split(" "); - String[] socialList = phone.split(" "); + List<String> first_name_list = Arrays.asList(firstName.split(" ")); + List<String> phoneList = Arrays.asList(phone.split(" ")); + List<String> emailList = Arrays.asList(emails.split(" ")); + List<String> socialList = Arrays.asList(social.split(" ")); - Friend pal = new Friend(p, address, phoneList, emailList, socialList, job); + Friend pal = new Friend(first_name_list, lastName, address, phoneList, emailList, socialList, job); Add(pal); } /* @@ -104,7 +112,6 @@ public class Main { String firstName = myObj.nextLine(); System.out.println("Enter last names"); String lastName = myObj.nextLine(); - Person p = new Person(lastName, firstName); System.out.println("Enter Address"); String address = myObj.nextLine(); @@ -119,42 +126,43 @@ public class Main { System.out.println("Enter relation"); String relation = myObj.nextLine(); - String[] phoneList = phone.split(" "); - String[] emailList = phone.split(" "); - String[] socialList = phone.split(" "); + List<String> first_name_list = Arrays.asList(firstName.split(" ")); + List<String> phoneList = Arrays.asList(phone.split(" ")); + List<String> emailList = Arrays.asList(emails.split(" ")); + List<String> socialList = Arrays.asList(social.split(" ")); - Family fam = new Family(p, address, phoneList, emailList, socialList, job, relation); + Family fam = new Family(first_name_list, lastName, address, phoneList, emailList, socialList, job, relation); Add(fam); } /* * Adds a professional contact (obviously) */ public static void AddPro(){ - System.out.println("Enter first names"); + System.out.println("Enter first name(s)"); Scanner myObj = new Scanner(System.in); String firstName = myObj.nextLine(); - System.out.println("Enter last names"); + System.out.println("Enter last name"); String lastName = myObj.nextLine(); - Person p = new Person(lastName, firstName); System.out.println("Enter Address"); String address = myObj.nextLine(); - System.out.println("Enter Phone"); + System.out.println("Enter Phone (use / as separator)"); String phone = myObj.nextLine(); - System.out.println("Enter Emails"); + System.out.println("Enter Emails (use / as separator)"); String emails = myObj.nextLine(); - System.out.println("Enter Socials"); + System.out.println("Enter Socials (use / as separator)"); String social = myObj.nextLine(); System.out.println("Enter Job"); String job = myObj.nextLine(); System.out.println("Enter Work Place"); String wp = myObj.nextLine(); - String[] phoneList = phone.split(" "); - String[] emailList = phone.split(" "); - String[] socialList = phone.split(" "); + List<String> first_name_list = Arrays.asList(firstName.split(" ")); + List<String> phoneList = Arrays.asList(phone.split("/")); + List<String> emailList = Arrays.asList(emails.split("/")); + List<String> socialList = Arrays.asList(social.split("/")); - Professional pro = new Professional(p, address, phoneList, emailList, socialList, job, wp); + Professional pro = new Professional(first_name_list, lastName, address, phoneList, emailList, socialList, job, wp); Add(pro); } public static void Add(Contact c){ @@ -165,8 +173,7 @@ public class Main { int size_array = contactArray.size(); if(size_array == 0){ System.out.println("List is empty"); - } - else{ + } else{ System.out.println("Which contact?"); Scanner myObj = new Scanner(System.in); String contactNb = myObj.nextLine(); @@ -184,7 +191,8 @@ public class Main { case "0": System.out.println("Enter new first names"); String editFirst = myObj.nextLine(); - contactArray.get(Integer.parseInt(contactNb)).EditFirstName(editFirst); + List<String> new_first = Arrays.asList(editFirst.split(" ")); + contactArray.get(Integer.parseInt(contactNb)).EditFirstName(new_first); break; case "1": System.out.println("Enter new last names"); @@ -194,24 +202,24 @@ public class Main { case "2": System.out.println("Enter new first address"); String editAddr = myObj.nextLine(); - contactArray.get(Integer.parseInt(contactNb)).EditFirstName(editAddr); + contactArray.get(Integer.parseInt(contactNb)).EditAddress(editAddr); break; case "3": System.out.println("Enter new phone numbers (use / as separator)"); String editPhone = myObj.nextLine(); - String[] editPhoneList = editPhone.split("/"); + List<String> editPhoneList = Arrays.asList(editPhone.split("/")); contactArray.get(Integer.parseInt(contactNb)).EditPhone(editPhoneList); break; case "4": System.out.println("Enter new Emails (use / as separator)"); String editEmail = myObj.nextLine(); - String[] editEmailList = editEmail.split("/"); + List<String> editEmailList = Arrays.asList(editEmail.split("/")); contactArray.get(Integer.parseInt(contactNb)).EditEmail(editEmailList); break; case "5": System.out.println("Enter new Socials (use / as separator)"); String editSocial = myObj.nextLine(); - String[] editSocialList = editSocial.split("/"); + List<String> editSocialList = Arrays.asList(editSocial.split("/")); contactArray.get(Integer.parseInt(contactNb)).EditEmail(editSocialList); break; case "6": @@ -223,8 +231,7 @@ public class Main { System.out.println("Please enter correct value"); break; } - } - else { + } else { System.out.println("Please enter valid input"); System.out.println("It must be a number between 0 and " + (size_array -1)); } @@ -234,15 +241,13 @@ public class Main { int size_array = contactArray.size(); if(size_array == 0){ System.out.println("List is empty"); - } - else{ + } else{ System.out.println("Which Contact?"); Scanner myObj = new Scanner(System.in); String usrInput = myObj.nextLine(); if(TryNumber(usrInput)){ contactArray.remove(usrInput); - } - else{ + } else{ System.out.println("Please enter valid input"); System.out.println("It must be a number between 0 and " + (size_array -1)); } @@ -259,11 +264,48 @@ public class Main { Scanner myObj = new Scanner(System.in); String ctName = myObj.nextLine(); for(Contact c: contactArray){ - if(c.getPers().getFirst_name().equals(ctName)){ + if(c.getFirst_name().equals(ctName)){ System.out.println(c.toString()); } } } + /* + * Export list of contact + */ + public static void Export(ArrayList<Contact> ca){ + System.out.println("Enter save file name"); + Scanner myObj = new Scanner(System.in); + String fileName = myObj.nextLine(); + + try{ + BufferedWriter writer = new BufferedWriter(new FileWriter(fileName)); + for (Contact c: ca){ + writer.write(c.get_type() + "\n"); + writer.write(c.getFirst_name() + "\n"); + } + writer.close(); + } catch (IOException e){ + e.printStackTrace(); + } + } + //TODO find good way to save + //Warning list + //Type of contact +// public static void Import(ArrayList<Contact> ca){ +// System.out.println("Enter save file name"); +// Scanner myObj = new Scanner(System.in); +// String fileName = myObj.nextLine(); +// try{ +// BufferedReader reader = new BufferedReader(new FileReader(fileName)); +// String line; +// while((line = reader.readLine()) != null){ +// AddContactToList(line); +// } +// reader.close(); +// } catch (IOException e){ +// e.printStackTrace(); +// } +// } //Test if the value is a number or not and if it's withing the range of the list public static boolean TryNumber(String nb){ int size_array = contactArray.size(); @@ -276,4 +318,17 @@ public class Main { } return (nbInt < size_array); } + +// public static void AddContactToList(Contact c,String str){ +// int cpt = 1; +// switch (cpt){ +// case 1: +// c.setFirst_name +// cpt++; +// break; +// case 2: +// cpt++; +// break; +// } +// } } \ No newline at end of file diff --git a/tp/src/main/java/org/example/Professional.java b/tp/src/main/java/org/example/Professional.java index bdb6496fc2f3647a43c0e41db510f52f71404647..fca435d755062f969b1344d3c293b69611c9f966 100644 --- a/tp/src/main/java/org/example/Professional.java +++ b/tp/src/main/java/org/example/Professional.java @@ -1,19 +1,26 @@ package org.example; +import java.util.ArrayList; +import java.util.List; + public class Professional extends Contact{ private String work_place; - public Professional(Person pers, String addr, String[] phone, String[] email, - String[] social, String job, String work_place){ - super(pers, addr, phone, email, social, job); + public Professional(List<String> first_name, String last_name, String addr, List<String> phone, List<String> email, + List<String> social, String job, String work_place){ + super("Professional", first_name, last_name, addr, phone, email, social, job); this.work_place = work_place; } @Override public String toString(){ + String w_names = ""; String w_phone = ""; String w_email = ""; String w_social = ""; + for(String elem: this.first_name){ + w_names += elem + " "; + } for(String elem: this.phone){ w_phone += elem + " "; } @@ -24,7 +31,7 @@ public class Professional extends Contact{ w_social += elem + " "; } - return pers.toString() + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n" + return w_names + last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n" + w_social + "\n" + this.job + "\n" + this.work_place; } }