/**
  * @param $filterName
  *
  * @return null|AbstractFilter
  */
 public function make($filterName)
 {
     if ($this->validator && !$this->validator->validate($filterName)) {
         return null;
     }
     if ($this->transformer) {
         $class = __NAMESPACE__ . '\\' . $this->transformer->transform($filterName);
     } else {
         $class = __NAMESPACE__ . '\\' . $filterName;
     }
     if (!class_exists($class)) {
         return null;
     }
     return new $class();
 }
 /**
  * @param array $fieldList
  *
  * @return string
  */
 public function generatePredicateList(array $fieldList)
 {
     if (!$this->transformer) {
         throw new QueryBuilderException('Missing transformer for generic ids in SQL!');
     }
     $predicateList = [];
     $queryParam = $this->getQueryParam();
     foreach ($fieldList as $name) {
         if (!empty($queryParam[$name]) && is_array($queryParam[$name])) {
             $tName = $this->transformer->transform($name);
             $predicate = "{$name} IN (";
             for ($i = 0, $c = count($queryParam[$name]); $i < $c; $i++) {
                 $predicate .= $tName . $i . ',';
             }
             $predicate = rtrim($predicate, ',');
             $predicate .= ")";
             $predicateList[] = $predicate;
         } else {
             $predicateList[] = "{$name} = " . $this->transformer->transform($name);
         }
     }
     return $predicateList;
 }