// Path: app/src/mock/java/com/example/ericliu/weather2016/dagger/component/RepoComponent.java
// @Singleton
// @Component(modules = {AppModule.class, RepoModule.class, NetModule.class} )
// public interface RepoComponent {
//     void inject(RemoteWeatherRepo repo);
//     void inject(FakeRemoteWeatherRepo repo);
//     void inject(MainActivityViewModel mainActivityViewModel);
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/dagger/module/AppModule.java
// @Module
// public class AppModule {
// 
//     Application mApplication;
// 
//     public AppModule(Application application) {
//         mApplication = application;
//     }
// 
//     @Provides
//     @Singleton
//     Application provideApplication() {
//         return mApplication;
//     }
// 
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/dagger/module/NetModule.java
// @Module
// public class NetModule {
// 
//     @Provides
//     @Singleton
//     Gson provideGson() {
//         GsonBuilder gsonBuilder = new GsonBuilder();
//         gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
//         return gsonBuilder.create();
//     }
// 
// 
//     @Provides
//     @Singleton
//     OkHttpClient provideOkHttpClient() {
//         OkHttpClient client = new OkHttpClient();
//         return client;
//     }
// 
// }
// 
// Path: app/src/prod/java/com/example/ericliu/weather2016/dagger/module/RepoModule.java
// @Module
// public class RepoModule {
// 
//     @Provides
//     @Singleton
//     DbWeatherRepo provideDbWeatherRepository(){
//         return new DbWeatherRepo();
//     }
// 
//     @Provides
//     @Singleton
//     RemoteWeatherRepo provideRemoteWeatherRepository(){
//         return new RemoteWeatherRepo();
//     }
// 
// }


import android.app.Application;
import com.example.ericliu.weather2016.dagger.component.DaggerRepoComponent;
import com.example.ericliu.weather2016.dagger.component.RepoComponent;
import com.example.ericliu.weather2016.dagger.module.AppModule;
import com.example.ericliu.weather2016.dagger.module.NetModule;
import com.example.ericliu.weather2016.dagger.module.RepoModule;
package com.example.ericliu.weather2016.application;



/**
 * Created by ericliu on 12/04/2016.
 */
public class MyApplication extends Application {

    private static RepoComponent component;

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

        RepoComponent repoComponent = DaggerRepoComponent.builder()
                .repoModule(new RepoModule())
                .appModule(new AppModule(this))
                .netModule(new NetModule())
                .build();

        component = repoComponent;
    }

    public static  RepoComponent getComponent() {
// Path: app/src/mock/java/com/example/ericliu/weather2016/dagger/component/RepoComponent.java
// @Singleton
// @Component(modules = {AppModule.class, RepoModule.class, NetModule.class} )
// public interface RepoComponent {
//     void inject(RemoteWeatherRepo repo);
//     void inject(FakeRemoteWeatherRepo repo);
//     void inject(MainActivityViewModel mainActivityViewModel);
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/dagger/module/AppModule.java
// @Module
// public class AppModule {
// 
//     Application mApplication;
// 
//     public AppModule(Application application) {
//         mApplication = application;
//     }
// 
//     @Provides
//     @Singleton
//     Application provideApplication() {
//         return mApplication;
//     }
// 
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/dagger/module/NetModule.java
// @Module
// public class NetModule {
// 
//     @Provides
//     @Singleton
//     Gson provideGson() {
//         GsonBuilder gsonBuilder = new GsonBuilder();
//         gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
//         return gsonBuilder.create();
//     }
// 
// 
//     @Provides
//     @Singleton
//     OkHttpClient provideOkHttpClient() {
//         OkHttpClient client = new OkHttpClient();
//         return client;
//     }
// 
// }
// 
// Path: app/src/prod/java/com/example/ericliu/weather2016/dagger/module/RepoModule.java
// @Module
// public class RepoModule {
// 
//     @Provides
//     @Singleton
//     DbWeatherRepo provideDbWeatherRepository(){
//         return new DbWeatherRepo();
//     }
// 
//     @Provides
//     @Singleton
//     RemoteWeatherRepo provideRemoteWeatherRepository(){
//         return new RemoteWeatherRepo();
//     }
// 
// }


// Path: app/src/main/java/com/example/ericliu/weather2016/application/MyApplication.java
import android.app.Application;
import com.example.ericliu.weather2016.dagger.component.DaggerRepoComponent;
import com.example.ericliu.weather2016.dagger.component.RepoComponent;
import com.example.ericliu.weather2016.dagger.module.AppModule;
import com.example.ericliu.weather2016.dagger.module.NetModule;
import com.example.ericliu.weather2016.dagger.module.RepoModule;

package com.example.ericliu.weather2016.application;



/**
 * Created by ericliu on 12/04/2016.
 */
public class MyApplication extends Application {

    private static RepoComponent component;

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

        RepoComponent repoComponent = DaggerRepoComponent.builder()
                .repoModule(new RepoModule())
                .appModule(new AppModule(this))
                .netModule(new NetModule())
                .build();

        component = repoComponent;
    }

    public static  RepoComponent getComponent() {
        return component;