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()); } }
/** * 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; }
/** * 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; }
/** * 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); } } }
/** * 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; }
/** * 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}; }
/** * 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); }
/** * 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; }
/** * 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; }
/** * 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; }
/** * {@inheritdoc} */ public function isKeepHistory(ValueObjectAbstract $valueObject) { $info = $valueObject->annotation()->getClassDoc(); return isset($info['log']); }
/** * @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); }
/** * @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); }
/** * @param string $noBanco * @param integer $sqBanco * */ public function __construct($noBanco = NULL, $sqBanco = NULL, $coBanco = NULL) { parent::__construct(); $this->setNoBanco($noBanco)->setSqBanco($sqBanco)->setCoBanco($coBanco); }
/** * @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); }
/** * 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; }
/** * @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); }
/** * 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); }
/** * @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); }
/** * @param string $noEstadoCivil * @param integer $sqEstadoCivil * */ public function __construct($noEstadoCivil = NULL, $sqEstadoCivil = NULL) { parent::__construct(); $this->setNoEstadoCivil($noEstadoCivil)->setSqEstadoCivil($sqEstadoCivil); }
/** * @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); }
/** * @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); }