@@ -3,15 +3,21 @@ import groovy.yaml.YamlSlurper
33
44class Config {
55
6+ // instance variables -------------------------------------
7+
8+ // config file vars
69 private String configFileName
710 private File configFile
811 private Object configTree
912 private YamlSlurper slurper
1013
11- private int runNum = 0
12- private String runGroup = " unknown"
13- private String runPeriod = " unknown"
14+ // run group and period
15+ private int runNum
16+ private Range<Integer > runNumRange
17+ private String runGroup
18+ private String runPeriod
1419
20+ // ------------------------------------------------------
1521
1622 /**
1723 * @param configFileName the configuration file name
@@ -41,6 +47,20 @@ class Config {
4147 checkNode(" run group '$runGroupIt '" , runGroupConfigTree, " runs" )
4248 }
4349
50+ // initialize run period variables
51+ resetRunPeriod()
52+
53+ }
54+
55+
56+ /**
57+ * Reset the run period variables
58+ */
59+ private void resetRunPeriod () {
60+ runNum = 0
61+ runNumRange = 0 .. 0
62+ runGroup = " unknown"
63+ runPeriod = " unknown"
4464 }
4565
4666
@@ -49,17 +69,22 @@ class Config {
4969 * @param runNum the run number
5070 */
5171 public void setRun (int runNum ) {
52-
53- // find the run group and run period
5472 this . runNum = runNum
5573 try {
74+ // if runNum is in the same run period as the previous call, do nothing
75+ if (runNumRange. contains(runNum)) return
76+ // reset run period variables
77+ resetRunPeriod()
78+ // search for the run period which contains this runNum
5679 def found = false
5780 configTree[" run_groups" ]. find { runGroupIt , runGroupConfigTree ->
58- runGroupConfigTree[" runs" ]. find { runPeriodIt , runRange ->
59- if (runNum >= runRange[0 ] && runNum <= runRange[1 ]) {
60- runGroup = runGroupIt
61- runPeriod = runPeriodIt
62- found = true
81+ runGroupConfigTree[" runs" ]. find { runPeriodIt , runNumRangeArr ->
82+ Range<Integer > runNumRangeIt = runNumRangeArr[0 ].. runNumRangeArr[1 ]
83+ if (runNumRangeIt. contains(runNum)) {
84+ runNumRange = runNumRangeIt
85+ runGroup = runGroupIt
86+ runPeriod = runPeriodIt
87+ found = true
6388 }
6489 return found
6590 }
@@ -71,7 +96,6 @@ class Config {
7196 ex. printStackTrace()
7297 System . exit(100 )
7398 }
74-
7599 }
76100
77101
@@ -89,8 +113,10 @@ class Config {
89113 public void printConfig () {
90114 System . out. println """
91115Configuration for run $runNum :
92- Run Group: $runGroup
93- Run Period: $runPeriod """
116+ Run Group: $runGroup
117+ Run Period: $runPeriod
118+ Run Number Range: ${ runNumRange.getFrom()} to ${ runNumRange.getTo()}
119+ """
94120 }
95121
96122}
0 commit comments