/* * Copyright 2016 Dmitry Monakhov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 15/01/16. */ package monakhv.android.samlib; import android.app.Application; import monakhv.android.samlib.dagger.component.ApplicationComponent; import monakhv.android.samlib.dagger.component.DaggerApplicationComponent; import monakhv.android.samlib.dagger.component.DatabaseComponent; import monakhv.android.samlib.dagger.component.ServiceComponent; import monakhv.android.samlib.dagger.module.ApplicationModule; import monakhv.android.samlib.dagger.module.DatabaseModule; import monakhv.android.samlib.dagger.module.ServiceModule; import monakhv.android.samlib.data.DataExportImport; import monakhv.android.samlib.data.Logger; import monakhv.android.samlib.data.SettingsHelper; import monakhv.android.samlib.sql.DatabaseHelper; import monakhv.samlib.log.Log; import javax.inject.Inject; /** * Application to care Dagger 2 injection * Created by monakhv on 15.01.16. */ public class SamlibApplication extends Application { private static final String DEBUG_TAG="SamlibApplication"; @Inject static Logger mLogger; @Inject static SettingsHelper settingsHelper; @Inject static DataExportImport dataExportImport; private ServiceComponent mServiceComponent; private DatabaseComponent mDatabaseComponent; private static ApplicationComponent applicationComponent; @Override public void onCreate() { super.onCreate(); applicationComponent= DaggerApplicationComponent.builder() .applicationModule(new ApplicationModule(this)) .build(); applicationComponent.inject(this); mLogger.debug(DEBUG_TAG,"Logger created!"); Log.forceInit(mLogger); } public static void initLogger(){ mLogger.initLogger(); } public ApplicationComponent getApplicationComponent() { return applicationComponent; } public SettingsHelper getSettingsHelper() { return settingsHelper; } public DataExportImport getDataExportImport() { return dataExportImport; } public DatabaseComponent getDatabaseComponent(DatabaseHelper databaseHelper){ mDatabaseComponent=applicationComponent.plus(new DatabaseModule(databaseHelper)); return mDatabaseComponent; } public void releaseDatabaseComponent(){ mDatabaseComponent=null; } public void releaseServiceComponent(){ mServiceComponent=null; } }