filterData
#function filterData ($list, $where)
#if ($vs.util.isList($list))
#set($result = $vs.util.newList())
#foreach ($row in $list)
#if (@leftEquals($row, $where))
$result.add($row)
#end
#end
return $result
#end
return null
#end
#function leftEquals ($left, $right)
#if ($vs.util.isMap($left) and $vs.util.isMap($right))
#foreach ($key in $vs.util.getMapKeys($right))
#if ($left.get($key) ne $right.get($key))
return false
#end
#end
return true
#end
return false
#end
filterStruct
#function filterStruct ($struct, $fields)
#if ($vs.util.isMap($result))
#set($result = $vs.util.newMap())
#foreach ($key in $vs.util.getMapKeys($struct))
#if ($fields.contains($key))
$result.put($key, $struct.get($key))
#end
#end
return $result
#end
#if ($vs.util.isList($struct))
#set($result = $vs.util.newList())
#foreach ($row in $list)
$result.add(@filterStruct($row, $struct))
#end
return $result
#end
return null
#end