diff --git a/app/src/main/java/com/example/coach/api/HelperApi.java b/app/src/main/java/com/example/coach/api/HelperApi.java index 8985b28..0043d6f 100644 --- a/app/src/main/java/com/example/coach/api/HelperApi.java +++ b/app/src/main/java/com/example/coach/api/HelperApi.java @@ -18,27 +18,28 @@ public class HelperApi { return api; } - public static void call(Call> call, ICallbackApi callback) - { + public static void call(Call> call, ICallbackApi callback) { call.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { - Log.d("API", "code : " + response.body().getCode() + - " message : " + response.body().getMessage() + - " result : " + response.body().getResult() - ); + // 1. On vérifie si la requête HTTP a réussi ET si on a un corps de réponse if (response.isSuccessful() && response.body() != null) { + // On peut maintenant logger sans risque + Log.d("API", "code : " + response.body().getCode() + + " message : " + response.body().getMessage()); + callback.onSuccess(response.body().getResult()); } else { + // Cas d'erreur HTTP (ex: 404) ou body null callback.onError(); - Log.e("API", "Erreur API: " + response.code()); + Log.e("API", "Erreur HTTP ou Body null. Code: " + response.code()); } } @Override public void onFailure(Call> call, Throwable throwable) { callback.onError(); - Log.e("API", "Erreur API", throwable); + Log.e("API", "Erreur réseau / désérialisation", throwable); } }); } diff --git a/app/src/main/java/com/example/coach/api/IRequestApi.java b/app/src/main/java/com/example/coach/api/IRequestApi.java index 0cbc9c6..148b289 100644 --- a/app/src/main/java/com/example/coach/api/IRequestApi.java +++ b/app/src/main/java/com/example/coach/api/IRequestApi.java @@ -22,4 +22,7 @@ public interface IRequestApi { @DELETE("profil/{champs}") Call> supprProfil(@Path(value = "champs", encoded = true) String profilJson); + + @DELETE("profil/{keep}") + Call> purgeProfils(@Path(value = "keep", encoded = true) String profilJson); } diff --git a/app/src/main/java/com/example/coach/contract/IMainView.java b/app/src/main/java/com/example/coach/contract/IMainView.java new file mode 100644 index 0000000..4b6abac --- /dev/null +++ b/app/src/main/java/com/example/coach/contract/IMainView.java @@ -0,0 +1,5 @@ +package com.example.coach.contract; + +public interface IMainView extends IAllView{ + +} diff --git a/app/src/main/java/com/example/coach/presenter/MainPresenter.java b/app/src/main/java/com/example/coach/presenter/MainPresenter.java new file mode 100644 index 0000000..8ea98a8 --- /dev/null +++ b/app/src/main/java/com/example/coach/presenter/MainPresenter.java @@ -0,0 +1,35 @@ +package com.example.coach.presenter; + +import com.example.coach.api.HelperApi; +import com.example.coach.api.ICallbackApi; +import com.example.coach.api.IRequestApi; +import com.example.coach.contract.IMainView; + +public class MainPresenter { + private IMainView vue; + public void purgeBDD(Integer nb, ICallbackApi callback) + { + String json = "{\"keep\":\"" + nb + "\"}"; + HelperApi.call(HelperApi.getApi().purgeProfils(json), new ICallbackApi() { + @Override + public void onSuccess(Integer result) { + if (result >= 1) { + vue.afficherMessage("profils supprimés : " + result); + callback.onSuccess(null); + }else{ + vue.afficherMessage("BDD déjà purgée"); + } + } + + @Override + public void onError() { + vue.afficherMessage("échec suppression profils"); + } + }); + } + + public MainPresenter(IMainView vue) + { + this.vue = vue; + } +} diff --git a/app/src/main/java/com/example/coach/view/MainActivity.java b/app/src/main/java/com/example/coach/view/MainActivity.java index 07fef40..b6e5937 100644 --- a/app/src/main/java/com/example/coach/view/MainActivity.java +++ b/app/src/main/java/com/example/coach/view/MainActivity.java @@ -2,7 +2,10 @@ package com.example.coach.view; import android.content.Intent; import android.os.Bundle; +import android.util.Log; +import android.widget.Button; import android.widget.ImageButton; +import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; @@ -11,11 +14,16 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import com.example.coach.R; +import com.example.coach.api.ICallbackApi; +import com.example.coach.contract.IMainView; +import com.example.coach.presenter.MainPresenter; -public class MainActivity extends AppCompatActivity { +public class MainActivity extends AppCompatActivity implements IMainView { private ImageButton btnMonIMG; private ImageButton btnMonHistorique; + private Button btnPurge; + private MainPresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -34,12 +42,14 @@ public class MainActivity extends AppCompatActivity { { chargeObjetsGraphiques(); creerMenu(); + presenter = new MainPresenter(this); } private void chargeObjetsGraphiques() { btnMonIMG = (ImageButton) findViewById(R.id.btnMonIMG); btnMonHistorique = (ImageButton) findViewById(R.id.btnMonHistorique); + btnPurge = (Button) findViewById(R.id.btnPurge); } private void ecouteMenu(Class classe) @@ -52,5 +62,30 @@ public class MainActivity extends AppCompatActivity { { btnMonIMG.setOnClickListener(v -> ecouteMenu(CalculActivity.class)); btnMonHistorique.setOnClickListener(v -> ecouteMenu(HistoActivity.class)); + btnPurge.setOnClickListener(v -> btnPurge_clic()); + + } + + private void btnPurge_clic() + { + presenter.purgeBDD(5, new ICallbackApi() { + @Override + public void onSuccess(Void result) { + // + } + + @Override + public void onError() { + // + } + }); + } + + /** + * @param message + */ + @Override + public void afficherMessage(String message) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 9e2fff8..8c0eebf 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -54,20 +54,41 @@ android:layout_weight="1" android:orientation="vertical"> - + android:layout_height="match_parent" + android:layout_weight="1" + android:orientation="vertical"> + + + + + + + + +