From 5e8883303996cbf132f264a3ee3b60919caf0c0d Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 19 Oct 2022 18:39:12 +0200 Subject: [PATCH] bugfix ConcurrentModificationException in aggiunta articoli atumatica in nuovo ordine acquisto --- .../PVOrdineAcquistoEditActivity.java | 4 ---- .../PVOrdineAcquistoEditViewModel.java | 24 +++++++++++++++++-- .../helper/OrdineAcquistoPvHelper.java | 4 +--- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java index 28441efa..18fcb4a6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -10,7 +10,6 @@ import android.widget.Toast; import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; -import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; import com.ravikoradiya.liveadapter.LiveAdapter; @@ -34,7 +33,6 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView; -import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListModel; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.DialogAskAction; @@ -53,8 +51,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi @Inject PVOrdineAcquistoEditViewModel mViewModel; - private final ObservableArrayList mArticoliMutableData = new ObservableArrayList<>(); - public static Intent newInstance(Context context, Ordine ordine) { Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java index ef0a8dd4..d78ada1f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java @@ -117,6 +117,27 @@ public class PVOrdineAcquistoEditViewModel { this.mArticoli.postValue(newList); } + public void saveArticoli(List articoli) { + var newList = this.mArticoli.getValue(); + if (newList == null) { + newList = new ArrayList<>(); + } + + for (ArticoloOrdine articolo : articoli) { + setBgTint(articolo); + + var alreadySavedItem = Stream.of(newList) + .filter(x -> Objects.equals(x.getCodMart(), articolo.getCodMart())) + .findFirst(); + + if (alreadySavedItem.isPresent()) newList.remove(alreadySavedItem.get()); + newList.add(articolo); + } + + + this.mArticoli.postValue(newList); + } + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { this.checkArticolo( @@ -225,8 +246,7 @@ public class PVOrdineAcquistoEditViewModel { }); if (!articoliToSave.isEmpty()) { mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, () -> { - Stream.of(articoliToSave).forEach(this::saveArticolo); - + this.saveArticoli(articoliToSave); this.sendOnLoadingEnded(); }, this::sendError); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java index 4f76dba9..f32b2c6f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java @@ -53,9 +53,7 @@ public class OrdineAcquistoPvHelper { mGrigliaRepository.saveGriglia(griglia, id -> { - saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, grigliaResult -> { - onSaved.run(grigliaResult); - }, onFail); + saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSaved, onFail); }, onFail); }); }, onFail);