Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package it.dsgroup.sda.baselib.database.lavorazione;
- import android.content.Context;
- import org.jetbrains.annotations.TestOnly;
- import java.util.ArrayList;
- import java.util.List;
- import androidx.annotation.NonNull;
- import io.reactivex.Observable;
- import io.reactivex.android.schedulers.AndroidSchedulers;
- import io.reactivex.functions.Action;
- import io.reactivex.functions.Consumer;
- import io.reactivex.schedulers.Schedulers;
- import it.dsgroup.sda.baselib.database.common.BaseManager;
- import it.dsgroup.sda.baselib.database.common.DataExtractor;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.DestinatarioDao;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.IncLdvDao;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.LdvDao;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.MessaggiConsegneDao;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.MittenteDao;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.RitiroDao;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.ServiziAccessoriDao;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.SpedizioneDao;
- import it.dsgroup.sda.baselib.database.lavorazione.dao.VerificheContestualiDao;
- import it.dsgroup.sda.baselib.database.lavorazione.entity.DestinatarioEntity;
- import it.dsgroup.sda.baselib.database.lavorazione.entity.IncLdvEntity;
- import it.dsgroup.sda.baselib.database.lavorazione.entity.LdvEntity;
- import it.dsgroup.sda.baselib.database.lavorazione.entity.MittenteEntity;
- import it.dsgroup.sda.baselib.database.lavorazione.entity.RitiroEntity;
- import it.dsgroup.sda.baselib.database.lavorazione.entity.Spedizione;
- import it.dsgroup.sda.baselib.database.lavorazione.entity.SpedizioneEntity;
- import it.dsgroup.sda.baselib.model.api.InfoOggettoOut;
- import it.dsgroup.sda.logger.Logger;
- public class LavorazioneManager extends BaseManager {
- // Singleton instance di StatusManager
- private static LavorazioneManager sInstance;
- @NonNull
- private LdvDao mLdvDao;
- @NonNull
- private IncLdvDao mIncLdvDao;
- @NonNull
- private DestinatarioDao mDestinatarioDao;
- @NonNull
- private MittenteDao mMittenteDao;
- @NonNull
- private RitiroDao mRitiroDao;
- @NonNull
- private SpedizioneDao mSpedizioneDao;
- @NonNull
- private ServiziAccessoriDao mServiziAccessoriDao;
- @NonNull
- private VerificheContestualiDao mVerificheContestualiDao;
- @NonNull
- private MessaggiConsegneDao mMessaggiConsegneDao;
- public static LavorazioneManager getInstance(Context context) {
- if (sInstance == null) {
- synchronized (LavorazioneManager.class) {
- if (sInstance == null) {
- sInstance = new LavorazioneManager(context);
- sInstance.TAG = LavorazioneManager.class.getSimpleName();
- }
- }
- }
- return sInstance;
- }
- public LavorazioneManager(Context context) {
- try {
- mDb = LavorazioneDatabase.getInstance(context);
- mLdvDao = ((LavorazioneDatabase) mDb).getLdvDao();
- mIncLdvDao = ((LavorazioneDatabase) mDb).getIncLdvDao();
- mDestinatarioDao = ((LavorazioneDatabase) mDb).getDestinatarioDao();
- mMittenteDao = ((LavorazioneDatabase) mDb).getMittenteDao();
- mRitiroDao = ((LavorazioneDatabase) mDb).getRitiroDao();
- mSpedizioneDao = ((LavorazioneDatabase) mDb).getSpedizioneDao();
- mServiziAccessoriDao = ((LavorazioneDatabase) mDb).getServiziAccessoriDao();
- mVerificheContestualiDao = ((LavorazioneDatabase) mDb).getVerificheContestualiDao();
- mMessaggiConsegneDao = ((LavorazioneDatabase) mDb).getMessaggiConsegneDao();
- } catch (Exception e) {
- Logger.error(TAG, "Errore nel costruttore", e);
- }
- }
- public static void release() {
- LavorazioneDatabase.release();
- sInstance = null;
- }
- @TestOnly
- @NonNull
- public SpedizioneDao getSpedizioneDao() {
- return mSpedizioneDao;
- }
- @TestOnly
- @NonNull
- public MessaggiConsegneDao getMessaggiConsegneDao() {
- return mMessaggiConsegneDao;
- }
- /**
- * SELECT
- */
- /**
- * CHIAMARE <b>SOLO</b> in un Thread secondario ALTRIMENTI avviene un CRASH APPLICATIVO
- */
- public List<LdvEntity> getAllLdvRangesIoThread() {
- if (isDatabaseReady()) {
- return mLdvDao.listAllLdvRecordIoThread();
- }
- return new ArrayList<>();
- }
- @NonNull
- public void getLdvEntity(Consumer<LdvEntity> consumer) {
- if (isDatabaseReady())
- queryUIHandleEmpty(mLdvDao.selectLdv(), consumer,
- t -> {
- Logger.debug(TAG, "nessun record trovato caso 1");
- consumer.accept(new LdvEntity());
- });
- }
- public void getAllRitiri(Consumer<List<RitiroEntity>> consumer) {
- if (isDatabaseReady())
- queryUI(mRitiroDao.getAllRitiri(), consumer);
- }
- public void getAllFlowable(Consumer<List<Spedizione>> consumer) {
- if (isDatabaseReady())
- queryUI(mSpedizioneDao.selectAllFlowable(), consumer);
- }
- public void getByCodiceLdv(String codiceLdv, Consumer<Spedizione> consumer) {
- if (isDatabaseReady())
- queryUI(mSpedizioneDao.selectByCodiceLdv(codiceLdv), consumer);
- }
- public void getLdvNotSynced(Consumer<List<SpedizioneEntity>> consumer) {
- if (isDatabaseReady())
- queryUI(mSpedizioneDao.selectLdvNotSynced(), consumer);
- }
- public List<SpedizioneEntity> getFigliIOThread(String sottoCodice) {
- if (isDatabaseReady())
- return mSpedizioneDao.selectFigliIoThread("%" + sottoCodice + "%");
- else
- return new ArrayList<>();
- }
- public SpedizioneEntity getMadreIOThread(String sottoCodice) {
- if (isDatabaseReady())
- return mSpedizioneDao.selectMadreIoThread("%" + sottoCodice + "%");
- else
- return null;
- }
- /**
- * INSERT
- */
- public void processInfoOggettoResponse(List<SpedizioneEntity> ldvToSync, InfoOggettoOut response, Consumer<Boolean> consumer) {
- mDisposable.add(Observable.fromCallable(() -> {
- if (isDatabaseReady()) {
- Logger.debug(TAG, "Salvataggio dati da InfoOggetto");
- List<SpedizioneEntity> matchingList = DataExtractor.extractMatchingLdv(ldvToSync, response.getSpedizioni());
- Spedizione childs = DataExtractor.extractLdvChilds(matchingList);
- if (matchingList.size() > 0) {
- mSpedizioneDao.updateAllIOThread(matchingList);
- mServiziAccessoriDao.insertAllIOThread(childs.getServiziAccessoriEntity());
- mVerificheContestualiDao.insertAllIOThread(childs.getVerificheContestualiEntity());
- mMessaggiConsegneDao.insertAllIOThread(childs.getMessaggiConsegneEntity());
- return true;
- } else {
- Logger.warn(TAG, "Sono stati scaricati LdV ma non รจ stato effettuato il matching con nessuno");
- return false;
- }
- } else
- return false;
- })
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(consumer, t -> consumer.accept(false)));
- }
- public void insertOrReplaceRitiri(List<RitiroEntity> ritiri, Action action) {
- if (isDatabaseReady()) {
- queryUI(mRitiroDao.insertAll(ritiri), action);
- }
- }
- public void insertLdvList(List<LdvEntity> list, Action action) {
- if (isDatabaseReady())
- queryUI(mLdvDao.insertAll(list), action);
- }
- public void insertIncLdvList(List<IncLdvEntity> list, Action action) {
- if (isDatabaseReady())
- queryUI(mIncLdvDao.insertAll(list), action);
- }
- public void insertContattiDestinatario(List<DestinatarioEntity> list, Action action) {
- if (isDatabaseReady())
- queryUI(mDestinatarioDao.insertAll(list), action);
- }
- public void insertContattiMittente(List<MittenteEntity> list, Action action) {
- if (isDatabaseReady())
- queryUI(mMittenteDao.insertAll(list), action);
- }
- /**
- * UPDATE
- */
- public void insertOrReplaceSpedizione(SpedizioneEntity spedizioneEntity, Consumer<Long> consumer) {
- if (isDatabaseReady())
- queryUI(mSpedizioneDao.insertOrReplace(spedizioneEntity), consumer);
- }
- public void udpateLdvEntityLowNumber(String lowNumber, Consumer<Long> consumer) {
- if (isDatabaseReady())
- getLdvEntity(ldvEntity -> {
- ldvEntity.setLnumber(lowNumber);
- queryUI(mLdvDao.insertOrReplace(ldvEntity), consumer);
- });
- }
- public void udpateLdvEntityHighNumber(String highNumber, Consumer<Long> consumer) {
- if (isDatabaseReady())
- getLdvEntity(ldvEntity -> {
- ldvEntity.setHnumber(highNumber);
- queryUI(mLdvDao.insertOrReplace(ldvEntity), consumer);
- });
- }
- public Integer updateSpedizioneIOThread(SpedizioneEntity spedizioneEntity) {
- if (isDatabaseReady())
- return mSpedizioneDao.updateIOThread(spedizioneEntity);
- else
- return null;
- }
- /**
- * DELETE
- */
- public void clearDestinatario(Action action) {
- if (isDatabaseReady())
- queryUI(mDestinatarioDao.clearDestinatario(), action);
- }
- public void clearMittente(Action action) {
- if (isDatabaseReady())
- queryUI(mMittenteDao.clearMittente(), action);
- }
- public void clearLdv(Action action) {
- if (isDatabaseReady())
- queryUI(mLdvDao.clearLdv(), action);
- }
- public void clearIncLdv(Action action) {
- if (isDatabaseReady())
- queryUI(mIncLdvDao.clearIncLdv(), action);
- }
- public void clearGiroData(Action action) {
- if (isDatabaseReady())
- clearDestinatario(() ->
- clearMittente(() ->
- clearLdv(() ->
- clearIncLdv(action))));
- }
- public void clearSpedizione(SpedizioneEntity spedizioneEntity, Consumer<Integer> consumer) {
- if (isDatabaseReady())
- queryUI(mSpedizioneDao.delete(spedizioneEntity), consumer);
- }
- public void clearTabelleSpedizioni(Action action) {
- if (isDatabaseReady())
- queryUI(mSpedizioneDao.deleteAllSpedizioni(), action);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement