From 31540b3f623387e1575b57269752725b817fd779 Mon Sep 17 00:00:00 2001 From: NonoL3Robot Date: Tue, 15 Mar 2022 17:45:57 +0100 Subject: [PATCH] =?UTF-8?q?persistance=20des=20donn=C3=A9es=20mais=20?= =?UTF-8?q?=C3=A7a=20marche=20pas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 + .../outilcuisson/AfficherFragment.java | 48 +---- .../example/outilcuisson/MainActivity.java | 175 +++++++++++++++++- 3 files changed, 171 insertions(+), 55 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2dacc71..cbb6c24 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,4 +20,7 @@ + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/outilcuisson/AfficherFragment.java b/app/src/main/java/com/example/outilcuisson/AfficherFragment.java index 7f5f175..da7b4d3 100644 --- a/app/src/main/java/com/example/outilcuisson/AfficherFragment.java +++ b/app/src/main/java/com/example/outilcuisson/AfficherFragment.java @@ -39,7 +39,7 @@ public class AfficherFragment extends Fragment { /** * TODO */ - public ArrayAdapter adapterCuissons; + public static ArrayAdapter adapterCuissons; /** @@ -47,11 +47,6 @@ public class AfficherFragment extends Fragment { */ public static ArrayList cuissonAffichees; - /** - * Le nom du fichier de sauvegarde - */ - public static final String FICHIER_SAUVEGARDE = "cuisson.save"; - public AfficherFragment() { } @@ -92,46 +87,6 @@ public class AfficherFragment extends Fragment { listeCuissons.requestLayout(); } - /** - * Met a jour le fichier dataCuisson.txt qui sauvegarde la liste des - * cuissons - */ - private static void updateSaveFile() { - try { - FileOutputStream fos = new FileOutputStream(FICHIER_SAUVEGARDE); - ObjectOutputStream oos = new ObjectOutputStream(fos); - - oos.writeObject(cuissonAffichees); - - oos.close(); - fos.close(); - System.out.println("Sauvegardé avec succès"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Charge la liste des cuissons contenue dans le fichier dataCuisson.txt - */ - private static void loadSaveFile() { - try { - FileInputStream fis = new FileInputStream(FICHIER_SAUVEGARDE); - ObjectInputStream ois = new ObjectInputStream(fis); - - cuissonAffichees = (ArrayList) ois.readObject(); - - ois.close(); - fis.close(); - System.out.println("Chargement des données avec succès"); - } catch (IOException ioe) { - ioe.printStackTrace(); - } catch (ClassNotFoundException c) { - System.out.println("Class not found"); - c.printStackTrace(); - } - } - /** * Crée le menu contextuel en le désérialisant à partir du fichier * menu_contextuel.xml @@ -156,7 +111,6 @@ public class AfficherFragment extends Fragment { switch (item.getItemId()) { case R.id.supprContext: - // TODO cuissonAffichees.remove(information.position); adapterCuissons.notifyDataSetChanged(); listeCuissons.requestLayout(); diff --git a/app/src/main/java/com/example/outilcuisson/MainActivity.java b/app/src/main/java/com/example/outilcuisson/MainActivity.java index c2ee228..0eeba21 100644 --- a/app/src/main/java/com/example/outilcuisson/MainActivity.java +++ b/app/src/main/java/com/example/outilcuisson/MainActivity.java @@ -1,6 +1,8 @@ package com.example.outilcuisson; +import android.content.Context; import android.os.Bundle; +import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -12,26 +14,183 @@ import androidx.viewpager2.widget.ViewPager2; import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.ObjectOutputStream; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; +import java.util.Arrays; + public class MainActivity extends AppCompatActivity implements AjouterFragment.EcouteurAjout { + /** + * Le nom du fichier de sauvegarde + */ + private static final String NOM_FICHIER = "cuisson.txt"; + + /** + * Tag utilisé dans les messages de log. Les messages de log sont + * affichés en cas + * de problème lors de l'accès au fichier + */ + private static final String TAG = "Cuisson"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - ViewPager2 gestionnairePagination = findViewById(R.id.activity_main_viewpager); + ViewPager2 gestionnairePagination = findViewById( + R.id.activity_main_viewpager); TabLayout gestionnaireOnglet = findViewById(R.id.tab_layout); gestionnairePagination.setAdapter(new AdaptateurPage(this)); String[] titreOnglet = { - getString(R.string.tab_afficher), - getString(R.string.tab_ajouter) + getString(R.string.tab_afficher), getString(R.string.tab_ajouter) }; new TabLayoutMediator(gestionnaireOnglet, gestionnairePagination, - (tab, position) -> tab.setText(titreOnglet[position]) - ).attach(); + (tab, position) -> tab.setText( + titreOnglet[position])).attach(); + } + + @Override + protected void onResume() { + super.onResume(); + printFile("print avant readFromFile()"); + readFromFile(this); + + printFile("print après readFromFile()"); + } + + @Override + protected void onPause() { + printFile("print avant writeToFile()"); + writeToFile("test", this); + printFile("print après writeToFile()"); + super.onPause(); + } + + private String readFromFile(Context context) { + + String ret = ""; + + try { + InputStream inputStream = context.openFileInput(NOM_FICHIER); + + if (inputStream != null) { + InputStreamReader inputStreamReader = new InputStreamReader( + inputStream); + BufferedReader bufferedReader = new BufferedReader( + inputStreamReader); + String receiveString = ""; + StringBuilder stringBuilder = new StringBuilder(); + + while ((receiveString = bufferedReader.readLine()) != null) { + stringBuilder.append("\n").append(receiveString); + } + + inputStream.close(); + ret = stringBuilder.toString(); + } + } catch (FileNotFoundException e) { + Log.e("login activity", "File not found: " + e.toString()); + } catch (IOException e) { + Log.e("login activity", "Can not read file: " + e.toString()); + } + + return ret; + } + + private void writeToFile(String data, Context context) { + try { + OutputStreamWriter outputStreamWriter = new OutputStreamWriter( + context.openFileOutput(NOM_FICHIER, Context.MODE_PRIVATE)); + outputStreamWriter.write(data); + outputStreamWriter.close(); + } catch (IOException e) { + Log.e("Exception", "File write failed: " + e.toString()); + } + } + + // private void writeToFile() { + // try { + // File path = getFilesDir(); + // File file = new File(path, NOM_FICHIER); + // + // if (!path.exists()) { + // path.mkdirs(); + // } + // FileWriter fw = new FileWriter(file); + // BufferedWriter bw = new BufferedWriter(fw); + // + // printFile("print avant écriture"); + // + // for (String s : AfficherFragment.cuissonAffichees) { + // bw.write(s + "\n"); + // } + // + // printFile("print après écriture"); + // + // fw.close(); + // } catch (IOException e) { + // Log.e(TAG, "File write failed: " + e.toString()); + // } + // } + // + // private void readFromFile() { + // try { + // File path = getFilesDir(); + // File file = new File(path, NOM_FICHIER); + // FileReader fr = new FileReader(file); + // BufferedReader br = new BufferedReader(fr); + // String receiveString; + // + // printFile("print avant lecture"); + // + // while ((receiveString = br.readLine()) != null) { + // AfficherFragment.cuissonAffichees.add(receiveString); + // } + // + // printFile("print après lecture"); + // + // fr.close(); + // } catch (FileNotFoundException e) { + // Log.e(TAG, "File not found: " + e.toString()); + // } catch (IOException e) { + // Log.e(TAG, "Can not read file: " + e.toString()); + // } + // } + + public void printFile(String intitule) { + System.out.println(intitule); + try { + File path = getFilesDir(); + File file = new File(path, NOM_FICHIER); + BufferedReader in = new BufferedReader(new FileReader(file)); + String line = in.readLine(); + while (line != null) { + System.out.println(line); + line = in.readLine(); + } + in.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } } /* Crée le menu d'options en le désérialisant à partir du fichier @@ -59,9 +218,9 @@ public class MainActivity extends AppCompatActivity implements AjouterFragment.E @Override public void recevoirCuisson(Cuisson cuisson) { - AfficherFragment fragmentAModifier = - (AfficherFragment) getSupportFragmentManager().findFragmentByTag( - "f0"); + AfficherFragment fragmentAModifier + = (AfficherFragment) getSupportFragmentManager().findFragmentByTag( + "f0"); if (fragmentAModifier != null) { fragmentAModifier.addCuisson(cuisson);