package com.airlock.iam.application.webserver.infrastructure.deploy;

import com.airlock.iam.application.parameters.domain.model.ParameterVariableSpec;
import com.airlock.iam.application.resources.infrastructure.ApplicationResource;
import com.airlock.iam.application.resources.infrastructure.ResourceLocator;
import java.nio.file.Path;

final class Log4jConfigResources {
   private final ResourceLocator resourceLocator;

   Log4jConfigResources(ResourceLocator resourceLocator) {
      this.resourceLocator = resourceLocator;
   }

   Path resolveConfig(ParameterVariableSpec variable) {
      Path dir = this.resourceLocator.getPath(ApplicationResource.LOG4J_CONFIG_DIR);
      switch (variable) {
         case LOG4J_BASE:
         case LOG4J_COMMON:
            return dir.resolve("base.xml");
         case LOG4J_STRUCTURED_FILE:
            return dir.resolve("structured-file.xml");
         case LOG4J_STRUCTURED_STDOUT:
            return dir.resolve("structured-stdout.xml");
         case LOG4J_MAIN:
            return dir.resolve("main.xml");
         case INSTANCE_NAME:
         case PROFILE_NAME:
         case WORK_DIR:
         default:
            throw new IllegalStateException("Unknown Log4j config variable: " + variable);
      }
   }
}
