package ca.cmput301f13t03.adventure_datetime.serviceLocator;
import android.content.Context;
import ca.cmput301f13t03.adventure_datetime.controller.AuthorController;
import ca.cmput301f13t03.adventure_datetime.controller.UserController;
import ca.cmput301f13t03.adventure_datetime.model.Interfaces.ILocalStorage;
import ca.cmput301f13t03.adventure_datetime.model.Interfaces.IStoryModelDirector;
import ca.cmput301f13t03.adventure_datetime.model.Interfaces.IStoryModelPresenter;
import ca.cmput301f13t03.adventure_datetime.model.StoryManager;
/**
* Locator class used to tie the view, model and controller componenets together into a cohesive whole.
* @author Jesse
*/
public final class Locator
{
private static IStoryModelDirector s_director = null;
private static IStoryModelPresenter s_presenter = null;
private static UserController s_userController = null;
private static AuthorController s_authorController = null;
/**
* Setup the applications model and controllers
* MUST be called before the application attempts to access
* any controllers or model info
* @param applicationContext
*/
public static void initializeLocator(Context applicationContext)
{
StoryManager manager = new StoryManager(applicationContext);
// TODO: Find person below how to "TODO" properly. Oh, and I murdered IReaderStorage
ILocalStorage localDatabase = null;
s_director = manager;
s_presenter = manager;
s_userController = new UserController(s_director, localDatabase);
s_authorController = new AuthorController(s_director);
}
/**
* Get the model's presenter. Used for fetching data from the model
*/
public static IStoryModelPresenter getPresenter()
{
if(s_presenter != null)
{
return s_presenter;
}
else
{
throw new RuntimeException("You fucked up and forgot to initialize the locator!");
}
}
/**
* Get the user controller for the application.
* Used for viewing and browsing stories
*/
public static UserController getUserController()
{
if(s_presenter != null)
{
return s_userController;
}
else
{
throw new RuntimeException("You fucked up and forgot to initialize the locator!");
}
}
public static AuthorController getAuthorController() {
if (s_presenter != null)
return s_authorController;
else
throw new RuntimeException("You fucked up and forgot to initialize the locator!");
}
}