private function translateDate(ValueObjectAbstract $valueObject)
 {
     $dtIni = $valueObject->getDtInicioVinculo();
     $dtFin = $valueObject->getDtFimVinculo();
     if ($dtIni) {
         $valueObject->setDtInicioVinculo(Date::factory($dtIni, 'd/m/Y')->output());
     }
     if ($dtFin) {
         $valueObject->setDtFimVinculo(Date::factory($dtFin, 'd/m/Y')->output());
     }
 }
예제 #2
0
 /**
  * cria os campos do formulario baseando-se na entidade informada
  *
  * @return DSForm
  * */
 public function factoryField()
 {
     $fields = array();
     $columns = $this->_source->annotation()->load();
     $columns = $columns->attrs;
     foreach ($columns as $key => $column) {
         $getter = $column->get;
         $fields[$column->name] = $this->field($column, $this->_source->{$getter}());
     }
     $this->add($fields);
     return $this;
 }
예제 #3
0
 /**
  * Efetua a persistencia de arquivos
  * @return ValueObjectAbstract
  * @todo transformar para sistemas genericos do SIAL, nao somente do SIAL
  */
 public function filePersist()
 {
     $source = end(explode(self::NAMESPACE_SEPARATOR, self::$_voFile->getClassName()));
     $dstPath = base64_decode(Folder::factory()->createFolderStructure($source));
     $finalPath = self::_saveRootTamburete($dstPath);
     if (NULL != self::$_hashFile) {
         $rootHash = basename(self::_getRootTamburete($dstPath), '.xml');
         $src = $dstPath . DIRECTORY_SEPARATOR . $rootHash . DIRECTORY_SEPARATOR . self::$_hashFile;
         self::$_voFile->setSource(base64_encode($this->_cryptPath($src)));
         self::$_voFile->setName(self::$_hashFile);
     }
     return self::$_voFile;
 }
예제 #4
0
 /**
  * Função que monta os dados para pesquisa
  * @param ValueObjectAbstract $valueObject
  */
 protected function _preparePersist(ValueObjectAbstract $valueObject)
 {
     $arrVo = $valueObject->toArray();
     $attrs = (array) $valueObject->annotation()->load()->attrs;
     foreach ($arrVo as $key => $elmnt) {
         if (isset($attrs[$key]->database)) {
             if ('string' == $attrs[$key]->type && NULL != $elmnt) {
                 $elmnt = '%' . $elmnt . '%';
             }
             $this->_params[$key] = (object) array('type' => $attrs[$key]->type, 'value' => '' == $elmnt ? NULL : $elmnt);
         }
     }
 }
예제 #5
0
 /**
  * Varre o VO buscando as dependencias de outras tabelas
  * @param ValueObjectAbstract $valueObject
  * @return array[]
  */
 public function keepUpdateData(ValueObjectAbstract $valueObject)
 {
     $tmpData = array_filter($valueObject->toArray());
     foreach ($tmpData as $value => $key) {
         if (is_array($key)) {
             if (empty($tmpData[$value][$value])) {
                 unset($tmpData[$value]);
             } else {
                 $tmpData[$value] = $tmpData[$value][$value];
             }
         }
     }
     return $tmpData;
 }
예제 #6
0
 /**
  * Obtém o nome do método acessor e do atributo informados.
  *
  * @param string $typeAcessor
  * @param string $attrAtribute
  * @return string
  * @throws IllegalArgumentException
  */
 private function _getAcessorMethod($typeAcessor, $attrAtribute)
 {
     $this->_checkPropertyExists($attrAtribute);
     IllegalArgumentException::throwsExceptionIfParamIsNull(in_array($typeAcessor, array('get', 'set')), 'Tipo de método acessor é inválido.');
     $annotation = $this->_valueObject->annotation()->load();
     $attrs = $annotation->attrs;
     $attrValue = $attrs->{$attrAtribute};
     return $attrValue->{$typeAcessor};
 }
예제 #7
0
파일: DML.php 프로젝트: sgdoc/sgdoce-codigo
 /**
  * retorna representacao textual do comando para alterar os dados
  *
  * @param ValueObjectAbstract
  * @return string
  * */
 public function update(ValueObjectAbstract $valueObject)
 {
     $annon = $valueObject->annotation()->load();
     $dmlQuery = $conditional = NULL;
     foreach ($this->persistAttr($valueObject, 'update') as $column) {
         # verifica se  o campo eh uma chave primaira
         if (isset($column->primaryKey)) {
             $conditional .= sprintf(' %s %s = :%s', trim($conditional) ? 'AND' : 'WHERE', $column->database, $column->name);
             continue;
         }
         $dmlQuery .= sprintf(', %s = :%s', $column->database, $column->name);
     }
     $dmlQuery = ltrim($dmlQuery, ', ');
     # por questao de seguranca, nao sera permitido a alteracao
     # de toda entidade, ou seja, seja necessario que ao menos
     # uma PK exista na entidade
     DMLException::throwsExceptionIfParamIsNull($conditional, self::T_DMLABSTRACT_FILTER_REQUIRED);
     return sprintf('UPDATE %s SET %s%s', $this->_persist->getEntity($valueObject)->qualifiedName(), $dmlQuery, $conditional);
 }
예제 #8
0
 /**
  * Método construtor.
  * Recupera a relação dos campos a realizar o log de auditoria e a relação dos atributos do VO.
  * @param ValueObjectAbstract $valueObject
  * @param string $pathLeaf
  * @param mixed $pathLeaf
  * @throws \br\gov\sial\core\persist\exception\PersistException
  * */
 public function __construct(ValueObjectAbstract $valueObject, $pathLeaf = NULL, $upload = NULL)
 {
     self::$_config['logFields'] = self::getIfDefined($valueObject->annotation()->load(), 'log') ? $valueObject->annotation()->load()->log : NULL;
     self::$_config['xmlStruct'] = NULL;
     self::$_config['xmlContent'] = NULL;
     self::$_config['xmlContentLog'] = NULL;
     self::$_config['attrs'] = $valueObject->annotation()->load()->attrs;
     self::$_config['timeStamp'] = date("D, d M Y H:i:s");
     self::$_config['namespace'] = $this->getClassName();
     self::$_config['valueObject'] = $valueObject;
     self::$_config['upload'] = $upload;
     # $pathLeaf
     self::$_config['path'] = $pathLeaf;
 }
예제 #9
0
 /**
  * Fábrica de Reflection.
  *
  * @param string $source
  * @param Connect $connect
  * @return Reflection
  * @throws IllegalArgumentException
  * */
 public static function factory($source, Connect $connect)
 {
     $annon = NULL;
     if (is_string($source)) {
         $annon = ValueObjectAbstract::factory($source, array())->annotation();
     } elseif ($source instanceof ValueObjectAbstract) {
         $annon = $source->annotation();
     } else {
         throw new IllegalArgumentException(self::REFLECTION_INVALID_SOURCE);
     }
     $reflect = new self($annon, $connect);
     $reflect->_source = $connect->getSource();
     $reflect->_loadProperties($reflect->_source);
     return $reflect;
 }
예제 #10
0
 /**
  * Retorna todos os atributos do valueObject que podem ser utilizados na camada de persistência, definida por
  * 'self::PERSIST_TYPE'. Opcionalmente, o tipo da operacao podera ser informada (insert, update, delete). Nota:
  * Por padrao os atributos selecionados serao validos para pesquisa.
  *
  * @param ValueObjectAbstract $valueObject
  * @param string $operType
  * @return \stdClass
  * @throws PersistException
  * */
 public function persistAttr(ValueObjectAbstract $valueObject, $operType = NULL)
 {
     $annon = $valueObject->annotation()->load();
     $list = array();
     if (NULL !== $operType) {
         $method = '_persistAttr' . ucfirst(strtolower($operType));
         $message = sprintf(self::T_DMLABSTRACT_UNSUPPORTED_OPERATION, $method);
         DMLException::throwsExceptionIfParamIsNull($this->hasMethod($method), $message);
     }
     foreach ($annon->attrs as $attr) {
         # verifica se o attr pode ser manipulado pela camada de persistencia
         if (FALSE == $this->_persist->isAttrPersistable($attr, $this->_persist->adapter())) {
             continue;
         }
         if (NULL !== $operType) {
             $this->{$method}($list, $attr, $valueObject);
         }
     }
     return $list;
 }
예제 #11
0
 /**
  * {@inheritdoc}
  */
 public function isKeepHistory(ValueObjectAbstract $valueObject)
 {
     $info = $valueObject->annotation()->getClassDoc();
     return isset($info['log']);
 }
예제 #12
0
 /**
  * @param integer $sqPessoa
  * @param integer $sqTipoPessoa
  * @param string $noPessoa
  * @param boolean $stAtivo
  * @param integer $sqPessoaHierarquia
  * @param integer $sqNaturezaJuridica
  * */
 public function __construct($sqPessoa = NULL, $noPessoa = NULL, $sqTipoPessoa = NULL, $stAtivo = NULL, $sqPessoaHierarquia = NULL, $sqNaturezaJuridica = NULL)
 {
     parent::__construct();
     $this->setNoPessoa($noPessoa)->setSqTipoPessoa($sqTipoPessoa)->setSqPessoa($sqPessoa)->setStRegistroAtivo($stAtivo)->setSqPessoaHierarquia($sqPessoaHierarquia)->setSqNaturezaJuridica($sqNaturezaJuridica);
 }
예제 #13
0
 /**
  * @param integer $sqEstado
  * @param string $sgEstado
  * @param integer $sqPais
  * @param string $noEstado
  * @param integer $coIbge
  * @param integer $sqRegiao
  * */
 public function __construct($sqEstado = NULL, $sgEstado = NULL, $sqPais = NULL, $noEstado = NULL, $coIbge = NULL, $sqRegiao = NULL)
 {
     parent::__construct();
     $this->setSqEstado($sqEstado)->setSgEstado($sgEstado)->setSqPais($sqPais)->setNoEstado($noEstado)->setCoIbge($coIbge)->setSqRegiao($sqRegiao);
 }
예제 #14
0
 /**
  * @param string $noBanco
  * @param integer $sqBanco
  * */
 public function __construct($noBanco = NULL, $sqBanco = NULL, $coBanco = NULL)
 {
     parent::__construct();
     $this->setNoBanco($noBanco)->setSqBanco($sqBanco)->setCoBanco($coBanco);
 }
예제 #15
0
 /**
  * @param integer $sqDocumento
  * @param integer $sqAtributoTipoDocumento
  * @param integer $sqPessoa
  * @param string $txValor
  * */
 public function __construct($sqDocumento = NULL, $sqAtributoTipoDocumento = NULL, $sqPessoa = NULL, $txValor = NULL)
 {
     parent::__construct();
     $this->setSqDocumento($sqDocumento)->setSqAtributoTipoDocumento($sqAtributoTipoDocumento)->setSqPessoa($sqPessoa)->setTxValor($txValor);
 }
예제 #16
0
 /**
  * Retorna lista de campos que compõe a entidade
  *
  * @param ValueObjectAbstract $valueObject
  * @return string[]
  * */
 public function fetch(ValueObjectAbstract $valueObject)
 {
     $fields = array('field' => array(), 'value' => array());
     $annon = $valueObject->annotation();
     $infor = $annon->getClassDoc();
     $attrs = $annon->getAttrsDoc();
     $list = 'all' == strtolower($infor['log']) ? $this->fields($annon) : $this->translante($annon, explode(',', $infor['log']));
     foreach ($list as $key => $field) {
         $fields['field'][] = $field;
         $fields['value'][] = self::getValueRecursively($valueObject, $attrs[$key]['get']);
     }
     return $fields;
 }
예제 #17
0
 /**
  * @param integer $sqBioma
  * @param string $noBioma
  * */
 public function __construct($sqBioma = NULL, $noBioma = NULL)
 {
     parent::__construct();
     $this->setSqBioma($sqBioma)->setNoBioma($noBioma);
 }
 /**
  * @param boolean $stRegistroAtivo
  * @param boolean $inEstrutura
  * @param string $sgTipoUnidade
  * @param string $noTipoUnidadeOrg
  * @param integer $sqTipoUnidadePai
  * @param integer $sqTipoUnidadeOrg
  * */
 public function __construct($stRegistroAtivo = NULL, $inEstrutura = NULL, $sgTipoUnidade = NULL, $noTipoUnidadeOrg = NULL, $sqTipoUnidadePai = NULL, $sqTipoUnidadeOrg = NULL)
 {
     parent::__construct();
     $this->setStRegistroAtivo($stRegistroAtivo)->setInEstrutura($inEstrutura)->setSgTipoUnidade($sgTipoUnidade)->setNoTipoUnidadeOrg($noTipoUnidadeOrg)->setSqTipoUnidadePai($sqTipoUnidadePai)->setSqTipoUnidadeOrg($sqTipoUnidadeOrg);
 }
 /**
  * @param string $noProfissao
  * @param timestamp $dtNascimento
  * @param string $nuCurriculoLates
  * @param string $sgSexo
  * @param string $noPai
  * @param string $noMae
  * @param string $nuCpf
  * @param integer $sqEstadoCivil
  * @param integer $sqPessoa
  * @param integer $sqNaturalidade
  * @param integer $sqNacionalidade
  * */
 public function __construct($noProfissao = NULL, $dtNascimento = NULL, $nuCurriculoLates = NULL, $sgSexo = NULL, $noPai = NULL, $noMae = NULL, $nuCpf = NULL, $sqEstadoCivil = NULL, $sqPessoa = NULL, $sqNaturalidade = NULL, $sqNacionalidade = NULL)
 {
     parent::__construct();
     $this->setNoProfissao($noProfissao)->setDtNascimento($dtNascimento)->setNuCurriculoLates($nuCurriculoLates)->setSgSexo($sgSexo)->setNoPai($noPai)->setNoMae($noMae)->setNuCpf($nuCpf)->setSqEstadoCivil($sqEstadoCivil)->setSqPessoa($sqPessoa)->setSqNaturalidade($sqNaturalidade)->setSqNacionalidade($sqNacionalidade);
 }
 /**
  * @param integer $sqTipoUnidadeOrg
  * @param integer $sqTipoUnidadePai
  * @param integer $nivel
  * @param integer $trilha
  * @param boolean $trilha_sigla
  * */
 public function __construct($sqTipoUnidadeOrg = NULL, $sqTipoUnidadePai = NULL, $nivel = NULL, $trilha = NULL, $trilha_sigla = NULL)
 {
     parent::__construct();
     $this->setSqTipoUnidadeOrg($sqTipoUnidadeOrg)->setSqTipoUnidadePai($sqTipoUnidadePai)->setNivel($nivel)->setTrilha($trilha)->setTrilhaSigla($trilha_sigla);
 }
예제 #21
0
 /**
  * Efetua pesquisa por parametrizada.
  *
  * Se informado, o segundo paramentro $limit define o numero de resultado que será retornado. O terceiro pramentro
  * $offSet que também é opcional define o registro inicial que sera contato o limite
  *
  * @param ValueObjectAbstract $valueObject
  * @param integer $limit
  * @param integer $offSet
  * @return ValueObject[]
  * @throws PersistException
  * */
 public function findByParam(ValueObjectAbstract $valueObject, $limit = 10, $offSet = 0)
 {
     try {
         # recupera anotacao do valuObject
         $tmpOperator = array('WHERE', 'AND');
         $annon = $valueObject->annotation()->load();
         $fieldData = $fieldList = array();
         $filter = NULL;
         # campos que devem ser utilizados para persistencia de database
         $attrs = $this->_persist->persistAttr($valueObject, 'select');
         foreach ($attrs as $attr) {
             $fieldList[] = $attr->database;
             $fieldData[$attr->database] = $this->_persist->getValue($valueObject, $attr->get, $attr->type);
             if (NULL === $fieldData[$attr->database]->value) {
                 unset($fieldData[$attr->database]);
                 // @codeCoverageIgnoreStart
                 continue;
                 // @codeCoverageIgnoreEnd
             }
             # insere o campo na listagem de filtro
             $filter .= sprintf(' %1$s %2$s = :%2$s', $tmpOperator[(bool) $filter], $attr->database);
         }
         # monta instrucao SQL de pesquisa
         // @codeCoverageIgnoreStart
         $queryString = sprintf('SELECT %s FROM %s%s', implode(', ', $fieldList), $annon->entity, $filter);
         # se houver, aplica ordenacao
         $queryString = $this->_persist->sorter($queryString);
         # aplica limitacao da consulta
         if ($limit != NULL && 0 < $limit && ($offSet != NULL && 0 < $offSet)) {
             $queryString .= sprintf(' LIMIT %d, %d', (int) $offSet, (int) $limit);
         } elseif ($limit != NULL && 0 < $limit) {
             $queryString .= sprintf(' LIMIT %d', (int) $limit);
         } elseif (0 > $limit) {
             $queryString .= sprintf(' LIMIT %d', 0);
         }
         # executa a consulta
         return $this->_persist->getConnect()->prepare($queryString, $fieldData)->retrieve();
     } catch (\PDOException $pdoExc) {
         throw new PersistException($pdoExc->getMessage(), 0);
     }
 }
 /**
  * @param integer $sqVinculoFuncional
  * @param string $sqPessoa
  * */
 public function __construct($sqVinculoFuncional = NULL, $sqPessoa = NULL)
 {
     parent::__construct();
     $this->setSqVinculoFuncional($sqVinculoFuncional)->setSqPessoa($sqPessoa);
 }
 /**
  * @param string $noTipoDadoBancario
  * @param integer $sqTipoDadoBancario
  * */
 public function __construct($noTipoDadoBancario = NULL, $sqTipoDadoBancario = NULL)
 {
     parent::__construct();
     $this->setNoTipoDadoBancario($noTipoDadoBancario)->setSqTipoDadoBancario($sqTipoDadoBancario);
 }
예제 #24
0
 /**
  * @param integer $sqFuncao
  * @param string $noFuncao
  * */
 public function __construct($sqFuncao = NULL, $noFuncao = NULL)
 {
     parent::__construct();
     $this->setSqFuncao($sqFuncao)->setNoFuncao($noFuncao);
 }
 /**
  * @param string $noTipoEndereco
  * @param integer $sqTipoEndereco
  * */
 public function __construct($noTipoEndereco = NULL, $sqTipoEndereco = NULL)
 {
     parent::__construct();
     $this->setNoTipoEndereco($noTipoEndereco)->setSqTipoEndereco($sqTipoEndereco);
 }
 /**
  * @param string $noTipoVinculoSistemico
  * @param integer $sqTipoVinculoSistemico
  * @param integer $sqSistema
  * */
 public function __construct($noTipoVinculoSistemico = NULL, $sqTipoVinculoSistemico = NULL, $sqSistema = NULL)
 {
     parent::__construct();
     $this->setNoTipoVinculoSistemico($noTipoVinculoSistemico)->setSqTipoVinculoSistemico($sqTipoVinculoSistemico)->setSqSistema($sqSistema);
 }
예제 #27
0
 /**
  * @param string $noEstadoCivil
  * @param integer $sqEstadoCivil
  * */
 public function __construct($noEstadoCivil = NULL, $sqEstadoCivil = NULL)
 {
     parent::__construct();
     $this->setNoEstadoCivil($noEstadoCivil)->setSqEstadoCivil($sqEstadoCivil);
 }
예제 #28
0
 /**
  * @param integer $sqMunicipio
  * @param integer $coIbge
  * @param integer $sqEstado
  * @param string $noMunicipio
  * */
 public function __construct($sqMunicipio = NULL, $coIbge = NULL, $sqEstado = NULL, $noMunicipio = NULL)
 {
     parent::__construct();
     $this->setSqMunicipio($sqMunicipio)->setCoIbge($coIbge)->setSqEstado($sqEstado)->setNoMunicipio($noMunicipio);
 }
 /**
  * @param integer $sqSituacaoFuncional
  * @param string $noSituacaoFuncional
  * */
 public function __construct($sqSituacaoFuncional = NULL, $noSituacaoFuncional = NULL)
 {
     parent::__construct();
     $this->setSqSituacaoFuncional($sqSituacaoFuncional)->setNoSituacaoFuncional($noSituacaoFuncional);
 }
예제 #30
0
 /**
  * @param string $nuTelefone
  * @param string $nuDdd
  * @param integer $sqPessoa
  * @param integer $sqTipoTelefone
  * @param integer $sqTelefone
  * */
 public function __construct($nuTelefone = NULL, $nuDdd = NULL, $sqPessoa = NULL, $sqTipoTelefone = NULL, $sqTelefone = NULL)
 {
     parent::__construct();
     $this->setNuTelefone($nuTelefone)->setNuDdd($nuDdd)->setSqPessoa($sqPessoa)->setSqTipoTelefone($sqTipoTelefone)->setSqTelefone($sqTelefone);
 }