package com.rapidftr.controllers.internal; import com.rapidftr.Key; import com.rapidftr.controllers.*; import com.rapidftr.datastore.ChildrenRecordStore; import com.rapidftr.datastore.FormStore; import com.rapidftr.model.ContactInformation; import com.rapidftr.net.ConnectionFactory; import com.rapidftr.net.HttpServer; import com.rapidftr.net.HttpService; import com.rapidftr.screens.*; import com.rapidftr.screens.internal.UiStack; import com.rapidftr.services.*; import com.rapidftr.utilities.*; import java.util.Calendar; public class ControllerFactory { private final Settings settings; private final UiStack uiStack; private final DateFormatter dateFormatter; private final FormStore formStore; private final ChildrenRecordStore childrenRecordStore; private final HttpSettings httpSettings; private final LoginService loginService; private final ChildSyncService childSyncService; private final FormService formService; private Store store; private ContactInformationSyncService contactInformationSyncService; public ControllerFactory(UiStack uiStack) { this.uiStack = uiStack; store = new DefaultStore(new Key("com.rapidftr.utilities.ftrstore")); childrenRecordStore = new ChildrenRecordStore( new DefaultStore(new Key("com.rapidftr.utilities.childrenstore"))); formStore = new FormStore(new DefaultStore(new Key("com.rapidftr.utilities.formstore"))); settings = new Settings(store); httpSettings = new HttpSettings(settings); HttpService httpService = new HttpService(new HttpServer(httpSettings), settings); loginService = new LoginService(httpService, new LoginSettings(settings)); formService = new FormService(httpService, formStore); dateFormatter = new DateFormatter(Calendar.getInstance().getTimeZone(), new DefaultBlackBerryDateFormat()); childSyncService = new ChildSyncService(httpService, childrenRecordStore, dateFormatter); contactInformationSyncService = new ContactInformationSyncService(httpService, new ContactInformation(store)); } public HomeController homeScreenControllerWith(Dispatcher dispatcher) { HomeScreen homeSreen = new HomeScreen(settings); return new HomeController(homeSreen, uiStack, settings, dispatcher); } public ManageChildController manageChildControllerWith(Dispatcher dispatcher) { ManageChildScreen manageChildScreen = new ManageChildScreen(dateFormatter); return new ManageChildController(manageChildScreen, uiStack, formStore, childrenRecordStore, dispatcher); } public ViewChildrenController viewChildrenControllerWith(Dispatcher dispatcher) { ViewChildrenScreen viewChildrenScreen = new ViewChildrenScreen(); return new ViewChildrenController(viewChildrenScreen, uiStack, childrenRecordStore, dispatcher); } public ViewChildPhotoController viewChildPhotoControllerWith(Dispatcher dispatcher) { ChildPhotoScreen childPhotoScreen = new ChildPhotoScreen(); return new ViewChildPhotoController(childPhotoScreen, uiStack, dispatcher); } public ChildHistoryController childHistoryControllerWith(Dispatcher dispatcher) { ChildHistoryScreen childHistoryScreen = new ChildHistoryScreen(dateFormatter); return new ChildHistoryController(childHistoryScreen, uiStack, dispatcher); } public SearchChildController searchChildControllerWith(Dispatcher dispatcher) { SearchChildScreen searchChildScreen = new SearchChildScreen(); return new SearchChildController(searchChildScreen, uiStack, childrenRecordStore, dispatcher); } public LoginController loginControllerWith(Dispatcher dispatcher) { LoginScreen loginScreen = new LoginScreen(httpSettings); return new LoginController(loginScreen, uiStack, loginService, new ConnectionFactory(), dispatcher); } public ViewChildController viewChildControllerWith(Dispatcher dispatcher) { ViewChildScreen viewChildScreen = new ViewChildScreen(); return new ViewChildController(viewChildScreen, uiStack, formStore, dispatcher); } public SyncController syncControllerWith(Dispatcher dispatcher) { SyncScreen syncScreen = new SyncScreen(settings); return new SyncController(syncScreen, uiStack, childSyncService, formService, dispatcher); } public ResetDeviceController resetDeviceController() { return new ResetDeviceController(formService, childSyncService, loginService); } public ContactInformationController contactScreenControllerWith(Dispatcher dispatcher) { ContactInformationScreen contactScreen = new ContactInformationScreen(new ContactInformation(store)); return new ContactInformationController(contactScreen, uiStack, contactInformationSyncService, dispatcher); } public FlagChildController flagChildControllerWith(Dispatcher dispatcher) { FlagReasonScreen flagReasonScreen = new FlagReasonScreen(); return new FlagChildController(flagReasonScreen, uiStack, dispatcher); } }