/**
 *
 * @param type $jsonResponse
 * @return DatacenterController 
 */
function requires($jsonResponse){
    require_once 'requires_build.php';
    $repository = new DatacenterDao(Connection::connect());

    CacheCountry::setCacheBehavior(SessionAdmin::getCacheBehavior());
    $cache = CacheCountry::getCountries();

    $service = new DatacenterService($repository, $cache);//$countryMap);
    $statistic = new Statistic();
    $grouper = new DataGrouper();
    $controller = new DatacenterController($service, $statistic, $jsonResponse, $grouper, $factory);     
    return $controller;
}
<?
    require_once 'AdminLogin.php';

    $loginController = new AdminLogin();
    CacheCountry::setCacheBehavior(SessionAdmin::getCacheBehavior());
    CacheCountry::destroyCache();
    $loginController->logout(SessionAdmin::getLoggedUser());
   
?>
function cacheCountry(Country $countryToCache, $type){
 CacheCountry::setCacheBehavior(SessionAdmin::getCacheBehavior());
 CacheCountry::addCountry($countryToCache, $type);
}
 public function saveValues(ExcelInputFile $excelInputFile, $subgroup, $font, $origin, $destiny, $coffeType, $variety, $typeCountry = null, $internationalTrade = false)
 {
     if (SessionAdmin::isLogged()) {
         CacheCountry::setCacheBehavior(SessionAdmin::getCacheBehavior());
         try {
             if (!is_null($typeCountry)) {
                 $countries = $excelInputFile->getValuesOfColumn(1);
                 $wrongSelected = $this->countriesSelectedAreCorrect($typeCountry, $countries);
                 if (sizeof($wrongSelected) > 0) {
                     $nameOfWrongCountries = $this->countriesAsString($wrongSelected);
                     $message = "- Os seguintes países presentes na planilha (" . utf8_encode($nameOfWrongCountries) . ") não correspondem ao grupo que você selecionou.";
                     $message .= "\n\n";
                     $message .= "\t- Confirme se os países existem na lista (origem ou destino) que você selecionou;";
                     $message .= "\n\n";
                     $message .= "\t- Verifique se falta acentuação no nome do país da planinha selecionada.";
                     $message .= "\n\n";
                     $message .= "\t- Também certifique-se de que os nomes dos países estejam em português e sem abreviações";
                     throw new WrongFormatException($message);
                 }
             }
             if ($this->datacenterService->insertValues($excelInputFile, $subgroup, $origin, $destiny, $coffeType, $variety, $font, $typeCountry, $internationalTrade)) {
                 return $this->jsonResponse->response(true, "Dados inseridos com sucesso!")->serialize();
             } else {
                 $message = "Dados não inseridos. Verifique a possibilidade de já existirem dados referentes a esta planilha";
                 return $this->jsonResponse->response(true, $message)->serialize();
             }
         } catch (Exception $e) {
             return $this->jsonResponse->response(false, $e->getMessage())->serialize();
         }
     } else {
         throw new LoginException();
     }
 }