/** * 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(); }
/** * 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); } }
/** * @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); }
/** * Construtor. * * @param PersistConfig $config * */ public function __construct(PersistConfig $config = NULL) { parent::__construct($config); }
/** * 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); } } }
/** * 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; }
/** * 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; } }