// Path: app/src/main/java/yuki/android/template/crosscut/di/component/ApplicationComponent.java
// @ApplicationScope
// @Component(modules = {ApplicationModule.class})
// public interface ApplicationComponent {
// 
//     OrmaDatabase ormaDatabase();
// 
//     ExecutionScheduler executionScheduler();
// 
//     ModelBus modelBus();
// 
//     HistoryModel historyModel();
// }
// 
// Path: app/src/main/java/yuki/android/template/crosscut/di/module/ApplicationModule.java
// @Module
// public class ApplicationModule {
// 
//     private final App app;
// 
//     public ApplicationModule(App app) {
//         this.app = app;
//     }
// 
//     @Provides
//     @ApplicationScope
//     public OrmaDatabase provideOrmaDatabase() {
//         return OrmaDatabase.builder(app.getApplicationContext()).build();
//     }
// 
//     @Provides
//     @ApplicationScope
//     ExecutionScheduler provideExecutionScheduler() {
//         return new ExecutionScheduler();
//     }
// 
//     @Provides
//     @ApplicationScope
//     public ModelBus provideModelBus() {
//         return new ModelBus();
//     }
// 
//     @Provides
//     @ApplicationScope
//     public HistoryModel provideHistoryModel(OrmaDatabase orma,
//             ExecutionScheduler executionScheduler, ModelBus bus) {
//         return new HistoryModel(orma, executionScheduler, bus);
//     }
// 
// }
// 
// Path: app/src/main/java/yuki/android/template/crosscut/logger/ReleaseTree.java
// public class ReleaseTree extends Timber.DebugTree {
// 
//     private static final int MAX_LOG_PRIORITY = Log.INFO;
// 
//     protected boolean isLoggable(int priority) {
//         return (priority > MAX_LOG_PRIORITY);
//     }
// }


import android.app.Application;
import android.support.annotation.NonNull;
import timber.log.Timber;
import yuki.android.template.crosscut.di.component.ApplicationComponent;
import yuki.android.template.crosscut.di.component.DaggerApplicationComponent;
import yuki.android.template.crosscut.di.module.ApplicationModule;
import yuki.android.template.crosscut.logger.ReleaseTree;

package yuki.android.template;



public class App extends Application {

    private ApplicationComponent component;

    @Override
    public void onCreate() {
        super.onCreate();

        Timber.plant(BuildConfig.DEBUG
                ? new Timber.DebugTree()
                : new ReleaseTree());


// Path: app/src/main/java/yuki/android/template/crosscut/di/component/ApplicationComponent.java
// @ApplicationScope
// @Component(modules = {ApplicationModule.class})
// public interface ApplicationComponent {
// 
//     OrmaDatabase ormaDatabase();
// 
//     ExecutionScheduler executionScheduler();
// 
//     ModelBus modelBus();
// 
//     HistoryModel historyModel();
// }
// 
// Path: app/src/main/java/yuki/android/template/crosscut/di/module/ApplicationModule.java
// @Module
// public class ApplicationModule {
// 
//     private final App app;
// 
//     public ApplicationModule(App app) {
//         this.app = app;
//     }
// 
//     @Provides
//     @ApplicationScope
//     public OrmaDatabase provideOrmaDatabase() {
//         return OrmaDatabase.builder(app.getApplicationContext()).build();
//     }
// 
//     @Provides
//     @ApplicationScope
//     ExecutionScheduler provideExecutionScheduler() {
//         return new ExecutionScheduler();
//     }
// 
//     @Provides
//     @ApplicationScope
//     public ModelBus provideModelBus() {
//         return new ModelBus();
//     }
// 
//     @Provides
//     @ApplicationScope
//     public HistoryModel provideHistoryModel(OrmaDatabase orma,
//             ExecutionScheduler executionScheduler, ModelBus bus) {
//         return new HistoryModel(orma, executionScheduler, bus);
//     }
// 
// }
// 
// Path: app/src/main/java/yuki/android/template/crosscut/logger/ReleaseTree.java
// public class ReleaseTree extends Timber.DebugTree {
// 
//     private static final int MAX_LOG_PRIORITY = Log.INFO;
// 
//     protected boolean isLoggable(int priority) {
//         return (priority > MAX_LOG_PRIORITY);
//     }
// }


// Path: app/src/main/java/yuki/android/template/App.java
import android.app.Application;
import android.support.annotation.NonNull;
import timber.log.Timber;
import yuki.android.template.crosscut.di.component.ApplicationComponent;
import yuki.android.template.crosscut.di.component.DaggerApplicationComponent;
import yuki.android.template.crosscut.di.module.ApplicationModule;
import yuki.android.template.crosscut.logger.ReleaseTree;

package yuki.android.template;



public class App extends Application {

    private ApplicationComponent component;

    @Override
    public void onCreate() {
        super.onCreate();

        Timber.plant(BuildConfig.DEBUG
                ? new Timber.DebugTree()
                : new ReleaseTree());


        component = DaggerApplicationComponent.builder()
