class DurchflusstabelleImpl implements Durchflusstabelle { static def QMAX_FAKTOR = 2 static def tabelle = [ (0.0..(15.0 - (Float.MIN_VALUE as BigDecimal))): [ A:[QMIN: 0.04, QTRENN: 0.10, QMAX: QMAX_FAKTOR], B:[QMIN: 0.02, QTRENN: 0.08, QMAX: QMAX_FAKTOR], C:[QMIN: 0.01, QTRENN: 0.015, QMAX: QMAX_FAKTOR] ], (15.0..(Float.MAX_VALUE as BigDecimal)): [ A:[QMIN: 0.08, QTRENN: 0.30, QMAX: QMAX_FAKTOR], B:[QMIN: 0.03, QTRENN: 0.20, QMAX: QMAX_FAKTOR], C:[QMIN: 0.006, QTRENN: 0.015, QMAX: QMAX_FAKTOR] ] ] int get(float nennweite, String metrologischeKlasse, String gesuchterWert, float messabweichungInProzent) { def faktor = tabelle .find{ eintrag -> (nennweite as BigDecimal) in eintrag.key }.value .find{ eintrag -> metrologischeKlasse == eintrag.key }.value .find{ eintrag -> gesuchterWert == eintrag.key}.value def durchfluss = nennweite * faktor * 1000 (durchfluss + durchfluss * messabweichungInProzent / 100).round() } }