Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.68 KB | None | 0 0
  1. package it.dsgroup.sda.baselib.database.lavorazione;
  2.  
  3. import android.content.Context;
  4.  
  5. import org.jetbrains.annotations.TestOnly;
  6.  
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import androidx.annotation.NonNull;
  11. import io.reactivex.Observable;
  12. import io.reactivex.android.schedulers.AndroidSchedulers;
  13. import io.reactivex.functions.Action;
  14. import io.reactivex.functions.Consumer;
  15. import io.reactivex.schedulers.Schedulers;
  16. import it.dsgroup.sda.baselib.database.common.BaseManager;
  17. import it.dsgroup.sda.baselib.database.common.DataExtractor;
  18. import it.dsgroup.sda.baselib.database.lavorazione.dao.DestinatarioDao;
  19. import it.dsgroup.sda.baselib.database.lavorazione.dao.IncLdvDao;
  20. import it.dsgroup.sda.baselib.database.lavorazione.dao.LdvDao;
  21. import it.dsgroup.sda.baselib.database.lavorazione.dao.MessaggiConsegneDao;
  22. import it.dsgroup.sda.baselib.database.lavorazione.dao.MittenteDao;
  23. import it.dsgroup.sda.baselib.database.lavorazione.dao.RitiroDao;
  24. import it.dsgroup.sda.baselib.database.lavorazione.dao.ServiziAccessoriDao;
  25. import it.dsgroup.sda.baselib.database.lavorazione.dao.SpedizioneDao;
  26. import it.dsgroup.sda.baselib.database.lavorazione.dao.VerificheContestualiDao;
  27. import it.dsgroup.sda.baselib.database.lavorazione.entity.DestinatarioEntity;
  28. import it.dsgroup.sda.baselib.database.lavorazione.entity.IncLdvEntity;
  29. import it.dsgroup.sda.baselib.database.lavorazione.entity.LdvEntity;
  30. import it.dsgroup.sda.baselib.database.lavorazione.entity.MittenteEntity;
  31. import it.dsgroup.sda.baselib.database.lavorazione.entity.RitiroEntity;
  32. import it.dsgroup.sda.baselib.database.lavorazione.entity.Spedizione;
  33. import it.dsgroup.sda.baselib.database.lavorazione.entity.SpedizioneEntity;
  34. import it.dsgroup.sda.baselib.model.api.InfoOggettoOut;
  35. import it.dsgroup.sda.logger.Logger;
  36.  
  37. public class LavorazioneManager extends BaseManager {
  38.  
  39. // Singleton instance di StatusManager
  40. private static LavorazioneManager sInstance;
  41.  
  42. @NonNull
  43. private LdvDao mLdvDao;
  44. @NonNull
  45. private IncLdvDao mIncLdvDao;
  46. @NonNull
  47. private DestinatarioDao mDestinatarioDao;
  48. @NonNull
  49. private MittenteDao mMittenteDao;
  50. @NonNull
  51. private RitiroDao mRitiroDao;
  52. @NonNull
  53. private SpedizioneDao mSpedizioneDao;
  54. @NonNull
  55. private ServiziAccessoriDao mServiziAccessoriDao;
  56. @NonNull
  57. private VerificheContestualiDao mVerificheContestualiDao;
  58. @NonNull
  59. private MessaggiConsegneDao mMessaggiConsegneDao;
  60.  
  61. public static LavorazioneManager getInstance(Context context) {
  62. if (sInstance == null) {
  63. synchronized (LavorazioneManager.class) {
  64. if (sInstance == null) {
  65. sInstance = new LavorazioneManager(context);
  66. sInstance.TAG = LavorazioneManager.class.getSimpleName();
  67. }
  68. }
  69. }
  70.  
  71. return sInstance;
  72. }
  73.  
  74. public LavorazioneManager(Context context) {
  75. try {
  76. mDb = LavorazioneDatabase.getInstance(context);
  77. mLdvDao = ((LavorazioneDatabase) mDb).getLdvDao();
  78. mIncLdvDao = ((LavorazioneDatabase) mDb).getIncLdvDao();
  79. mDestinatarioDao = ((LavorazioneDatabase) mDb).getDestinatarioDao();
  80. mMittenteDao = ((LavorazioneDatabase) mDb).getMittenteDao();
  81. mRitiroDao = ((LavorazioneDatabase) mDb).getRitiroDao();
  82. mSpedizioneDao = ((LavorazioneDatabase) mDb).getSpedizioneDao();
  83. mServiziAccessoriDao = ((LavorazioneDatabase) mDb).getServiziAccessoriDao();
  84. mVerificheContestualiDao = ((LavorazioneDatabase) mDb).getVerificheContestualiDao();
  85. mMessaggiConsegneDao = ((LavorazioneDatabase) mDb).getMessaggiConsegneDao();
  86. } catch (Exception e) {
  87. Logger.error(TAG, "Errore nel costruttore", e);
  88. }
  89. }
  90.  
  91. public static void release() {
  92. LavorazioneDatabase.release();
  93. sInstance = null;
  94. }
  95.  
  96. @TestOnly
  97. @NonNull
  98. public SpedizioneDao getSpedizioneDao() {
  99. return mSpedizioneDao;
  100. }
  101.  
  102. @TestOnly
  103. @NonNull
  104. public MessaggiConsegneDao getMessaggiConsegneDao() {
  105. return mMessaggiConsegneDao;
  106. }
  107.  
  108. /**
  109. * SELECT
  110. */
  111. /**
  112. * CHIAMARE <b>SOLO</b> in un Thread secondario ALTRIMENTI avviene un CRASH APPLICATIVO
  113. */
  114. public List<LdvEntity> getAllLdvRangesIoThread() {
  115. if (isDatabaseReady()) {
  116. return mLdvDao.listAllLdvRecordIoThread();
  117. }
  118. return new ArrayList<>();
  119. }
  120.  
  121. @NonNull
  122. public void getLdvEntity(Consumer<LdvEntity> consumer) {
  123. if (isDatabaseReady())
  124. queryUIHandleEmpty(mLdvDao.selectLdv(), consumer,
  125. t -> {
  126. Logger.debug(TAG, "nessun record trovato caso 1");
  127. consumer.accept(new LdvEntity());
  128. });
  129. }
  130.  
  131. public void getAllRitiri(Consumer<List<RitiroEntity>> consumer) {
  132. if (isDatabaseReady())
  133. queryUI(mRitiroDao.getAllRitiri(), consumer);
  134. }
  135.  
  136. public void getAllFlowable(Consumer<List<Spedizione>> consumer) {
  137. if (isDatabaseReady())
  138. queryUI(mSpedizioneDao.selectAllFlowable(), consumer);
  139. }
  140.  
  141. public void getByCodiceLdv(String codiceLdv, Consumer<Spedizione> consumer) {
  142. if (isDatabaseReady())
  143. queryUI(mSpedizioneDao.selectByCodiceLdv(codiceLdv), consumer);
  144. }
  145.  
  146. public void getLdvNotSynced(Consumer<List<SpedizioneEntity>> consumer) {
  147. if (isDatabaseReady())
  148. queryUI(mSpedizioneDao.selectLdvNotSynced(), consumer);
  149. }
  150.  
  151. public List<SpedizioneEntity> getFigliIOThread(String sottoCodice) {
  152. if (isDatabaseReady())
  153. return mSpedizioneDao.selectFigliIoThread("%" + sottoCodice + "%");
  154. else
  155. return new ArrayList<>();
  156. }
  157.  
  158. public SpedizioneEntity getMadreIOThread(String sottoCodice) {
  159. if (isDatabaseReady())
  160. return mSpedizioneDao.selectMadreIoThread("%" + sottoCodice + "%");
  161. else
  162. return null;
  163. }
  164.  
  165. /**
  166. * INSERT
  167. */
  168.  
  169. public void processInfoOggettoResponse(List<SpedizioneEntity> ldvToSync, InfoOggettoOut response, Consumer<Boolean> consumer) {
  170. mDisposable.add(Observable.fromCallable(() -> {
  171. if (isDatabaseReady()) {
  172. Logger.debug(TAG, "Salvataggio dati da InfoOggetto");
  173. List<SpedizioneEntity> matchingList = DataExtractor.extractMatchingLdv(ldvToSync, response.getSpedizioni());
  174. Spedizione childs = DataExtractor.extractLdvChilds(matchingList);
  175. if (matchingList.size() > 0) {
  176. mSpedizioneDao.updateAllIOThread(matchingList);
  177. mServiziAccessoriDao.insertAllIOThread(childs.getServiziAccessoriEntity());
  178. mVerificheContestualiDao.insertAllIOThread(childs.getVerificheContestualiEntity());
  179. mMessaggiConsegneDao.insertAllIOThread(childs.getMessaggiConsegneEntity());
  180. return true;
  181. } else {
  182. Logger.warn(TAG, "Sono stati scaricati LdV ma non รจ stato effettuato il matching con nessuno");
  183. return false;
  184. }
  185. } else
  186. return false;
  187. })
  188. .subscribeOn(Schedulers.io())
  189. .observeOn(AndroidSchedulers.mainThread())
  190. .subscribe(consumer, t -> consumer.accept(false)));
  191.  
  192. }
  193.  
  194. public void insertOrReplaceRitiri(List<RitiroEntity> ritiri, Action action) {
  195. if (isDatabaseReady()) {
  196. queryUI(mRitiroDao.insertAll(ritiri), action);
  197. }
  198. }
  199.  
  200. public void insertLdvList(List<LdvEntity> list, Action action) {
  201. if (isDatabaseReady())
  202. queryUI(mLdvDao.insertAll(list), action);
  203. }
  204.  
  205. public void insertIncLdvList(List<IncLdvEntity> list, Action action) {
  206. if (isDatabaseReady())
  207. queryUI(mIncLdvDao.insertAll(list), action);
  208. }
  209.  
  210. public void insertContattiDestinatario(List<DestinatarioEntity> list, Action action) {
  211. if (isDatabaseReady())
  212. queryUI(mDestinatarioDao.insertAll(list), action);
  213. }
  214.  
  215. public void insertContattiMittente(List<MittenteEntity> list, Action action) {
  216. if (isDatabaseReady())
  217. queryUI(mMittenteDao.insertAll(list), action);
  218. }
  219.  
  220. /**
  221. * UPDATE
  222. */
  223. public void insertOrReplaceSpedizione(SpedizioneEntity spedizioneEntity, Consumer<Long> consumer) {
  224. if (isDatabaseReady())
  225. queryUI(mSpedizioneDao.insertOrReplace(spedizioneEntity), consumer);
  226. }
  227.  
  228. public void udpateLdvEntityLowNumber(String lowNumber, Consumer<Long> consumer) {
  229. if (isDatabaseReady())
  230. getLdvEntity(ldvEntity -> {
  231. ldvEntity.setLnumber(lowNumber);
  232. queryUI(mLdvDao.insertOrReplace(ldvEntity), consumer);
  233. });
  234. }
  235.  
  236. public void udpateLdvEntityHighNumber(String highNumber, Consumer<Long> consumer) {
  237. if (isDatabaseReady())
  238. getLdvEntity(ldvEntity -> {
  239. ldvEntity.setHnumber(highNumber);
  240. queryUI(mLdvDao.insertOrReplace(ldvEntity), consumer);
  241. });
  242. }
  243.  
  244. public Integer updateSpedizioneIOThread(SpedizioneEntity spedizioneEntity) {
  245. if (isDatabaseReady())
  246. return mSpedizioneDao.updateIOThread(spedizioneEntity);
  247. else
  248. return null;
  249. }
  250.  
  251. /**
  252. * DELETE
  253. */
  254. public void clearDestinatario(Action action) {
  255. if (isDatabaseReady())
  256. queryUI(mDestinatarioDao.clearDestinatario(), action);
  257. }
  258.  
  259. public void clearMittente(Action action) {
  260. if (isDatabaseReady())
  261. queryUI(mMittenteDao.clearMittente(), action);
  262. }
  263.  
  264. public void clearLdv(Action action) {
  265. if (isDatabaseReady())
  266. queryUI(mLdvDao.clearLdv(), action);
  267. }
  268.  
  269. public void clearIncLdv(Action action) {
  270. if (isDatabaseReady())
  271. queryUI(mIncLdvDao.clearIncLdv(), action);
  272. }
  273.  
  274. public void clearGiroData(Action action) {
  275. if (isDatabaseReady())
  276. clearDestinatario(() ->
  277. clearMittente(() ->
  278. clearLdv(() ->
  279. clearIncLdv(action))));
  280. }
  281.  
  282. public void clearSpedizione(SpedizioneEntity spedizioneEntity, Consumer<Integer> consumer) {
  283. if (isDatabaseReady())
  284. queryUI(mSpedizioneDao.delete(spedizioneEntity), consumer);
  285. }
  286.  
  287. public void clearTabelleSpedizioni(Action action) {
  288. if (isDatabaseReady())
  289. queryUI(mSpedizioneDao.deleteAllSpedizioni(), action);
  290. }
  291. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement