// Path: app/src/main/java/com/sefford/material/sample/common/logging/DevelopmentLogger.java
// @Singleton
// public class DevelopmentLogger implements Logger {
// 
//     @Inject
//     public DevelopmentLogger() {
//     }
// 
//     @Override
//     public void bind(Context context) {
//         // Nothing for DevelopmentLogger
//     }
// 
//     @Override
//     public void identify(long userId) {
//         // This is a Production feature
//     }
// 
//     @Override
//     public void e(String logtag, String message) {
//         Log.e(logtag, message);
//     }
// 
//     @Override
//     public void e(String logtag, String message, Throwable e) {
//         Log.e(logtag, message, e);
//     }
// 
//     @Override
//     public void d(String logtag, String message) {
//         Log.d(logtag, message);
//     }
// 
//     @Override
//     public void w(String logtag, String message) {
//         Log.w(logtag, message);
//     }
// 
//     @Override
//     public void w(String logtag, String message, Throwable e) {
//         Log.w(logtag, message, e);
//     }
// 
//     @Override
//     public void v(String logtag, String message) {
//         Log.v(logtag, message);
//     }
// 
//     @Override
//     public void printPerformanceLog(String tag, String element, long start) {
//         d(tag, "(" + element + "):" + (System.currentTimeMillis() - start) + "ms");
//     }
// }
// 
// Path: app/src/main/java/com/sefford/material/sample/common/logging/Logger.java
// public interface Logger extends Loggable {
// 
//     void bind(Context context);
// 
//     void identify(long userId);
// 
//     void e(String logtag, String message);
// 
//     void e(String logtag, String message, Throwable e);
// 
//     void d(String logtag, String message);
// 
//     void w(String logtag, String message);
// 
//     void w(String logtag, String message, Throwable e);
// 
//     void v(String logtag, String message);
// 
//     void printPerformanceLog(String tag, String element, long start);
// }


import com.sefford.kor.common.interfaces.Loggable;
import com.sefford.material.sample.common.logging.DevelopmentLogger;
import com.sefford.material.sample.common.logging.Logger;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/*
 * Copyright (C) 2015 Saúl Díaz
 *
 * 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.
 */

package com.sefford.material.sample.common.injection.modules;



/**
 * This module handles the Logging system. As this application is not intended for production purposes, handles the
 * Development logging module.
 * <p/>
 * This is copied from other applications which allow the logger to be configured dynamically per BuildConfig.DEBUG
 * and uses abstraction to enable logcat or Crashlytics modules.
 */
@Module(library = true,
        complete = true)
public class DevelopmentLoggingModule {

    @Provides
    @Singleton
// Path: app/src/main/java/com/sefford/material/sample/common/logging/DevelopmentLogger.java
// @Singleton
// public class DevelopmentLogger implements Logger {
// 
//     @Inject
//     public DevelopmentLogger() {
//     }
// 
//     @Override
//     public void bind(Context context) {
//         // Nothing for DevelopmentLogger
//     }
// 
//     @Override
//     public void identify(long userId) {
//         // This is a Production feature
//     }
// 
//     @Override
//     public void e(String logtag, String message) {
//         Log.e(logtag, message);
//     }
// 
//     @Override
//     public void e(String logtag, String message, Throwable e) {
//         Log.e(logtag, message, e);
//     }
// 
//     @Override
//     public void d(String logtag, String message) {
//         Log.d(logtag, message);
//     }
// 
//     @Override
//     public void w(String logtag, String message) {
//         Log.w(logtag, message);
//     }
// 
//     @Override
//     public void w(String logtag, String message, Throwable e) {
//         Log.w(logtag, message, e);
//     }
// 
//     @Override
//     public void v(String logtag, String message) {
//         Log.v(logtag, message);
//     }
// 
//     @Override
//     public void printPerformanceLog(String tag, String element, long start) {
//         d(tag, "(" + element + "):" + (System.currentTimeMillis() - start) + "ms");
//     }
// }
// 
// Path: app/src/main/java/com/sefford/material/sample/common/logging/Logger.java
// public interface Logger extends Loggable {
// 
//     void bind(Context context);
// 
//     void identify(long userId);
// 
//     void e(String logtag, String message);
// 
//     void e(String logtag, String message, Throwable e);
// 
//     void d(String logtag, String message);
// 
//     void w(String logtag, String message);
// 
//     void w(String logtag, String message, Throwable e);
// 
//     void v(String logtag, String message);
// 
//     void printPerformanceLog(String tag, String element, long start);
// }


// Path: app/src/main/java/com/sefford/material/sample/common/injection/modules/DevelopmentLoggingModule.java
import com.sefford.kor.common.interfaces.Loggable;
import com.sefford.material.sample.common.logging.DevelopmentLogger;
import com.sefford.material.sample.common.logging.Logger;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;

/*
 * Copyright (C) 2015 Saúl Díaz
 *
 * 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.
 */

package com.sefford.material.sample.common.injection.modules;



/**
 * This module handles the Logging system. As this application is not intended for production purposes, handles the
 * Development logging module.
 * <p/>
 * This is copied from other applications which allow the logger to be configured dynamically per BuildConfig.DEBUG
 * and uses abstraction to enable logcat or Crashlytics modules.
 */
@Module(library = true,
        complete = true)
public class DevelopmentLoggingModule {

    @Provides
    @Singleton
    public Logger provideLogger(DevelopmentLogger logger) {