package Ġcom . github . pj ong y . handler . coupon . extension Ċ Ċ import Ġcom . github . pj ong y . handler . coupon . protocol . Condition Ċ Ċ val Ġavailable Join Types Ġ= ĠlistOf (" AND ", Ġ" OR ") Ċ val Ġavailable Operators Ġ= ĠlistOf ( ĊĠ Ġ" int _ eq ", ĊĠ Ġ" int _ neq ", ĊĠ Ġ" int _ lte ", ĊĠ Ġ" int _ lt ", ĊĠ Ġ" int _ gte ", ĊĠ Ġ" int _ gt ", ĊĠ Ġ" str _ eq ", ĊĠ Ġ" str _ neq ", ĊĠ Ġ" contains ", Ċ ) Ċ Ċ fun ĠCondition . isValid (): ĠBoolean Ġ{ ĊĠ Ġif Ġ( available Join Types . contains ( join Type ) Ġ&& Ġconditions Ġ!= Ġnull ) Ġ{ ĊĠĠĠ Ġif Ġ( key Ġ== Ġnull Ġ&& Ġvalue Ġ== Ġnull Ġ&& Ġoperator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġresults Ġ= Ġconditions . map Ġ{ Ġit . isValid () Ġ} ĊĠĠĠĠĠ Ġreturn Ġ! results . contains ( false ) Ġ&& Ġresults . isNotEmpty () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġif Ġ( available Operators . contains ( operator ) Ġ&& Ġkey Ġ!= Ġnull Ġ&& Ġvalue Ġ!= Ġnull ) Ġ{ ĊĠĠĠ Ġif Ġ( join Type Ġ== Ġnull Ġ&& Ġconditions Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġif Ġ( key Ġ== Ġnull Ġ&& Ġvalue Ġ== Ġnull Ġ&& Ġoperator Ġ== Ġnull ) Ġ{ ĊĠĠĠ Ġif Ġ( join Type Ġ== Ġnull Ġ&& Ġconditions Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġreturn Ġfalse Ċ } Ċ