From b0272cd9e072786b46ef88b98965a2ec6c22ca15 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Apr 2024 12:07:41 +0200 Subject: [PATCH 1/4] Fix thread in validation DialogInputQuantityV2 --- .../DialogInputQuantityV2View.java | 26 ++++---- .../DialogInputQuantityV2ViewModel.java | 63 ++++++++----------- 2 files changed, 38 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index e1111263..0aa33da3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -256,14 +256,19 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia }; public void save() { + this.onLoadingStarted(); + this.mViewModel.validate(validated -> { - if (validated) { - this.mAbort = false; - dismiss(); - this.mOnComplete.run(this.mViewModel.getResult(), false); - }else { + + requireActivity().runOnUiThread(() -> { this.onLoadingEnded(); - } + + if (validated) { + this.mAbort = false; + dismiss(); + this.mOnComplete.run(this.mViewModel.getResult(), false); + } + }); }); } @@ -273,7 +278,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mAbort = false; dismiss(); this.mOnComplete.run(this.mViewModel.getResult(), true); - }else { + } else { this.onLoadingEnded(); } }); @@ -527,13 +532,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mEnableDataCallback = true; } - @Override - public void onError(Exception ex) { - DialogSimpleMessageView - .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) - .show(requireActivity().getSupportFragmentManager(), "tag"); - } - @Override public void onWarning(String text, RunnableArgs result) { DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 95bfd39e..39f78cb1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -99,7 +99,6 @@ public class DialogInputQuantityV2ViewModel { private final MagazzinoRESTConsumer mMagazzinoRESTConsumer; private StatoPartitaMag statoArt; - private MtbPartitaMag mtbPartitaMag; @Inject public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) { @@ -488,7 +487,7 @@ public class DialogInputQuantityV2ViewModel { new Thread(() -> { if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { - this.mListener.onError(new InvalidQtaCnfQuantityException()); + this.sendError(new InvalidQtaCnfQuantityException()); onValidated.run(false); return; } @@ -497,33 +496,33 @@ public class DialogInputQuantityV2ViewModel { if (suggestPartitaMagRunnable != null) { internalPartitaMag = suggestPartitaMagRunnable.run(this); if (internalPartitaMag == null) { - this.mListener.onError(new InvalidBatchLotException()); + this.sendError(new InvalidBatchLotException()); onValidated.run(false); return; } } else { - this.mListener.onError(new InvalidBatchLotException()); + this.sendError(new InvalidBatchLotException()); onValidated.run(false); return; } } if (this.statoArt == StatoPartitaMag.DISATTIVO) { - this.mListener.onError(new InactiveBatchLotException(internalPartitaMag)); + this.sendError(new InactiveBatchLotException(internalPartitaMag)); onValidated.run(false); return; } if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { - this.mListener.onError(new InvalidBatchLotException()); + this.sendError(new InvalidBatchLotException()); onValidated.run(false); return; } if (this.shouldAskDataScad && this.internalDataScad == null) { - this.mListener.onError(new InvalidExpireDateException()); + this.sendError(new InvalidExpireDateException()); onValidated.run(false); return; } @@ -531,7 +530,7 @@ public class DialogInputQuantityV2ViewModel { if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); + this.sendError(new OverflowQtaTotOrderedQuantityException()); onValidated.run(false); return; } @@ -539,14 +538,14 @@ public class DialogInputQuantityV2ViewModel { if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); + this.sendError(new OverflowNumCnfOrderedQuantityException()); onValidated.run(false); return; } if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { - this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); + this.sendError(new OverflowQtaTotAvailableQuantityException()); onValidated.run(false); return; } @@ -554,7 +553,7 @@ public class DialogInputQuantityV2ViewModel { if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) && !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); + this.sendError(new OverflowNumCnfAvailableQuantityException()); onValidated.run(false); return; } @@ -564,13 +563,13 @@ public class DialogInputQuantityV2ViewModel { UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) || UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) { - this.mListener.onError(new InvalidQuantityException()); + this.sendError(new InvalidQuantityException()); onValidated.run(false); return; } if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { - this.mListener.onError(new InvalidNotesException()); + this.sendError(new InvalidNotesException()); onValidated.run(false); return; } @@ -579,10 +578,17 @@ public class DialogInputQuantityV2ViewModel { this.internalPartitaMag = this.internalPartitaMag.toUpperCase(); if (SettingsManager.iDB().isFlagWarningNewPartitaMag()) { - asyncMagazzinoRESTConsumer(internalPartitaMag, this.getMtbAart().getCodMart()); + MtbPartitaMag mtbPartitaMag = null; + try { + mtbPartitaMag = retrievePartitaMag(internalPartitaMag, this.getMtbAart().getCodMart()); + } catch (Exception e) { + this.sendError(e); + onValidated.run(false); + return; + } if (mtbPartitaMag == null) { - boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.batch_lot_inexistent_error_message)); + boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.batch_lot_inexistent_error_message)); if (!result) { onValidated.run(false); return; @@ -593,7 +599,7 @@ public class DialogInputQuantityV2ViewModel { if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.confirm_ordered_quantity_overflow_error_message)); + boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.confirm_ordered_quantity_overflow_error_message)); if (!result) { onValidated.run(false); return; @@ -603,7 +609,7 @@ public class DialogInputQuantityV2ViewModel { if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.confirm_ordered_num_cnf_overflow_error_message)); + boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.confirm_ordered_num_cnf_overflow_error_message)); if (!result) { onValidated.run(false); return; @@ -614,7 +620,7 @@ public class DialogInputQuantityV2ViewModel { }).start(); } - private boolean runAsyncWarningDialog(String text) { + private boolean runWarningDialogSyncronized(String text) { try { final FutureTask ft = new FutureTask<>(() -> { }, new Object()); @@ -632,26 +638,9 @@ public class DialogInputQuantityV2ViewModel { } } - private void asyncMagazzinoRESTConsumer(String partitaMag, String codMart) { - try { - final FutureTask ft = new FutureTask<>(() -> { - }, new Object()); - mMagazzinoRESTConsumer.retrievePartitaMag( - partitaMag, - codMart, - returnPartitaMag -> { - mtbPartitaMag = returnPartitaMag; - ft.run(); - }, - e -> { - this.sendError(e); - ft.run(); - }); + private MtbPartitaMag retrievePartitaMag(String partitaMag, String codMart) throws Exception { + return mMagazzinoRESTConsumer.retrievePartitaMagSyncronized(partitaMag, codMart, this::sendError); - ft.get(); - } catch (Exception e) { - this.sendError(e); - } } public DialogInputQuantityV2ResultDTO getResult() { From 230a32139d02ecdc027e178b271006830d35e12e Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 10 Apr 2024 12:21:29 +0200 Subject: [PATCH 2/4] Aggiunto retrievePartitaMagSyncronized in MagazzinoRESTConsumer --- .../core/rest/consumers/MagazzinoRESTConsumer.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index 687689be..47bf7627 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -90,6 +90,19 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { }); } + public MtbPartitaMag retrievePartitaMagSyncronized(String partitaMag, String codMart, RunnableArgs onFailed) throws Exception { + MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); + Response> response = service.retrievePartitaMag(codMart, partitaMag) + .execute(); + + if(response.isSuccessful()) { + return analyzeAnswer(response, "retrievePartitaMag"); + } else { + //TO BE TESTED + return null; + } + } + public void retrievePartitaMag(String partitaMag, String codMart, RunnableArgs onComplete, RunnableArgs onFailed){ MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); service.retrievePartitaMag(codMart, partitaMag) From e643f25aa36ade71a8b7cad3f2594432ee3b6515 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 10 Apr 2024 13:26:12 +0200 Subject: [PATCH 3/4] Fix response retrievePartitaMagSyncronized --- .../core/rest/consumers/MagazzinoRESTConsumer.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index 47bf7627..5b6bc36a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -2,8 +2,11 @@ package it.integry.integrywmsnative.core.rest.consumers; import androidx.annotation.NonNull; +import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import org.json.JSONObject; + import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; @@ -12,11 +15,13 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.DtbOrdt; +import it.integry.integrywmsnative.core.model.ErrorResponse; import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; +import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -95,15 +100,10 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { Response> response = service.retrievePartitaMag(codMart, partitaMag) .execute(); - if(response.isSuccessful()) { - return analyzeAnswer(response, "retrievePartitaMag"); - } else { - //TO BE TESTED - return null; - } + return analyzeAnswer(response, "retrievePartitaMag"); } - public void retrievePartitaMag(String partitaMag, String codMart, RunnableArgs onComplete, RunnableArgs onFailed){ + public void retrievePartitaMag(String partitaMag, String codMart, RunnableArgs onComplete, RunnableArgs onFailed) { MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); service.retrievePartitaMag(codMart, partitaMag) .enqueue(new Callback<>() { From 835915b46a9c579655819bda48eac9145b3d7991 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 10 Apr 2024 13:27:06 +0200 Subject: [PATCH 4/4] -> v1.40.11 (428) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 646f9ac1..6d0d6d0b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 427 - def appVersionName = '1.40.10' + def appVersionCode = 428 + def appVersionName = '1.40.11' signingConfigs { release {