From d2b439606131a89ee56670d4f4dfe66161dd64d7 Mon Sep 17 00:00:00 2001
From: Fabio Heyming <fabio.heyming@web.de>
Date: Sat, 10 Jun 2023 02:42:22 +0200
Subject: [PATCH] Added csv save

---
 .../example/mampfmobil/ui/CSVFileHelper.java  | 53 ++++++++++
 .../mampfmobil/ui/Classes/Bestellung.java     |  2 +-
 .../mampfmobil/ui/Classes/Customer.java       |  5 +
 .../mampfmobil/ui/Classes/Deliverer.java      |  6 ++
 .../example/mampfmobil/ui/Classes/Item.java   |  6 ++
 .../Recyclerviewadapter_ShoppingCart.java     |  4 +-
 .../mampfmobil/ui/Classes/ShopItem.java       |  4 +
 .../mampfmobil/ui/Classes/Supplier.java       |  7 +-
 .../mampfmobil/ui/CustomerActivity.java       | 24 ++---
 .../example/mampfmobil/ui/DecideFragment.java |  2 -
 .../mampfmobil/ui/DelivererActivity.java      |  6 ++
 .../com/example/mampfmobil/ui/MampfMobil.java | 97 +++++++++++++++++--
 .../mampfmobil/ui/SupplierActivity.java       |  6 ++
 .../ui/customer/CustomerOrdersFragment.java   |  6 +-
 .../CustomerShoppingCartFragment.java         |  4 +-
 15 files changed, 197 insertions(+), 35 deletions(-)
 create mode 100644 app/src/main/java/com/example/mampfmobil/ui/CSVFileHelper.java

diff --git a/app/src/main/java/com/example/mampfmobil/ui/CSVFileHelper.java b/app/src/main/java/com/example/mampfmobil/ui/CSVFileHelper.java
new file mode 100644
index 0000000..7f62148
--- /dev/null
+++ b/app/src/main/java/com/example/mampfmobil/ui/CSVFileHelper.java
@@ -0,0 +1,53 @@
+package com.example.mampfmobil.ui;
+
+import android.content.Context;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class CSVFileHelper {
+    public static void saveCSVFile(Context context, String fileName, String csvData) {
+        FileOutputStream fos = null;
+        try {
+            fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
+            fos.write(csvData.getBytes());
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (fos != null) {
+                try {
+                    fos.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+    public static String loadCSVFile(Context context, String fileName) {
+        FileInputStream fis = null;
+        try {
+            fis = context.openFileInput(fileName);
+            BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
+            StringBuilder sb = new StringBuilder();
+            String line;
+            while ((line = reader.readLine()) != null) {
+                sb.append(line).append("\n");
+            }
+            return sb.toString();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (fis != null) {
+                try {
+                    fis.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return null;
+    }
+}
diff --git a/app/src/main/java/com/example/mampfmobil/ui/Classes/Bestellung.java b/app/src/main/java/com/example/mampfmobil/ui/Classes/Bestellung.java
index 2f34f5d..eb1466f 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/Classes/Bestellung.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/Classes/Bestellung.java
@@ -12,7 +12,7 @@ public class Bestellung {
     static int idCounter = 1;
 
     public boolean delivery = true;
-    public Deliverer  deliverer = null;
+    public Deliverer deliverer = null;
 
     public String state;
     public Supplier supplier;
diff --git a/app/src/main/java/com/example/mampfmobil/ui/Classes/Customer.java b/app/src/main/java/com/example/mampfmobil/ui/Classes/Customer.java
index a58a3b1..5541627 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/Classes/Customer.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/Classes/Customer.java
@@ -15,6 +15,9 @@ public class Customer {
         public Vector<ShopItem> favoriten;
         public Vector<BestellungsTeil> shoppingCart;
 
+        public static int idCounter = 1;
+        public int id;
+
         public void addBestellung(Bestellung bestellung){
             if (bestellungen == null) {
                 bestellungen = new Vector<>();
@@ -29,6 +32,8 @@ public class Customer {
             favoriten = new Vector<>();
             shoppingCart = new Vector<>();
             bestellungen = new Vector<>();
+            id = idCounter;
+            idCounter++;
         }
 
         public void addToShoppingCart(BestellungsTeil bt){
diff --git a/app/src/main/java/com/example/mampfmobil/ui/Classes/Deliverer.java b/app/src/main/java/com/example/mampfmobil/ui/Classes/Deliverer.java
index 72ce359..3ba67b5 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/Classes/Deliverer.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/Classes/Deliverer.java
@@ -5,9 +5,15 @@ public class Deliverer {
     public String nachname;
     public String adresse;
 
+    public static int idCounter = 1;
+    public int id;
+
+
     public Deliverer(String vorname,String nachname,String adresse) {
         this.vorname = vorname;
         this.nachname = nachname;
         this.adresse = adresse;
+        id = idCounter;
+        idCounter++;
     }
 }
diff --git a/app/src/main/java/com/example/mampfmobil/ui/Classes/Item.java b/app/src/main/java/com/example/mampfmobil/ui/Classes/Item.java
index d8a252a..8ab576c 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/Classes/Item.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/Classes/Item.java
@@ -1,12 +1,18 @@
 package com.example.mampfmobil.ui.Classes;
 
 public class Item {
+    public static int idCounter = 1;
+    public int id;
     public String name;
     public double price;
     public Supplier supplier;
+
+
     public Item(String name, double price,Supplier supplier){
         this.name = name;
         this.price = price;
         this.supplier = supplier;
+        id = idCounter;
+        idCounter++;
     }
 }
diff --git a/app/src/main/java/com/example/mampfmobil/ui/Classes/Recyclerviewadapter_ShoppingCart.java b/app/src/main/java/com/example/mampfmobil/ui/Classes/Recyclerviewadapter_ShoppingCart.java
index 566768b..0fd135f 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/Classes/Recyclerviewadapter_ShoppingCart.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/Classes/Recyclerviewadapter_ShoppingCart.java
@@ -62,7 +62,7 @@ public class Recyclerviewadapter_ShoppingCart extends RecyclerView.Adapter<Recyc
             public void afterTextChanged(Editable s) {
 
                 if(!holder.inputAmount.getText().toString().equals("")){
-                    Log.d("myTag", "Habe bn bei"+ position);
+
                     shoppingCart.get(position).quantity = Integer.parseInt(holder.inputAmount.getText().toString());
                     holder.tvSum.setText(String.format("%.2f", (shoppingCart.get(position).item.price * shoppingCart.get(position).quantity)) + " €");
                     CustomerShoppingCartFragment.setSum();
@@ -91,7 +91,7 @@ public class Recyclerviewadapter_ShoppingCart extends RecyclerView.Adapter<Recyc
         shoppingCart.remove(position);
         CustomerShoppingCartFragment.setSum();
         notifyItemRemoved(position);
-        Log.d("myTag", "Habe soooo viel"+ getItemCount());
+
         notifyDataSetChanged();
     }
 
diff --git a/app/src/main/java/com/example/mampfmobil/ui/Classes/ShopItem.java b/app/src/main/java/com/example/mampfmobil/ui/Classes/ShopItem.java
index 6de6104..cf58e42 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/Classes/ShopItem.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/Classes/ShopItem.java
@@ -3,9 +3,13 @@ package com.example.mampfmobil.ui.Classes;
 public class ShopItem {
     public Item item;
     public int quantity;
+    public static int idCounter = 1;
+    public int id;
 
     public ShopItem(Item item, int quantity){
         this.item = item;
         this.quantity = quantity;
+        id = idCounter;
+        idCounter++;
     }
 }
diff --git a/app/src/main/java/com/example/mampfmobil/ui/Classes/Supplier.java b/app/src/main/java/com/example/mampfmobil/ui/Classes/Supplier.java
index 323c9f6..f35d5e1 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/Classes/Supplier.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/Classes/Supplier.java
@@ -5,13 +5,18 @@ import java.util.Vector;
 public class Supplier {
 
     public String name;
-    String address;
+    public String address;
+
+    public static int idCounter = 1;
+    public int id;
 
     public Vector<ShopItem> shopItems = new Vector<>();
 
     public Supplier(String name,String adresse) {
         this.name = name;
         this.address = adresse;
+        id = idCounter;
+        idCounter++;
     }
 
     public void itemAdd(String name,int quantity, double price){
diff --git a/app/src/main/java/com/example/mampfmobil/ui/CustomerActivity.java b/app/src/main/java/com/example/mampfmobil/ui/CustomerActivity.java
index 8e6b994..1f1d4ab 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/CustomerActivity.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/CustomerActivity.java
@@ -80,13 +80,7 @@ private ActivityCustomerBinding binding;
                 }
             }
         }
-        Log.d("myTag", "SI no search ");
-        for(ShopItem sI: shopItemList){
-            Log.d("myTag", "SI no search "+ sI.item.name);
-        }
-        for(ShopItem si:MampfMobil.currentCustomer.favoriten){
-            Log.d("myTag", "FAV "+ si.item.name);
-        }
+
     }
     public static void setupShop(String inputString){
         shopItemList.clear();
@@ -105,10 +99,7 @@ private ActivityCustomerBinding binding;
                 }
             }
         }
-        Log.d("myTag", "SI search:  ");
-        for(ShopItem sI: shopItemList){
-            Log.d("myTag", "SI search:  "+ sI.item.name);
-        }
+
     }
 
 
@@ -129,10 +120,7 @@ private ActivityCustomerBinding binding;
                 }
             }
         }
-        Log.d("myTag", "SI search:  ");
-        for(ShopItem sI: shopItemList){
-            Log.d("myTag", "SI search:  "+ sI.item.name);
-        }
+
     }
 
     public static void sortShop(String inputString, Context context) {
@@ -163,4 +151,10 @@ private ActivityCustomerBinding binding;
         }
 
     }
+
+    @Override
+    protected void onDestroy() {
+        Log.d("myTag", "This ONDESTROY CUSTOMER");
+        super.onDestroy();
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/mampfmobil/ui/DecideFragment.java b/app/src/main/java/com/example/mampfmobil/ui/DecideFragment.java
index 2ec099d..8f5ac5c 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/DecideFragment.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/DecideFragment.java
@@ -142,11 +142,9 @@ public class DecideFragment extends Fragment {
 
         if (enabled) {
 
-            Log.d("myTag", "YES");
             // Dark Mode aktivieren
             AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
         } else {
-            Log.d("myTag", "NO ");
             // Dark Mode deaktivieren
             AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
         }
diff --git a/app/src/main/java/com/example/mampfmobil/ui/DelivererActivity.java b/app/src/main/java/com/example/mampfmobil/ui/DelivererActivity.java
index b169738..90971bf 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/DelivererActivity.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/DelivererActivity.java
@@ -47,4 +47,10 @@ private ActivityDelivererBinding binding;
         startActivity(intent);
         return true; // true zurückgeben, um anzugeben, dass die Aktion behandelt wurde
     }
+
+    @Override
+    protected void onDestroy() {
+        Log.d("myTag", "This ONDESTROYDELIVERER");
+        super.onDestroy();
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/mampfmobil/ui/MampfMobil.java b/app/src/main/java/com/example/mampfmobil/ui/MampfMobil.java
index 0110061..565b2eb 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/MampfMobil.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/MampfMobil.java
@@ -23,7 +23,7 @@ public class MampfMobil {
     public static Vector<Supplier> suppliers;
     public static Supplier currentSupplier;
 
-    Context context;
+    static Context context;
 
 
 
@@ -106,6 +106,7 @@ public class MampfMobil {
             deliverers.add(new Deliverer("", "", ""));
             suppliers.add(new Supplier("", ""));
             isInitialized = true;
+            savePersistant();
         }
     }
 
@@ -187,12 +188,96 @@ public class MampfMobil {
     }
 
 
-    public static int value = 10;
-    public static int getVall(){
-        return value;
+
+    public static void savePersistant(){
+
+        //ID,VORNAME,NACHNAME,ADRESSE
+        String csvDeliverer = "";
+        for(Deliverer d:MampfMobil.deliverers){
+            csvDeliverer = csvDeliverer + d.id +","+ d.vorname +","+ d.nachname +","+ d.adresse + "\n";
+        }
+        String fileName = "deliverer.csv";
+        Log.d("myTag", csvDeliverer);
+        CSVFileHelper.saveCSVFile(context, fileName, csvDeliverer);
+
+
+        //ID,NAME,ADRESSE
+        String csvSupplier = "";
+        for(Supplier s:MampfMobil.suppliers){
+            csvSupplier = csvSupplier + s.id +","+ s.name +","+s.address + "\n";
+        }
+        String fileName2 = "supplier.csv";
+        Log.d("myTag", csvSupplier);
+        CSVFileHelper.saveCSVFile(context, fileName2, csvSupplier);
+
+
+        //ID,VORNAME,NACHNAME,ADRESSE
+        String csvCustomer = "";
+        for(Customer c:MampfMobil.customers){
+            csvCustomer = csvCustomer + c.id +","+ c.vorname +","+ c.nachname +","+ c.adresse + "\n";
+        }
+        String fileName3 = "customer.csv";
+        Log.d("myTag", csvCustomer);
+        CSVFileHelper.saveCSVFile(context, fileName3, csvCustomer);
+
+
+
+        // ID,NAME,PREIS,SUPPLIER-ID
+        String csvItems = "";
+        for(Supplier s:MampfMobil.suppliers){
+            for(ShopItem sI: s.shopItems){
+                csvItems = csvItems + sI.item.id + "," + sI.item.name + "," + sI.item.price + "," + sI.item.supplier.id + "\n";
+            }
+        }
+        String fileName4 = "items.csv";
+        Log.d("myTag", csvItems);
+        CSVFileHelper.saveCSVFile(context, fileName4, csvItems);
+
+
+
+
+        // ID, ITEM-ID, AMOUNT
+        String csvShopItems = "";
+        for(Supplier s:MampfMobil.suppliers){
+            for(ShopItem sI: s.shopItems){
+                csvShopItems = csvShopItems + sI.id + "," + sI.item.id + "," + sI.quantity + "\n";
+            }
+        }
+        String fileName5 = "shopItems.csv";
+        Log.d("myTag", csvShopItems);
+        CSVFileHelper.saveCSVFile(context, fileName5, csvShopItems);
+
+
+        // ID,CUSTOMER_ID, DELIVERY(TRUE/FALSE),STATE,DELIVERER-ID(0 when none),SUPPLIER-ID
+        // bestellungsteil besteht aus  ITEM-ID1, QUANTITY1, ITEM-ID2, QUANTITY2, ITEM-ID3, QUANTITY3 .... \n
+        String csvBestellungen = "";
+        for(Customer c:MampfMobil.customers){
+            for(Bestellung b: c.bestellungen){
+                csvBestellungen = csvBestellungen + b.id + ","+ b.costumer.id+ "," + b.delivery + "," + b.state + ",";
+                if(b.deliverer == null){
+                    csvBestellungen = csvBestellungen + "0,";
+                }
+                else{
+                    csvBestellungen = csvBestellungen + b.deliverer.id + ",";
+                }
+                csvBestellungen = csvBestellungen + b.supplier.id + "\n";
+
+                for (BestellungsTeil bT: b.bestellungsTeile){
+                    csvBestellungen = csvBestellungen + bT.item.id + "," + bT.quantity + "\n";
+                }
+            }
+        }
+        String fileName6 = "bestellungen.csv";
+        Log.d("myTag", csvBestellungen);
+        CSVFileHelper.saveCSVFile(context, fileName6, csvBestellungen);
+
+
     }
-    public static void setVall(int i){
-        value = i;
+
+    public static void takefromPersistance(){
+        String fileName = "data.csv";
+        String csvData = CSVFileHelper.loadCSVFile(context, fileName);
+        Log.d("myTag", "This ONDESTROY");
     }
 
 }
diff --git a/app/src/main/java/com/example/mampfmobil/ui/SupplierActivity.java b/app/src/main/java/com/example/mampfmobil/ui/SupplierActivity.java
index 004f15c..9ee9132 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/SupplierActivity.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/SupplierActivity.java
@@ -45,4 +45,10 @@ public class SupplierActivity extends AppCompatActivity {
         startActivity(intent);
         return true; // true zurückgeben, um anzugeben, dass die Aktion behandelt wurde
     }
+
+    @Override
+    protected void onDestroy() {
+        Log.d("myTag", "This ONDESTROYDELIVERER");
+        super.onDestroy();
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/mampfmobil/ui/customer/CustomerOrdersFragment.java b/app/src/main/java/com/example/mampfmobil/ui/customer/CustomerOrdersFragment.java
index 7920fa9..30b51c4 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/customer/CustomerOrdersFragment.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/customer/CustomerOrdersFragment.java
@@ -36,11 +36,7 @@ public class CustomerOrdersFragment extends Fragment {
 
         RecyclerView recyclerView = rootView.findViewById(R.id.myOrdersRecycler);
 
-        if (recyclerView == null) {
-            Log.d("myTag", "This is my Null");
-        } else {
-            Log.d("myTag", "This is not Null");
-        }
+
                 // Set the layout manager
         LinearLayoutManager layoutManager = new LinearLayoutManager(requireActivity());
         recyclerView.setLayoutManager(layoutManager);
diff --git a/app/src/main/java/com/example/mampfmobil/ui/customer/CustomerShoppingCartFragment.java b/app/src/main/java/com/example/mampfmobil/ui/customer/CustomerShoppingCartFragment.java
index c893a88..25bff74 100644
--- a/app/src/main/java/com/example/mampfmobil/ui/customer/CustomerShoppingCartFragment.java
+++ b/app/src/main/java/com/example/mampfmobil/ui/customer/CustomerShoppingCartFragment.java
@@ -70,15 +70,13 @@ public class CustomerShoppingCartFragment extends Fragment {
                         if(b.supplier == bT.item.supplier && b.state.equals(v.getContext().getString(R.string.ordered)) && !switchDelivery.isChecked() == b.delivery){
                             b.addBestellungsteil(bT);
                             exist = true;
-                            Log.d("myTag", "Added "+ bT.item.name);
-                        }
+                                }
                     }
                     if(!exist){
                         MampfMobil.currentCustomer.addBestellung(new Bestellung(bT.item.supplier,!switchDelivery.isChecked(), rootView.getContext()));
                         for(Bestellung b:MampfMobil.currentCustomer.bestellungen){
                             if(b.supplier == bT.item.supplier && b.state.equals(v.getContext().getString(R.string.ordered))){
                                 b.addBestellungsteil(bT);
-                                Log.d("myTag", "created "+ bT.item.name);
 
                             }
                         }
-- 
GitLab