예제 #1
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);
         }
     }
 }
예제 #2
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;
 }
 /**
  * Função que monta os dados para pesquisa
  * @param ValueObjectAbstract $valueObject
  */
 private function _preparePersist(ValueObjectAbstract $valueObject)
 {
     $arrResult = array();
     $arrVo = array_filter($valueObject->toArray());
     $attrs = (array) $valueObject->annotation()->load()->attrs;
     foreach ($arrVo as $key => $elmnt) {
         $arrResult[$key] = (object) array('type' => $attrs[$key]->type, 'value' => $elmnt);
     }
     return $arrResult;
 }
예제 #4
0
 /**
  * copia o conteudo, dos atributos avaliados como vazio do objeto atual, do valueObjet informado
  *
  * Nota: Este metodo só funciona com objetos de mesmo tipo
  *
  * @param ValueObjectAbstract $source
  * @return ValueObjectAbstract
  * */
 public function copySaveObjectData(self $source)
 {
     $ttype = $this->annotation();
     $tdata = $this->toArray();
     $sdata = $source->toArray();
     ValueObjectException::throwsExceptionIfParamIsNull($source->annotation()->getClassName() == $ttype->getClassName(), self::T_VALUEOBJECT_OPERATION_REQUIRE_SOME_OBJECT);
     # copia os dados da origem para destino
     foreach ($ttype->getAttrsDoc() as $attr) {
         $name = $attr['name'];
         $setter = $attr['set'];
         # quando o valor for um array isso indica uma chave estrangeira, assim, pega-se a
         # mesma chave e busca no array.
         if (is_array($sdata[$name])) {
             $sdata[$name] = isset($attr['foreingKeyAlias']) ? $sdata[$name][$attr['foreingKeyAlias']] : $sdata[$name][$name];
         }
         # se attr local estiver vazio entao preenche-o com o
         # dado do valueObject informado
         if (is_array($tdata[$name])) {
             $tdata[$name] = isset($attr['foreingKeyAlias']) ? $tdata[$name][$attr['foreingKeyAlias']] : ($tdata[$name] = $tdata[$name][$name]);
         }
         # preenche o attr deste VO se o attr estiver vazio
         if ('boolean' != gettype($tdata[$name]) && '' == $tdata[$name] || 'boolean' != gettype($tdata[$name]) && FALSE === $tdata[$name]) {
             $this->{$setter}($sdata[$name]);
         }
     }
     return $this;
 }