Esempio n. 1
0
 /**
  * construtor
  *
  * @param ConfigAbstract $config
  * */
 public function __construct(ConfigAbstract $config)
 {
     $this->_config = $config;
     # inicia o setup das configurações de ambiente
     $this->setupEnvironment($this->_config);
     # registra o bootstrap na registry
     Registry::set('bootstrap', $this);
     # setup default module/functionaly/action
     $tmpCfgApp = $this->_config->get('app');
     # setup persistcofig
     PersistConfig::registerConfigs($tmpCfgApp->get('persist')->toArray());
     $moduleDefault = $tmpCfgApp->get('module.default');
     Request::$moduleDefault = $moduleDefault->get('name');
     Request::$functionalityDefault = $moduleDefault->get('functionality');
     Request::$actionDefault = $moduleDefault->get('action');
     /* recupera */
     $this->_request = new Request();
     /* aponta para o config.ini do módulo selecionado, caso este possui um .ini próprio */
     $this->_useEspecificConfigIniFileIfExistsOne();
     # registra o local de armazenamento do cache dos Values Object
     AnnotationCache::$cacheDir = $tmpCfgApp->get('cache.home');
     # inicializa a requisicao
     $this->_request->setBehaviorMagicQuotesGPC($config->get('php.environment.magic_quotes_gpc'));
     # inicializa o manipulador de constantes
     $this->_constantHandler = ConstantHandler::factory($this);
     $this->_autoloadConstant();
     # habilita ou nao uso de registro de log
     $this->_enablePersistLog($this->_config);
 }
Esempio n. 2
0
 /**
  * {@inheritdoc}
  * */
 protected function _connect(PersistConfig $config)
 {
     try {
         $resource = new \PDO($config->getDSN(), $config->get('username'), $config->get('password'));
         # throws exception if anything goes wrong
         # only works with MySQL 4.x
         $resource->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
         # get values as objects
         $resource->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
         # column names aways lowercase
         $resource->setAttribute(\PDO::ATTR_CASE, \PDO::CASE_LOWER);
         return $resource;
     } catch (\PDOException $pdoe) {
         # @todo um log com o error do PDO devera ser guardo
         throw new PersistException($pdoe->getMessage(), $pdoe->getCode());
     }
 }
Esempio n. 3
0
 /**
  * @param PersistConfig $config
  * @return SoapClient
  * @throws PersistException
  * */
 protected function _connect(PersistConfig $config)
 {
     try {
         $paramArray = array('local_cert' => $config->get('certificate'), 'proxy_host' => $config->get('proxyhost'), 'proxy_port' => $config->get('proxyport'), 'proxy_login' => $config->get('username'), 'proxy_password' => $config->get('password'), 'trace' => 1);
         # Retornar em XML
         $resource = new \SoapClient($config->getDSN(), $paramArray);
         $this->_config = $config;
         return $resource;
     } catch (\Exception $ldape) {
         # @todo da mesma forma do PDO guardar log para o LDAP
         throw new PersistException($ldape->getMessage(), $ldape->getCode());
     }
 }
Esempio n. 4
0
 /**
  * o primeiro param pode ser uma Query ou um objeto Entity. Se uma Entity for informado, então Config
  * torna-se-á obrigatório devido a necessidade de estabelecer a conexao com o respositorio de dados.
  * a fonte de dados poderá ser informado por meio de terceiro para ou omitido para ser utilizado
  * a fonte de dados padrao.
  *
  * @param DSLinkerReferenceable $target
  * @param Config $config
  * @param string $dsName
  * */
 public function __construct(DSLinkerReferenceable $target, Config $config = NULL, $dsName = 'default')
 {
     # se o target for uma referencia para Entity ou Query entao sera
     # necessario um objeto executor de consulta Persist
     if ($target instanceof Entity || $target instanceof QueryAbstract) {
         $info = $config->get($config->get($dsName));
         $target = QueryAbstract::factory($info->get('driver'), $target);
         PersistConfig::registerConfigs($config->toArray());
         $pConfig = $configPersist = PersistConfig::factory($config->get($dsName));
         $namespace = sprintf('br\\gov\\sial\\core\\persist\\%s\\Persist', $pConfig->get('adapter'));
         $executor = Persist::factory($namespace, $pConfig);
         $target = $executor->execute($target);
     }
     $this->_result = $target;
     /* necessario para tornar o */
     $this->next();
 }
Esempio n. 5
0
 /**
  * Fábrica de Persist.
  * @example Persist::factory
  * @code
  * <?php
  *     ...
  *     Persist::factory('\lib\Persist', $persistConfig);
  *     ...
  * ?>
  * @endcode
  * @param [string | Model] $namespace
  * @param  PersistConfig $config
  * @return Persist
  * @throws PersistException
  * */
 public static function factory($namespace = NULL, PersistConfig $config)
 {
     if (is_string($namespace)) {
         self::exists($namespace, TRUE);
         return new $namespace($config);
     }
     PersistException::throwsExceptionIfParamIsNull($namespace instanceof ModelAbstract, self::PERSIST_NAMESPACE_OR_MODEL_REQUIRED);
     # get the funcionality namespace
     $tmpNSFunc = current(explode(self::NAMESPACE_SEPARATOR . 'mvcb', $namespace->getNamespace()));
     $arrNS = explode(self::NAMESPACE_SEPARATOR, $tmpNSFunc);
     # get the funcionality name
     $tmpFuncy = end($arrNS);
     $tpl = '%1$s%2$spersist%2$s%3$s%2$s%4$sPersist';
     $namespace = sprintf($tpl, $tmpNSFunc, self::NAMESPACE_SEPARATOR, $config->get('adapter'), ucfirst($tmpFuncy));
     self::exists($namespace, TRUE);
     # instancia o ModuleDatabasePersist
     $tmpPersist = new $namespace($config);
     return $tmpPersist;
 }
Esempio n. 6
0
 /**
  * Verifica se um banco de dados é suportado.
  *
  * @param string $suspicious
  * @return bool
  * */
 public function isSupported($suspicious)
 {
     return parent::isSupported(self::CONFIG_TYPE) && in_array($suspicious, self::$_acceptedDrivers);
 }
Esempio n. 7
0
 /**
  * Fábrica de Connect.
  *
  * @param PersistConfig $config
  * @return Connect
  * @throws PersistException
  * */
 public static function factory(PersistConfig $config)
 {
     $hash = $config->hash();
     if (!isset(self::$_instance[$hash])) {
         $namespace = sprintf('%1$s%2$s%3$s%2$sConnect', __NAMESPACE__, self::NAMESPACE_SEPARATOR, $config->get('driver'));
         self::$_instance[$hash] = new $namespace($config);
     }
     return self::$_instance[$hash];
 }
Esempio n. 8
0
 /**
  * recupera meta informacao do valueObject informado
  *
  * @param stdClass $annon
  * @param string $dataSource
  * */
 public function meta(\stdClass $annon, $dataSource)
 {
     $config = PersistConfig::factory($dataSource, self::$persistConfig->toArray());
     $data = MetaAbstract::factory(Connect::factory($config))->data($this->safeToggle($annon, 'schema', NULL), $this->safeToggle($annon, 'entity', NULL));
     $this->merge($annon, $data);
 }
Esempio n. 9
0
 /**
  * Construtor.
  *
  * @param string[] $config
  * @throws IllegalArgumentException
  * */
 public function __construct(array $config = array())
 {
     parent::__construct($config);
 }
Esempio n. 10
0
 /**
  * Método que efetua a conexão com o serivdor Ldap.
  *
  * @param persistConfig $config
  * @throws PersistException
  * @see Parent::_connect()
  * */
 protected function _connect(PersistConfig $config)
 {
     try {
         $resource = ldap_connect($config->getDSN());
         $this->_config = $config;
         # Seto parametros de acordo com a versão do LDAP
         ldap_set_option($resource, LDAP_OPT_PROTOCOL_VERSION, $config->get('version'));
         # Seta se as referências segue a biblioteca LDAP e retornadas por servidores LDAP.
         ldap_set_option($resource, LDAP_OPT_REFERRALS, 0);
         return $resource;
     } catch (\Exception $exc) {
         throw new PersistException($exc->getMessage(), $exc->getCode());
     }
 }
Esempio n. 11
0
 /**
  * @return MetaAbstract
  * */
 public function meta()
 {
     $dsName = $this->_bootstrap->config('app.persist.default');
     $config = $this->_bootstrap->config('app.persist')->toArray();
     $pConfig = PersistConfig::factory($dsName, $config);
     $persist = \br\gov\sial\core\persist\database\Connect::factory($pConfig);
     return MetaAbstract::factory($persist);
 }
Esempio n. 12
0
 /**
  * Fábrica Connect
  *
  * @param PersistConfig $config
  * @return \br\gov\sial\core\persist\Connect
  * @throws PersistException
  * */
 public static function factory(PersistConfig $config)
 {
     $hash = $config->hash();
     $tmpID = $config->hash();
     if (FALSE === isset(self::$_instance[$tmpID])) {
         $namespace = sprintf('\\br\\gov\\sial\\core\\persist\\%s\\Connect', $config->get('adapter'));
         self::$_instance[$tmpID] = $namespace::factory($config);
     }
     return self::$_instance[$tmpID];
 }
Esempio n. 13
0
 /**
  * Cria objeto persist do mesmo tipo da Model.
  *
  * @name _getPersist
  * @param string $dsName
  * @return PersistConfig
  * */
 private function _factory($dsName)
 {
     return Persist::factory($this, PersistConfig::factory($dsName));
 }