예제 #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
 /**
  * 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));
 }