package com.jdroid.android.debug; import android.preference.PreferenceManager; import android.support.v4.util.Pair; import com.jdroid.android.activity.ActivityLauncher; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.debug.mocks.AndroidJsonMockHttpService; import com.jdroid.android.log.DatabaseLog; import com.jdroid.android.log.DatabaseLogsRepository; import com.jdroid.android.sqlite.SQLiteHelper; import com.jdroid.java.collections.Lists; import com.jdroid.java.collections.Maps; import com.jdroid.java.domain.Identifiable; import com.jdroid.java.http.Server; import com.jdroid.java.http.mock.AbstractMockHttpService; import com.jdroid.java.repository.Repository; import java.util.List; import java.util.Map; public class DebugContext { public static final String HTTP_MOCK_ENABLED = "httpMockEnabled"; public static final String HTTP_MOCK_SLEEP = "httpMockSleep"; private List<Pair<String, Object>> customDebugInfoProperties = Lists.newArrayList(); public Boolean isHttpMockEnabled() { return !AbstractApplication.get().getAppContext().isProductionEnvironment() && PreferenceManager.getDefaultSharedPreferences(AbstractApplication.get()).getBoolean( HTTP_MOCK_ENABLED, false); } public Integer getHttpMockSleepDuration() { return PreferenceManager.getDefaultSharedPreferences(AbstractApplication.get()).getBoolean(HTTP_MOCK_SLEEP, false) ? 10 : null; } public void launchActivityDebugSettingsActivity() { ActivityLauncher.launchActivity(DebugSettingsActivity.class); } public AbstractMockHttpService getAbstractMockHttpServiceInstance(Object... urlSegments) { return new AndroidJsonMockHttpService(urlSegments); } public void initDebugRepositories( Map<Class<? extends Identifiable>, Repository<? extends Identifiable>> repositories, SQLiteHelper dbHelper) { if (AbstractApplication.get().isDebugLogRepositoryEnabled() && !AbstractApplication.get().getAppContext().isProductionEnvironment()) { repositories.put(DatabaseLog.class, new DatabaseLogsRepository(dbHelper)); } } public List<Pair<String, Object>> getCustomDebugInfoProperties() { return customDebugInfoProperties; } public void addCustomDebugInfoProperty(Pair<String, Object> pair) { customDebugInfoProperties.add(pair); } public ServersDebugPrefsAppender createServersDebugPrefsAppender() { return new ServersDebugPrefsAppender(getServersMap()); } public Map<Class<? extends Server>, List<? extends Server>> getServersMap() { return Maps.newHashMap(); } public ExceptionHandlingDebugPrefsAppender createExceptionHandlingDebugPrefsAppender() { return new ExceptionHandlingDebugPrefsAppender(); } public HttpCacheDebugPrefsAppender createHttpCacheDebugPrefsAppender() { return new HttpCacheDebugPrefsAppender(); } public ImageLoaderDebugPrefsAppender createImageLoaderDebugPrefsAppender() { return new ImageLoaderDebugPrefsAppender(); } public DatabaseDebugPrefsAppender createDatabaseDebugPrefsAppender() { return new DatabaseDebugPrefsAppender(); } public LogsDebugPrefsAppender createLogsDebugPrefsAppender() { return new LogsDebugPrefsAppender(); } public NavDrawerDebugPrefsAppender createNavDrawerDebugPrefsAppender() { return new NavDrawerDebugPrefsAppender(); } public HttpMocksDebugPrefsAppender createHttpMocksDebugPrefsAppender() { return new HttpMocksDebugPrefsAppender(); } public InfoDebugPrefsAppender createInfoDebugPrefsAppender() { return new InfoDebugPrefsAppender(); } public RateAppDebugPrefsAppender createRateAppDebugPrefsAppender() { return new RateAppDebugPrefsAppender(); } public UsageStatsDebugPrefsAppender createUsageStatsDebugPrefsAppender() { return new UsageStatsDebugPrefsAppender(); } public UriMapperPrefsAppender createUriMapperPrefsAppender() { return new UriMapperPrefsAppender(); } public NotificationsDebugPrefsAppender createNotificationsDebugPrefsAppender() { return new NotificationsDebugPrefsAppender(); } public List<PreferencesAppender> getCustomPreferencesAppenders() { return Lists.newArrayList(); } public List<String> getUrlsToTest() { return Lists.newArrayList(); } }