/**
  * Retorna um {@link Criteria} para um {@link FilterInterface}.
  *
  * @param FilterInterface $filter
  * @return Criteria
  */
 public function getFilteringCriteria(FilterInterface $filter)
 {
     $criteria = Criteria::create();
     $columnSearchs = $filter->getColumnSearchs();
     $globalSearch = $filter->getGlobalSearch();
     $orders = $filter->getOrderings();
     $start = $filter->getFirstResult();
     $length = $filter->getMaxResults();
     // constroi as expressões e os orderings
     $orderings = $this->getOrderings($filter, $orders);
     $searchExpr = $this->getExpressionForColumnSearchs($filter, $columnSearchs);
     $searchAllExpr = $this->getExpressionForGlobalSearch($filter, $globalSearch);
     // monta o criteria
     if (null !== $searchAllExpr) {
         $criteria->andWhere($searchAllExpr);
     }
     if (null !== $searchExpr) {
         $criteria->andWhere($searchExpr);
     }
     if (count($orderings)) {
         $criteria->orderBy($orderings);
     }
     $criteria->setFirstResult($start);
     $criteria->setMaxResults($length);
     return $criteria;
 }