public function setUp()
 {
     $this->service = new AdminSearchService();
     $factory = new SearchResultBuilderFactory($this->getServiceContainer()->get('doctrine'));
     $factory->setRouter($this->getRouter());
     $this->service->setSearchBuilderFactory($factory);
 }
 public function search(array $searchCriteria = array(), SearchAdminPagerService $p)
 {
     $builder = $this->factory->getBuilderByCategory($searchCriteria);
     $result = $builder->search($searchCriteria, $p);
     return $result;
 }
    /**
     * @var Symfony\Bundle\FrameworkBundle\Routing\Router
     */
    private $router;
    public function __construct(Registry $doctrine)
    {
        $this->doctrine = $doctrine;
    }
    public function setRouter(Router $router)
    {
        $this->router = $router;
    }
    /**
     * 
     * @param unknown_type $category
     * @return SearchResultBuilder
     */
    public function getBuilderByCategory($category)
    {
        $cls = static::$builderMapping[$category['category']];
        $builder = new $cls($this->doctrine);
        $builder->setRouter($this->router);
        return $builder;
    }
    public static function _initMapping()
    {
        static::$builderMapping = array(Constants::SEARCH_CATEGORY_INSTITUTION => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\InstitutionSearchResultBuilder', Constants::SEARCH_CATEGORY_CENTER => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\MedicalCenterSearchResultBuilder', Constants::SEARCH_CATEGORY_PROCEDURE_TYPE => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\TreatmentsSearchResultBuilder', Constants::SEARCH_CATEGORY_DOCTOR => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\DoctorSearchResultBuilder', Constants::SEARCH_CATEGORY_SPECIALIZATION => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\SpecializationSearchResultBuilder', Constants::SEARCH_CATEGORY_SUB_SPECIALIZATION => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\SubSpecializationSearchResultBuilder');
    }
}
SearchResultBuilderFactory::_initMapping();