public function testToCamelCase()
 {
     // Initialize
     $sInput = 'test_camel_case';
     // Assert
     $this->assertEquals('testCamelCase', ExtendedString::toCamelCase($sInput));
 }
 public function getRepository($sRepositoryName, $sNamespace)
 {
     if (empty($this->aRepositories[$sRepositoryName])) {
         // Get class name
         $sClassName = sprintf('\\%1$s\\Repository\\%2$s', $sNamespace === '' ? $this->sNamespace : $sNamespace, ExtendedString::toCamelCase($sRepositoryName, '_', true));
         // Check class exists
         if (!class_exists($sClassName)) {
             throw new RuntimeException(sprintf('Invalid class name %s', $sClassName));
         }
         // Create repository
         $this->aRepositories[$sRepositoryName] = new $sClassName($this->oMapperFactory->getMapper($sRepositoryName));
     }
     return $this->aRepositories[$sRepositoryName];
 }
 public function getMapper($sMapperName, $sNamespace = '')
 {
     if (empty($this->aMappers[$sMapperName])) {
         // Get class name
         $sClassName = sprintf('\\%1$s\\Mapper\\%2$s', $sNamespace === '' ? $this->sNamespace : $sNamespace, ExtendedString::toCamelCase($sMapperName, '_', true));
         // Check class exists
         if (!class_exists($sClassName)) {
             throw new RuntimeException(sprintf('Invalid class name %s', $sClassName));
         }
         // Create mapper
         $this->aMappers[$sMapperName] = new $sClassName($this->oDbConnectionLocator->getWrite(ExtendedString::toSnakeCase(explode('\\', $sMapperName)[0], '_', true)));
     }
     return $this->aMappers[$sMapperName];
 }
 public function addHandler($sHandlerName, $sClassName, array $aConfig, $bDefaultHandler = false, $sNamespace = '')
 {
     // Get class name
     $sClassName = ExtendedString::toCamelCase(sprintf('%s\\%sHandler', $sNamespace === '' ? $this->sNamespace : $sNamespace, $sClassName), '_', true);
     // Class name is valid
     if (!class_exists($sClassName)) {
         throw new RuntimeException(sprintf('Invalid class name %s', $sClassName));
     }
     // Add handler
     /** @var $oHandler \Asticode\FileManager\Handler\HandlerInterface */
     $oHandler = new $sClassName($aConfig);
     $this->aHandlers[$sHandlerName] = $oHandler;
     // Default handler
     if ($bDefaultHandler) {
         $this->sDefaultHandlerName = $sHandlerName;
     }
     // Add file methods
     $this->aCopyMethods = array_merge($this->aCopyMethods, $oHandler->getCopyMethods());
     $this->aMoveMethods = array_merge($this->aMoveMethods, $oHandler->getMoveMethods());
 }
 /**
  * @param $sHandlerName
  * @return \Asticode\DeploymentManager\Service\Build\Handler\HandlerInterface
  */
 private function getHandler($sHandlerName)
 {
     if (empty($this->aHandlers[$sHandlerName])) {
         // Get class name
         $sClassName = sprintf('\\Asticode\\DeploymentManager\\Service\\Build\\Handler\\%1$sHandler', ExtendedString::toCamelCase($sHandlerName, '_', true));
         // Check class exists
         if (!class_exists($sClassName)) {
             throw new RuntimeException(sprintf('Invalid class name %s', $sClassName));
         }
         // Create handler
         $oHandler = new $sClassName($this->oFileManager, $this->aConfig);
         // Handler implements the interface
         if (!$oHandler instanceof HandlerInterface) {
             throw new RuntimeException(sprintf('Class name %s doesn\'t implement the HandlerInterface', $sClassName));
         }
         // Add handler
         $this->aHandlers[$sHandlerName] = $oHandler;
     }
     return $this->aHandlers[$sHandlerName];
 }
 /**
  * @param $sHandlerName
  * @param $sClassName
  * @param $iPriority
  * @param array $aConfig
  * @param string $sNamespace
  * @return CacheManager
  */
 public function addHandler($sHandlerName, $sClassName, $iPriority, array $aConfig, $sNamespace = '')
 {
     // Get class name
     $sClassName = ExtendedString::toCamelCase(sprintf('%s\\%sHandler', $sNamespace === '' ? $this->sNamespace : $sNamespace, $sClassName), '_', true);
     // Class name is valid
     if (!class_exists($sClassName)) {
         throw new RuntimeException(sprintf('Invalid class name %s', $sClassName));
     }
     // Priority is valid
     $iPriority = intval($iPriority);
     if (array_key_exists($iPriority, $this->aPriorityToNameMapping)) {
         throw new RuntimeException(sprintf('Priority %s is already in use', $iPriority));
     }
     // Add handler
     $oHandler = new $sClassName($aConfig);
     $this->aHandlers[$sHandlerName] = $oHandler;
     // Add priority
     $this->aPriorityToNameMapping[$iPriority] = $sHandlerName;
     ksort($this->aPriorityToNameMapping);
     // Return
     return $this;
 }