public function filter(RouteFilter $filter)
 {
     $builder = $this->getQueryBuilder();
     if ($filter->getName()) {
         $builder->andWhere('r.name LIKE :name')->setParameter('name', '%' . $filter->getName() . '%');
     }
     if ($filter->getRoute()) {
         $builder->andWhere('r.route LIKE :route')->setParameter('route', '%' . $filter->getRoute() . '%');
     }
     if ($filter->getParameter()) {
         $builder->andWhere('p.parameter LIKE :parameter')->setParameter('parameter', '%' . $filter->getParameter() . '%');
     }
     if ($filter->getParameterName()) {
         $builder->andWhere('p.name LIKE :parameterName')->setParameter('parameterName', '%' . $filter->getParameterName() . '%');
     }
     if ($filter->getIsNamed()) {
         switch ($filter->getIsNamed()) {
             case RouteFilter::IS_NAMED_TRUE:
                 $builder->andWhere('r.name IS NOT NULL');
                 break;
             case RouteFilter::IS_NAMED_FALSE:
                 $builder->andWhere('r.name IS NULL');
                 break;
         }
     }
     if ($filter->getIsSystem()) {
         switch ($filter->getIsSystem()) {
             case RouteFilter::IS_SYSTEM_TRUE:
                 $builder->andWhere('r.isSystem = :isSystem')->setParameter('isSystem', true);
                 break;
             case RouteFilter::IS_SYSTEM_FALSE:
                 $builder->andWhere('r.isSystem = :isSystem')->setParameter('isSystem', false);
                 break;
         }
     }
     return $this->returnFilteredEntities($builder, $filter, 'r.id');
 }