package it.integry.integrywmsnative; import android.app.Application; import android.os.Handler; import androidx.core.os.HandlerCompat; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.core.context.AppContext; import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.menu.MenuRESTConsumer; import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.AziendaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.services.inventario.InventarioService; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.update.UpdatesManager; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer; import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; @Module public class MainApplicationModule { private final Application mApplication; public MainApplicationModule(Application application) { this.mApplication = application; } @Provides @Singleton Application providesApplication() { return mApplication; } @Provides @Singleton public ExecutorService providesExecutorService() { return Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); } @Provides @Singleton public Handler providesMainThreadHandler() { return HandlerCompat.createAsync(mApplication.getApplicationContext().getMainLooper()); } @Provides @Singleton public SettingsManager provideSettingsManager(SystemRESTConsumer systemRESTConsumer, AziendaRESTConsumer aziendaRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, GestSetupRESTConsumer gestSetupRESTConsumer) { return new SettingsManager(mApplication, systemRESTConsumer, aziendaRESTConsumer, gestSetupRESTConsumer, posizioniRESTConsumer); } @Provides @Singleton AppContext providesAppContext() { return new AppContext(mApplication); } @Provides @Singleton MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) { return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer); } @Provides @Singleton ColliDataRecoverService provideColliDataRecoverService() { ColliDataRecoverService colliDataRecoverService = new ColliDataRecoverService(mApplication.getApplicationContext()); colliDataRecoverService.init(); return colliDataRecoverService; } @Provides @Singleton MenuService provideMenuService(MenuRESTConsumer menuRESTConsumer) { return new MenuService(menuRESTConsumer); } @Provides @Singleton UpdatesManager provideUpdatesManager() { return new UpdatesManager(); } @Provides @Singleton DialogProgressView providesDialogProgressView() { return DialogProgressView.newInstance(); } @Provides @Singleton DialogInputQuantityV2View providesDialogInputQuantityV2View() { return new DialogInputQuantityV2View(); } @Provides @Singleton OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { return new OrdiniRESTConsumer(systemRESTConsumer, entityRESTConsumer); } @Provides @Singleton GestSetupRESTConsumer provideGestSetupRESTConsumer() { return new GestSetupRESTConsumer(); } @Provides @Singleton ArticoloRESTConsumer provideArticoloRESTConsumer(SystemRESTConsumer systemRESTConsumer) { return new ArticoloRESTConsumer(systemRESTConsumer); } @Provides @Singleton CommessaRESTConsumer provideCommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) { return new CommessaRESTConsumer(systemRESTConsumer); } @Provides @Singleton DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) { return new DepositoRESTConsumer(entityRESTConsumer, systemRESTConsumer); } @Provides @Singleton MenuRESTConsumer provideMenuRESTConsumer() { return new MenuRESTConsumer(); } @Provides @Singleton MagazzinoRESTConsumer provideMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer) { return new MagazzinoRESTConsumer(systemRESTConsumer); } @Provides @Singleton MesRESTConsumer provideMesRESTConsumer(SystemRESTConsumer systemRESTConsumer) { return new MesRESTConsumer(systemRESTConsumer); } @Provides @Singleton EntityRESTConsumer provideEntityRESTConsumer() { return new EntityRESTConsumer(); } @Provides @Singleton ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer, EntityRESTConsumer entityRESTConsumer) { return new ColliMagazzinoRESTConsumer(systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer); } @Provides @Singleton AziendaRESTConsumer provideAziendaRESTConsumer() { return new AziendaRESTConsumer(); } @Provides @Singleton BarcodeRESTConsumer provideBarcodeRESTConsumer() { return new BarcodeRESTConsumer(); } @Provides @Singleton PrinterRESTConsumer providePrinterRESTConsumer() { return new PrinterRESTConsumer(); } @Provides @Singleton SystemRESTConsumer provideSystemRESTConsumer() { return new SystemRESTConsumer(); } @Provides @Singleton PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) { return new PVOrdiniAcquistoRESTConsumer(magazzinoRESTConsumer); } @Provides @Singleton PosizioniRESTConsumer providesPosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { return new PosizioniRESTConsumer(systemRESTConsumer); } @Provides @Singleton ProdFabbisognoLineeProdRESTConsumer providesProdFabbisognoLineeProdRESTConsumer(SystemRESTConsumer systemRESTConsumer) { return new ProdFabbisognoLineeProdRESTConsumer(systemRESTConsumer); } @Provides @Singleton DocInterniRESTConsumer provideDocInterniRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) { return new DocInterniRESTConsumer(magazzinoRESTConsumer); } @Provides @Singleton GiacenzaRESTConsumer provideGiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { return new GiacenzaRESTConsumer(systemRESTConsumer, articoloRESTConsumer); } @Provides @Singleton InventarioService provideInventarioService(GiacenzaRESTConsumer giacenzaRESTConsumer) { return new InventarioService(giacenzaRESTConsumer); } @Provides @Singleton ProductionLinesRESTConsumer provideProductionLinesRESTConsumer() { return new ProductionLinesRESTConsumer(); } @Provides @Singleton DocumentRESTConsumer provideDocumentiRESTConsumer() { return new DocumentRESTConsumer(); } @Provides @Singleton ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer() { return new ColliAccettazioneRESTConsumer(); } @Provides @Singleton ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer() { return new ColliSpedizioneRESTConsumer(); } @Provides @Singleton ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer() { return new ColliLavorazioneRESTConsumer(); } @Provides @Singleton MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer() { return new MagazzinoAutomaticoRESTConsumer(); } }