// Path: commons/src/main/java/com/vlkan/hrrs/commons/logger/Log4jLoggerLevelAccessor.java
// public class Log4jLoggerLevelAccessor implements LoggerLevelAccessor {
// 
//     private static final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(Log4jLoggerLevelAccessor.class);
// 
//     private static final Log4jLoggerLevelAccessor INSTANCE = new Log4jLoggerLevelAccessor();
// 
//     private Log4jLoggerLevelAccessor() {
//         LOGGER.debug("instantiated");
//     }
// 
//     public static Log4jLoggerLevelAccessor getInstance() {
//         return INSTANCE;
//     }
// 
//     @Override
//     public String getRootLevel() {
//         Logger logger = LogManager.getRootLogger();
//         return logger.getLevel().toString();
//     }
// 
//     @Override
//     public void setRootLevel(String levelName) {
//         checkNotNull(levelName, "levelName");
//         LOGGER.debug("updating root logger level (name={})", levelName);
//         Level level = Level.toLevel(levelName);
//         Logger logger = LogManager.getRootLogger();
//         logger.setLevel(level);
//     }
// 
//     @Override
//     public String getLevel(String loggerName) {
//         checkNotNull(loggerName, "loggerName");
//         Logger logger = LogManager.getLogger(loggerName);
//         return logger == null || logger.getLevel() == null ? null : logger.getLevel().toString();
//     }
// 
//     @Override
//     public void setLevel(String loggerName, String levelName) {
//         checkNotNull(loggerName, "loggerName");
//         checkNotNull(levelName, "levelName");
//         LOGGER.debug("updating logger level (loggerName={}, levelName={})", loggerName, levelName);
//         Logger logger = LogManager.getLogger(loggerName);
//         Level level = Level.toLevel(levelName);
//         logger.setLevel(level);
//     }
// 
// }
// 
// Path: commons/src/main/java/com/vlkan/hrrs/commons/logger/LoggerLevelAccessor.java
// public interface LoggerLevelAccessor {
// 
//     String getRootLevel();
// 
//     void setRootLevel(String levelName);
// 
//     String getLevel(String loggerName);
// 
//     void setLevel(String loggerName, String levelName);
// 
// }


import com.google.inject.AbstractModule;
import com.vlkan.hrrs.commons.logger.Log4jLoggerLevelAccessor;
import com.vlkan.hrrs.commons.logger.LoggerLevelAccessor;
import static com.google.common.base.Preconditions.checkNotNull;
package com.vlkan.hrrs.distiller.cli;



public class DistillerModule extends AbstractModule {

    private final Config config;

    public DistillerModule(Config config) {
        this.config = checkNotNull(config, "config");
    }

    @Override
    protected void configure() {
        bind(Config.class).toInstance(config);
// Path: commons/src/main/java/com/vlkan/hrrs/commons/logger/Log4jLoggerLevelAccessor.java
// public class Log4jLoggerLevelAccessor implements LoggerLevelAccessor {
// 
//     private static final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(Log4jLoggerLevelAccessor.class);
// 
//     private static final Log4jLoggerLevelAccessor INSTANCE = new Log4jLoggerLevelAccessor();
// 
//     private Log4jLoggerLevelAccessor() {
//         LOGGER.debug("instantiated");
//     }
// 
//     public static Log4jLoggerLevelAccessor getInstance() {
//         return INSTANCE;
//     }
// 
//     @Override
//     public String getRootLevel() {
//         Logger logger = LogManager.getRootLogger();
//         return logger.getLevel().toString();
//     }
// 
//     @Override
//     public void setRootLevel(String levelName) {
//         checkNotNull(levelName, "levelName");
//         LOGGER.debug("updating root logger level (name={})", levelName);
//         Level level = Level.toLevel(levelName);
//         Logger logger = LogManager.getRootLogger();
//         logger.setLevel(level);
//     }
// 
//     @Override
//     public String getLevel(String loggerName) {
//         checkNotNull(loggerName, "loggerName");
//         Logger logger = LogManager.getLogger(loggerName);
//         return logger == null || logger.getLevel() == null ? null : logger.getLevel().toString();
//     }
// 
//     @Override
//     public void setLevel(String loggerName, String levelName) {
//         checkNotNull(loggerName, "loggerName");
//         checkNotNull(levelName, "levelName");
//         LOGGER.debug("updating logger level (loggerName={}, levelName={})", loggerName, levelName);
//         Logger logger = LogManager.getLogger(loggerName);
//         Level level = Level.toLevel(levelName);
//         logger.setLevel(level);
//     }
// 
// }
// 
// Path: commons/src/main/java/com/vlkan/hrrs/commons/logger/LoggerLevelAccessor.java
// public interface LoggerLevelAccessor {
// 
//     String getRootLevel();
// 
//     void setRootLevel(String levelName);
// 
//     String getLevel(String loggerName);
// 
//     void setLevel(String loggerName, String levelName);
// 
// }


// Path: distiller/src/main/java/com/vlkan/hrrs/distiller/cli/DistillerModule.java
import com.google.inject.AbstractModule;
import com.vlkan.hrrs.commons.logger.Log4jLoggerLevelAccessor;
import com.vlkan.hrrs.commons.logger.LoggerLevelAccessor;
import static com.google.common.base.Preconditions.checkNotNull;

package com.vlkan.hrrs.distiller.cli;



public class DistillerModule extends AbstractModule {

    private final Config config;

    public DistillerModule(Config config) {
        this.config = checkNotNull(config, "config");
    }

    @Override
    protected void configure() {
        bind(Config.class).toInstance(config);
        bind(LoggerLevelAccessor.class).toInstance(Log4jLoggerLevelAccessor.getInstance());