From c0b4d276f0817362668798c1f81bee834d07e78a Mon Sep 17 00:00:00 2001
From: "vincent.steinman" <vincent.steinmann@etu.hesge.ch>
Date: Tue, 13 Dec 2022 17:35:16 +0100
Subject: [PATCH] Export/Import

---
 tp/save.csv                                   |   6 +
 tp/src/main/java/org/example/Contact.java     |   2 +-
 tp/src/main/java/org/example/Family.java      |   6 +-
 tp/src/main/java/org/example/Main.java        | 141 ++++++++++++++----
 tp/src/main/java/org/example/Person.java      |  31 ----
 .../main/java/org/example/Professional.java   |   6 +-
 6 files changed, 128 insertions(+), 64 deletions(-)
 create mode 100644 tp/save.csv
 delete mode 100644 tp/src/main/java/org/example/Person.java

diff --git a/tp/save.csv b/tp/save.csv
new file mode 100644
index 0000000..2d71dab
--- /dev/null
+++ b/tp/save.csv
@@ -0,0 +1,6 @@
+Family
+Fam 1 /Fam 2/Fam 3/Fam 4 /Fam 5 /Fam 6 /Fam 7/Bro
+Professional
+Pro 1 /Pro 2/Pro 3/Pro 4 /Pro 5 /Pro 6 /Pro 7/Work
+Friend
+Vincent /Steinmann/Ici/Num /Mail /Social /Job
\ 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 dedc353..02eefd7 100644
--- a/tp/src/main/java/org/example/Contact.java
+++ b/tp/src/main/java/org/example/Contact.java
@@ -118,7 +118,7 @@ public abstract class Contact implements Comparable<Contact>{
             w_social += elem + " ";
         }
 
-        return w_names + this.last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
+        return w_names + "\n" + this.last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
                 + w_social + "\n" + this.job;
     }
     @Override
diff --git a/tp/src/main/java/org/example/Family.java b/tp/src/main/java/org/example/Family.java
index 1aae917..b8581d1 100644
--- a/tp/src/main/java/org/example/Family.java
+++ b/tp/src/main/java/org/example/Family.java
@@ -11,6 +11,10 @@ public class Family extends Contact{
         this.relation = relation;
     }
 
+    public String getRelation() {
+        return relation;
+    }
+
     @Override
     public String toString(){
         String w_names = "";
@@ -31,7 +35,7 @@ public class Family extends Contact{
             w_social += elem + " ";
         }
 
-        return w_names + this.last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
+        return w_names + "\n" + 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/Main.java b/tp/src/main/java/org/example/Main.java
index 4b9ac2b..35d7b36 100644
--- a/tp/src/main/java/org/example/Main.java
+++ b/tp/src/main/java/org/example/Main.java
@@ -37,7 +37,7 @@ public class Main {
                     Export(contactArray);
                     break;
                 case "6":
-                    //Import(contactArray);
+                    Import(contactArray);
                     break;
                 default:
                     System.out.println("Please enter valid input");
@@ -280,8 +280,18 @@ public class Main {
         try{
             BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
             for (Contact c: ca){
+                List<String> str_array = SplitLine(c.toString(), "\n");
                 writer.write(c.get_type() + "\n");
-                writer.write(c.getFirst_name() + "\n");
+                writer.write(str_array.get(0) + "/");
+                writer.write(str_array.get(1) + "/");
+                writer.write(str_array.get(2) + "/");
+                writer.write(str_array.get(3) + "/");
+                writer.write(str_array.get(4) + "/");
+                writer.write(str_array.get(5) + "/");
+                writer.write(str_array.get(6));
+                if(c.get_type().equals("Family") || c.get_type().equals("Professional")){
+                    writer.write("/" + str_array.get(7) + "\n");
+                }
             }
             writer.close();
         } catch (IOException e){
@@ -291,21 +301,37 @@ public class Main {
     //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();
-//        }
-//    }
+    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;
+            int checker = 0;
+            while((line = reader.readLine()) != null){
+                switch (line){
+                    case "Friend":
+                        checker = 1;
+                        break;
+                    case "Family":
+                        checker = 2;
+                        break;
+                    case "Professional":
+                        checker = 3;
+                        break;
+                    default:
+                        List<String> str_array = SplitLine(line, "/");
+                        AddContactToList(str_array, checker);
+                        checker = 0;
+                        break;
+                }
+            }
+            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();
@@ -319,16 +345,73 @@ 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;
-//        }
-//    }
+    public static void AddContactToList(List<String> str_array, int checker){
+        switch (checker){
+            case 1:
+                ImportFriend(str_array);
+                break;
+            case 2:
+                ImportFamily(str_array);
+                break;
+            case 3:
+                ImportProfessional(str_array);
+                break;
+            default:
+                System.out.println("Error contact type");
+                break;
+        }
+    }
+    public static void ImportFriend(List<String> str_array){
+        Friend f = new Friend(
+                SplitArray(str_array.get(0)),
+                str_array.get(1),
+                str_array.get(2),
+                SplitArray(str_array.get(3)),
+                SplitArray(str_array.get(4)),
+                SplitArray(str_array.get(5)),
+                str_array.get(6)
+        );
+        Add(f);
+    }
+    public static void ImportFamily(List<String> str_array){
+        Family f = new Family(
+                SplitArray(str_array.get(0)),
+                str_array.get(1),
+                str_array.get(2),
+                SplitArray(str_array.get(3)),
+                SplitArray(str_array.get(4)),
+                SplitArray(str_array.get(5)),
+                str_array.get(6),
+                str_array.get(7)
+        );
+        Add(f);
+    }
+    public static void ImportProfessional(List<String> str_array){
+        Professional f = new Professional(
+                SplitArray(str_array.get(0)),
+                str_array.get(1),
+                str_array.get(2),
+                SplitArray(str_array.get(3)),
+                SplitArray(str_array.get(4)),
+                SplitArray(str_array.get(5)),
+                str_array.get(6),
+                str_array.get(7)
+        );
+        Add(f);
+    }
+    public static List<String> SplitLine(String str, String splitter){
+        List<String> data = Arrays.asList(str.split(splitter));
+        return data;
+    }
+    public static List<String> SplitArray(String str){
+        //str = str.substring(1, str.length() - 1);
+        String new_str = "";
+        for(char c: str.toCharArray()){
+            if(c !='[' && c !=']'){
+                new_str += c;
+            }
+        }
+        List<String> names = Arrays.asList(new_str.split(","));
+        return names;
+    }
 }
\ No newline at end of file
diff --git a/tp/src/main/java/org/example/Person.java b/tp/src/main/java/org/example/Person.java
deleted file mode 100644
index 6cfa566..0000000
--- a/tp/src/main/java/org/example/Person.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.example;
-
-public class Person {
-    private String last_name;
-    private String first_name;
-
-    public Person(String last_name, String first_name){
-        this.last_name = last_name;
-        this.first_name = first_name;
-    }
-
-    public String getLast_name() {
-        return last_name;
-    }
-
-    public String getFirst_name() {
-        return first_name;
-    }
-
-    public void EditFirstName(String newFirstName){
-        this.first_name = newFirstName;
-    }
-    public void EditLastName(String newLastName){
-        this.last_name = newLastName;
-    }
-
-    @Override
-    public String toString() {
-        return  this.first_name + " " + this.last_name;
-    }
-}
diff --git a/tp/src/main/java/org/example/Professional.java b/tp/src/main/java/org/example/Professional.java
index fca435d..2fa74c6 100644
--- a/tp/src/main/java/org/example/Professional.java
+++ b/tp/src/main/java/org/example/Professional.java
@@ -10,7 +10,9 @@ public class Professional extends Contact{
         super("Professional", first_name, last_name, addr, phone, email, social, job);
         this.work_place = work_place;
     }
-
+    public String getWork_place() {
+        return work_place;
+    }
     @Override
     public String toString(){
         String w_names = "";
@@ -31,7 +33,7 @@ public class Professional extends Contact{
             w_social += elem + " ";
         }
 
-        return w_names + last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
+        return w_names + "\n" + last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
                 + w_social + "\n" + this.job + "\n" + this.work_place;
     }
 }
-- 
GitLab