Пример #1
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();
 }
Пример #2
0
 /**
  * habilita ou nao o log da camada de persistencia
  *
  * @param ConfigAbstract $config
  * */
 private function _enablePersistLog(ConfigAbstract $config)
 {
     $persistLogger = $config->get('app.persist.logger');
     if ($persistLogger) {
         #instancia o reponsável pelo log do banco
         if (class_exists($persistLogger)) {
             Persist::$persistLoggerInstance = new $persistLogger();
         } else {
             error_log("[SSPCore] config app.persist.logger = {$persistLogger} (class not exists)");
         }
         # registra o bootstrap na persistlog para que ela seja
         # capaz de recuperar informacoes do sistema, modulo, action
         # que realizou a operacao que sera logada
         PersistLogAbstract::bootstrap($this);
     }
 }
Пример #3
0
 /**
  * @param string $attrName
  * @param Entity $entity
  * @param string $defaultValue
  * @return ElementAbstract
  * */
 public function fieldForeign($attrName, Entity $entity, $defaultValue = NULL)
 {
     $info = $this->_FKConfig->get($attrName);
     return new Select($attrName, $this->_executor->execute(QueryAbstract::factory($this->_executor->getConfig()->get('driver'), $entity)), $info->value, $info->label, $defaultValue);
 }
Пример #4
0
 /**
  * Construtor.
  *
  * @param PersistConfig $config
  * */
 public function __construct(PersistConfig $config = NULL)
 {
     parent::__construct($config);
 }
Пример #5
0
 /**
  * Injeta os valores recuperados do banco no ValueObject.
  *
  * @param ValueObjectAbstract $valueObject
  * @param ResultSet $resultSet
  * */
 protected static function _injectResultOnValueObject(ValueObjectAbstract $valueObject, ResultSet $resultSet)
 {
     $adapter = self::PERSIST_TYPE;
     $annon = $valueObject->annotation()->load();
     $tmpRow = $tmpResult = NULL;
     while (TRUE) {
         $tmpRow = $resultSet->fetch();
         if (NULL == $tmpRow) {
             // @codeCoverageIgnoreStart
             break;
             // @codeCoverageIgnoreEnd
         }
         $tmpResult = $tmpRow;
     }
     foreach ($annon->attrs as $attr) {
         if (isset($attr->set) && isset($attr->{$adapter})) {
             $setter = $attr->set;
             $fName = $attr->{$adapter};
             $valueObject->{$setter}($tmpResult ? parent::getIfDefined($tmpResult, $fName) : NULL);
         }
     }
 }
Пример #6
0
 /**
  * Registra o usuário logado.
  * @example ModelAbstract::registerUserId
  * @code
  * <?php
  *     ...
  *     $model->registerUserId($id);
  *     ...
  * ?>
  * @endcode
  * @param integer $userId
  * @return ModelAbstract;
  * @deprecated A implementação do log da camada de persistencia será de cada sistema
  */
 public function registerUserId($userId)
 {
     $this->_persist->registerUserId($userId);
     return $this;
 }
Пример #7
0
 /**
  * Deleta dados no repositório.
  *
  * @param  ValueObjectAbstract $valueObject
  * @return Persist
  * @throws PersistException
  * */
 public function delete(ValueObjectAbstract $valueObject)
 {
     $annon = parent::annotation()->load();
     $sial_queryFields = '';
     foreach ($annon->attrs as $field) {
         if ($attr = self::getIfDefined($field, 'keyLdap')) {
             $get = $field->get;
             $params[$field->ldap] = $valueObject->{$get}();
             $params['keyLdap'] = $field->keyLdap;
         }
     }
     $query = self::DELETE_FUNCTION;
     try {
         $this->getConnect()->prepare($query, $params)->update();
     } catch (PersistException $pEexc) {
         throw $pEexc;
     }
 }