Well I think your mistaken comment *is* how it should work.

"Params" [
"querya.ecl:param1=value1,param2=value2,param3=value"
..
"querya.ecl:param1=value1,param2=value2,param4=value"

]

At the moment you allow this, but "param3" is ignored (since the whole of the 2nd line takes precedence over 1st.)

You should either forbid duplicates <query>: lines (if you're going to silently ignore previous lines) or allow them, but parse the setting in each. So in above example param1 and param2 have been overridden only.

You should also process the wildcard definitions, in order just like the others, so:

query*.ecl:paramA=1
queryA.ecl:paramA=2 
queryB1.ecl:paramA=3,paramB=1
queryB2.ecl:paramA=4
queryB*.ecl:paramB=10
queryB3.ecl:paramB=11

NB: queryB1 gets paramA=1, paramB=10)
i.e. instead of pulling out the two wildcard version early, process all in order.