diff --git a/.idea/misc.xml b/.idea/misc.xml index 031ac64182e2fa8ea4cd95172e841e7af18340b3..598e1ad960188a39a12ff68f5e7f65f1096f4298 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,6 +4,7 @@ <option name="filePathToZoomLevelMap"> <map> <entry key="app/src/main/res/layout/activity_main.xml" value="0.15104166666666666" /> + <entry key="app/src/main/res/layout/activity_mode_conception.xml" value="0.32864583333333336" /> <entry key="app/src/main/res/layout/activity_mode_immersion.xml" value="0.3333333333333333" /> <entry key="app/src/main/res/layout/activity_pieces.xml" value="0.19464720194647203" /> <entry key="app/src/main/res/layout/content_scrolling.xml" value="0.246875" /> diff --git a/app/src/main/java/com/example/myhabitat/MainActivity.java b/app/src/main/java/com/example/myhabitat/MainActivity.java index 89d92a3af8580d345fc32e19d011387dc44f06fa..bf619975c7dfcb83db1b99d6cda39699992d989f 100644 --- a/app/src/main/java/com/example/myhabitat/MainActivity.java +++ b/app/src/main/java/com/example/myhabitat/MainActivity.java @@ -30,6 +30,7 @@ public class MainActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + /* launcher = registerForActivityResult( // Contrat qui détermine le type de l'interaction new ActivityResultContracts.StartActivityForResult(), @@ -43,7 +44,8 @@ public class MainActivity extends AppCompatActivity { Bundle extras = intent.getExtras(); habitat = (Habitat) extras.get("Habitat"); habitat.setCorrectly(); - textView.setText(habitat.toString()); + ouvrirJSON(); + textView.setText(habitat.toJSON().toString()); } @@ -51,81 +53,43 @@ public class MainActivity extends AppCompatActivity { } ); - habitat = new Habitat(); + */ textView = findViewById(R.id.textTest); - textView.setText(habitat.toString()); + + ouvrirJSON(); + + textView.setText(habitat.toJSON().toString()); } public void conception(View view) { Intent intent = new Intent(this, ModeConceptionActivity.class); intent.putExtra("Habitat", habitat); + startActivity(intent); + /* if (intent.resolveActivity(getPackageManager()) != null){ launcher.launch(intent); } + + */ } public void immersion(View view) { Intent intent = new Intent(this, ModeImmersionActivity.class); intent.putExtra("Habitat", habitat); + startActivity(intent); + /* if (intent.resolveActivity(getPackageManager()) != null){ launcher.launch(intent); } - } - public void enregistrement(){ - JSONObject enregistrement = new JSONObject(); - JSONArray pieces = new JSONArray(); - JSONArray murs = new JSONArray(); - - for(Piece piece : habitat.getPieces()){ - for(Mur mur : piece.getMurs()){ - JSONObject Jmur = new JSONObject(); - try { - Jmur.put("Orientation", mur.getOrientation()); - Jmur.put("Id", mur.getId()); - } catch (JSONException e) { - throw new RuntimeException(e); - } - murs.put(Jmur); - } - pieces.put(piece.getNom()); - try { - pieces.put(0, murs); - } catch (JSONException e) { - throw new RuntimeException(e); - } - } - try { - enregistrement.put("Pieces", pieces); - } catch (JSONException e) { - throw new RuntimeException(e); - } - - if(enregistrement != null){ - FileOutputStream fos = null; - try { - fos = openFileOutput("enregistrement.json", MODE_PRIVATE); - PrintStream ps = new PrintStream(fos); - ps.print(enregistrement); - ps.close(); - fos.flush(); - Log.i("testEnregistrement", "enregistrement.json a bien été enregistré"); - ouvrirJSON(); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - Log.i("testJSON", enregistrement.toString()); - - }else{ - Log.i("testJSON", "pbm"); - } + */ } public void ouvrirJSON(){ + //habitat.reset(); + habitat = new Habitat(); FileInputStream fis = null; try { fis = openFileInput("enregistrement.json"); @@ -138,8 +102,12 @@ public class MainActivity extends AppCompatActivity { try { JSONObject enregistrement = new JSONObject(json); JSONArray pieces = enregistrement.getJSONArray("Pieces"); - JSONArray murs = pieces.getJSONArray(0); - Log.i("testJSONmurs", murs.toString()); + for(int i=0; i<pieces.length(); i++){ + JSONObject Jpiece = (JSONObject) pieces.get(i); + Piece piece = new Piece(Jpiece); + habitat.addPiece(piece); + } + Log.i("testJSONouverture", habitat.toString()); } catch (JSONException e) { throw new RuntimeException(e); @@ -149,6 +117,7 @@ public class MainActivity extends AppCompatActivity { }else{ Log.i("testJSON", "pbm ouverture"); } + textView.setText(habitat.toJSON().toString()); } public String getFileContent(FileInputStream fis) { @@ -170,8 +139,8 @@ public class MainActivity extends AppCompatActivity { } @Override - protected void onPause() { - enregistrement(); - super.onPause(); + protected void onPostResume() { + ouvrirJSON(); + super.onPostResume(); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/myhabitat/ModeConceptionActivity.java b/app/src/main/java/com/example/myhabitat/ModeConceptionActivity.java index 2224fbdfb0222d351cb1d21772ec15dd0924fb70..2a86150fd130d3480efc8d15a80b2ba2b9642dce 100644 --- a/app/src/main/java/com/example/myhabitat/ModeConceptionActivity.java +++ b/app/src/main/java/com/example/myhabitat/ModeConceptionActivity.java @@ -17,12 +17,10 @@ import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import habitat.*; +import org.json.JSONObject; import outils.GestionnaireEditHabitat; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; +import java.io.*; public class ModeConceptionActivity extends AppCompatActivity { private Habitat habitat; @@ -168,7 +166,7 @@ public class ModeConceptionActivity extends AppCompatActivity { Mur murS = new Mur(piece1, Orientation.SUD, habitat); Mur murO = new Mur(piece1, Orientation.OUEST, habitat); piece1.setMurs(murS, murO, murN, murE); - habitat.getPieces().add(piece1); + habitat.addPiece(piece1); affichePieces(); majHabitat(); } @@ -176,5 +174,33 @@ public class ModeConceptionActivity extends AppCompatActivity { public void majHabitat(){ Intent intent = new Intent().putExtra("Habitat", habitat); setResult(RESULT_OK, intent); + enregistrement(); + } + + public void enregistrement(){ + JSONObject enregistrement = new JSONObject(); + enregistrement = habitat.toJSON(); + + if(enregistrement != null){ + FileOutputStream fos = null; + try { + fos = openFileOutput("enregistrement.json", MODE_PRIVATE); + PrintStream ps = new PrintStream(fos); + ps.print(enregistrement); + ps.close(); + fos.flush(); + Log.i("testEnregistrement", "enregistrement.json a bien été enregistré"); + Log.i("testEnregistrement", "json = " + enregistrement.toString()); + //ouvrirJSON(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + Log.i("testJSON", enregistrement.toString()); + + }else{ + Log.i("testJSON", "pbm"); + } } } \ No newline at end of file diff --git a/app/src/main/java/habitat/Habitat.java b/app/src/main/java/habitat/Habitat.java index 9512983c96534f97a18fd53bb2125517653a2eb1..847f28d340be099be86ed4229c5c9dbe41d377ca 100644 --- a/app/src/main/java/habitat/Habitat.java +++ b/app/src/main/java/habitat/Habitat.java @@ -2,6 +2,10 @@ package habitat; import android.os.Parcel; import android.os.Parcelable; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import outils.FabriqueId; import java.util.ArrayList; import java.util.Arrays; @@ -12,7 +16,7 @@ public class Habitat implements Parcelable { public Habitat() { this.pieces = new ArrayList<Piece>(); - createHabitat(); + //createHabitat(); } protected Habitat(Parcel in) { @@ -78,4 +82,27 @@ public class Habitat implements Parcelable { piece.setCorrectly(); } } + + public void addPiece(Piece piece) { + pieces.add(piece); + piece.setHabitat(this); + } + + public JSONObject toJSON(){ + JSONObject jsonObject = new JSONObject(); + JSONArray jsonArray = new JSONArray(); + for(Piece piece : pieces){ + jsonArray.put(piece.toJSON()); + } + try { + jsonObject.put("Pieces", jsonArray); + } catch (JSONException e) { + throw new RuntimeException(e); + } + return jsonObject; + } + + public void reset(){ + pieces.clear(); + } } diff --git a/app/src/main/java/habitat/Mur.java b/app/src/main/java/habitat/Mur.java index 2adca7bba79669ef2339814472c4a78027c91877..7997db5bffa4e4bf959c0c7e7db5af3861e00adf 100644 --- a/app/src/main/java/habitat/Mur.java +++ b/app/src/main/java/habitat/Mur.java @@ -3,6 +3,8 @@ package habitat; import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; +import org.json.JSONException; +import org.json.JSONObject; import outils.FabriqueId; public class Mur implements Parcelable { @@ -26,6 +28,27 @@ public class Mur implements Parcelable { id = FabriqueId.getInstance().getId(); } + public Mur(JSONObject jsonObjectMur){ + try { + String Jorientation = (String) jsonObjectMur.get("Orientation"); + switch (Jorientation){ + case "NORD" : + orientation = Orientation.NORD; + case "SUD" : + orientation = Orientation.SUD; + case "EST" : + orientation = Orientation.EST; + case "OUEST" : + orientation = Orientation.OUEST; + default: + orientation = Orientation.SUD; //Par défaut + } + id = (int) jsonObjectMur.get("Id"); + } catch (JSONException e) { + throw new RuntimeException(e); + } + } + protected Mur(Parcel in) { orientation = (Orientation) in.readSerializable(); id = in.readInt(); @@ -78,7 +101,7 @@ public class Mur implements Parcelable { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("Mur{"); + sb.append("Mur{id=").append(id).append(";"); sb.append("orientation="); sb.append(orientation); sb.append("}"); @@ -104,4 +127,15 @@ public class Mur implements Parcelable { dest.writeSerializable(orientation); dest.writeInt(id); } + + public JSONObject toJSON() { + JSONObject jsonObject = new JSONObject(); + try { + jsonObject.put("Orientation", orientation); + jsonObject.put("Id", id); + } catch (JSONException e) { + throw new RuntimeException(e); + } + return jsonObject; + } } diff --git a/app/src/main/java/habitat/Piece.java b/app/src/main/java/habitat/Piece.java index 9bd1d4a9065f39a25ff7a69c8562e6ae9dfc40cb..e3c9f2166ebc8eeeec5fb8cf946a9c1fcf44591b 100644 --- a/app/src/main/java/habitat/Piece.java +++ b/app/src/main/java/habitat/Piece.java @@ -2,6 +2,10 @@ package habitat; import android.os.Parcel; import android.os.Parcelable; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.ArrayList; public class Piece implements Parcelable { @@ -15,8 +19,24 @@ public class Piece implements Parcelable { murs = new ArrayList<>(4); } + public Piece(JSONObject jsonObjectPiece){ + murs = new ArrayList<Mur>(); + try { + nom = (String) jsonObjectPiece.get("Nom"); + JSONArray Jmurs = jsonObjectPiece.getJSONArray("Murs"); + for(int j=0; j<4; j++){ + JSONObject Jmur = Jmurs.getJSONObject(j); + Mur mur = new Mur(Jmur); + addMur(mur); + mur.setHabitat(habitat); + } + } catch (JSONException e) { + throw new RuntimeException(e); + } + } + protected Piece(Parcel in) { - habitat = new Habitat(); + //habitat = new Habitat(); nom = new String(); nom = in.readString(); murs = new ArrayList<Mur>(4); @@ -85,4 +105,24 @@ public class Piece implements Parcelable { mur.setHabitat(habitat); } } + + public void addMur(Mur e){ + murs.add(e); + e.setPiece(this); + } + + public JSONObject toJSON() { + JSONObject jsonObject = new JSONObject(); + JSONArray jsonArray = new JSONArray(); + for(Mur mur : murs){ + jsonArray.put(mur.toJSON()); + } + try { + jsonObject.put("Nom", getNom()); + jsonObject.put("Murs", jsonArray); + } catch (JSONException e) { + throw new RuntimeException(e); + } + return jsonObject; + } } diff --git a/app/src/main/res/layout/activity_mode_conception.xml b/app/src/main/res/layout/activity_mode_conception.xml index 6ce396ea6db21ab270516393f14ea8b631597b7b..6c5fad93988d1f7d20af81b7c579be45d619db3a 100644 --- a/app/src/main/res/layout/activity_mode_conception.xml +++ b/app/src/main/res/layout/activity_mode_conception.xml @@ -18,16 +18,21 @@ app:layout_constraintBottom_toBottomOf="parent" /> - <LinearLayout - android:id="@+id/linearLayout" - android:orientation="vertical" - android:layout_width="314dp" - android:layout_height="596dp" + <ScrollView + android:id="@+id/scroll" + android:layout_width="360dp" + android:layout_height="640dp" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintVertical_bias="1.0" - android:layout_marginTop="200dp" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@+id/addPiece" - app:layout_constraintEnd_toEndOf="parent"> - </LinearLayout> + app:layout_constraintStart_toStartOf="parent"> + + <LinearLayout + android:id="@+id/linearLayout" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + </LinearLayout> + </ScrollView> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file