diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala index 9dd433ab5ae8454b194390b8fb7b0dc8e94f8070..062d725bafb7050258aaf07e0a0a0444e02aafdc 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala @@ -32,7 +32,7 @@ trait BiopetQScript extends Configurable with GatkLogging { val configfiles: List[File] = Nil var outputDir: String = { - val temp = Config.getValueFromMap(Config.global.map, ConfigValueIndex(this.configName, configPath, "output_dir")) + val temp = Config.getValueFromMap(globalConfig.map, ConfigValueIndex(this.configName, configPath, "output_dir")) if (temp.isEmpty) "" else { val t = temp.get.value.toString @@ -71,7 +71,7 @@ trait BiopetQScript extends Configurable with GatkLogging { case _ => } - if (new File(outputDir).canWrite) Config.global.writeReport(qSettings.runName, outputDir + ".log/" + qSettings.runName) + if (new File(outputDir).canWrite) globalConfig.writeReport(qSettings.runName, outputDir + ".log/" + qSettings.runName) else BiopetQScript.addError("Output dir: '" + outputDir + "' is not writeable") BiopetQScript.checkErrors diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala index eb76502c8593a9e970ea2c95b9152569dfffb389..4184f29afacc7f6afcf6dc9d0eb45f9eddfc1993 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala @@ -28,7 +28,7 @@ trait MultiSampleQScript extends BiopetQScript { @Argument(doc = "Only Sample", shortName = "sample", required = false) private val onlySamples: List[String] = Nil - require(Config.global.map.contains("samples"), "No Samples found in config") + require(globalConfig.map.contains("samples"), "No Samples found in config") /** * Sample class with basic functions build in @@ -80,7 +80,7 @@ trait MultiSampleQScript extends BiopetQScript { /** returns a set with library names */ protected def libIds: Set[String] = { - ConfigUtils.getMapFromPath(Config.global.map, List("samples", sampleId, "libraries")).getOrElse(Map()).keySet + ConfigUtils.getMapFromPath(globalConfig.map, List("samples", sampleId, "libraries")).getOrElse(Map()).keySet } /** Adds sample jobs */ @@ -125,7 +125,7 @@ trait MultiSampleQScript extends BiopetQScript { val samples: Map[String, Sample] = sampleIds.map(id => id -> makeSample(id)).toMap /** Returns a list of all sampleIDs */ - protected def sampleIds: Set[String] = ConfigUtils.any2map(Config.global.map("samples")).keySet + protected def sampleIds: Set[String] = ConfigUtils.any2map(globalConfig.map("samples")).keySet /** Runs addAndTrackJobs method for each sample */ final def addSamplesJobs() { diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala index 0e404dd5c460e643262b43acd70766d6a91c3a7d..e25e8ef508188adbd5f767b20ca1f688c4eed922 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala @@ -138,7 +138,6 @@ class Config(var map: Map[String, Any]) extends Logging { defaultCache += (requestedIndex -> ConfigValue(requestedIndex, null, default, freeVar)) defaultCache(requestedIndex) } else ConfigValue(requestedIndex, null, null, freeVar) - //else throw new IllegalStateException("Value in config could not be found but it seems required, index: " + requestedIndex) } def writeReport(id: String, directory: String): Unit = { @@ -175,7 +174,7 @@ class Config(var map: Map[String, Any]) extends Logging { val fullEffective = ConfigUtils.mergeMaps(effectiveFound, effectiveDefaultFound) val fullEffectiveWithNotFound = ConfigUtils.mergeMaps(fullEffective, notFound) - writeMapToJsonFile(Config.global.map, "input") + writeMapToJsonFile(this.map, "input") writeMapToJsonFile(found, "found") writeMapToJsonFile(effectiveFound, "effective.found") writeMapToJsonFile(effectiveDefaultFound, "effective.defaults") diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Configurable.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Configurable.scala index 774b15d2dd97192a1c6fc8614938bb725571099c..51997ccb8a12fb5c3a234e5e7d95c001dd704b4f 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Configurable.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Configurable.scala @@ -21,6 +21,7 @@ import nl.lumc.sasc.biopet.utils.ConfigUtils.ImplicitConversions trait Configurable extends ImplicitConversions { /** Should be object of parant object */ val root: Configurable + val globalConfig: Config = if (root != null) root.globalConfig else Config.global /** subfix to the path */ def subPath: List[String] = Nil @@ -98,8 +99,8 @@ trait Configurable extends ImplicitConversions { val value = Config.getValueFromMap(defaults.toMap, ConfigValueIndex(m, p, key, freeVar)) if (value.isDefined) value.get.value else default } - if (d == null) Config.global(m, p, key, freeVar = freeVar) - else Config.global(m, p, key, d, freeVar) + if (d == null) globalConfig(m, p, key, freeVar = freeVar) + else globalConfig(m, p, key, d, freeVar) } /** @@ -121,7 +122,7 @@ trait Configurable extends ImplicitConversions { val m = if (submodule != null) submodule else configName val p = path(s, l, submodule) - Config.global.contains(m, p, key, freeVar) || !(Config.getValueFromMap(defaults.toMap, ConfigValueIndex(m, p, key, freeVar)) == None) + globalConfig.contains(m, p, key, freeVar) || !(Config.getValueFromMap(defaults.toMap, ConfigValueIndex(m, p, key, freeVar)) == None) } } } diff --git a/public/biopet-framework/src/test/scala/nl/lumc/sasc/biopet/core/config/ConfigurableTest.scala b/public/biopet-framework/src/test/scala/nl/lumc/sasc/biopet/core/config/ConfigurableTest.scala index 55f672cc1dad99011d0fdd38bec9abd4f49c1e82..ba0429fd31e7e23880184872d2581b0e885ebc8b 100644 --- a/public/biopet-framework/src/test/scala/nl/lumc/sasc/biopet/core/config/ConfigurableTest.scala +++ b/public/biopet-framework/src/test/scala/nl/lumc/sasc/biopet/core/config/ConfigurableTest.scala @@ -11,10 +11,10 @@ import org.testng.annotations.Test */ class ConfigurableTest extends TestNGSuite with Matchers { @Test def testConfigurable: Unit = { - Config.global.map = Map() - Config.global.loadConfigFile(ConfigurableTest.file) - - val classC = new ClassC + val classC = new ClassC { + override def configName = "classc" + override val globalConfig = new Config(ConfigurableTest.map) + } classC.configPath shouldBe Nil classC.configFullPath shouldBe List("classc") @@ -53,12 +53,12 @@ abstract class Cfg extends Configurable { class ClassA(val root: Configurable) extends Cfg class ClassB(val root: Configurable) extends Cfg { - val classA = new ClassA(this) + lazy val classA = new ClassA(this) } class ClassC(val root: Configurable) extends Cfg { def this() = this(null) - val classB = new ClassB(this) + lazy val classB = new ClassB(this) } object ConfigurableTest { @@ -80,6 +80,4 @@ object ConfigurableTest { ) ) ) - - val file = ConfigUtilsTest.writeTemp(ConfigUtils.mapToJson(map).spaces2) }