public function buildKeyPath(Entity $obj_gds_entity, $bol_first_node = true)
    {
        $str_kind = $obj_gds_entity->getKind();
        if(null === $str_kind) {
            if($bol_first_node) {
                if($this->obj_schema instanceof Schema) {
                    $str_kind = $this->obj_schema->getKind();
                } else {
                    throw new \Exception('Could not build full key path, no Schema set on Mapper and no Kind set on Entity');
                }
            } else {
                throw new \Exception('Could not build full key path, no Kind set on (nth node) GDS Entity');
            }
        }

        // Build the first node in the Key Path from this entity
        $arr_full_path = [$this->createKeyPathElement([
            'kind' => $str_kind,
            'id' => $obj_gds_entity->getKeyId(),
            'name' => $obj_gds_entity->getKeyName()
        ])];

        // Add any ancestors to the Key Path
        $mix_ancestry = $obj_gds_entity->getAncestry();
        if(is_array($mix_ancestry)) {
            $arr_ancestor_path = [];
            foreach($mix_ancestry as $arr_ancestor_element) {
                $arr_ancestor_path[] = $this->createKeyPathElement($arr_ancestor_element);
            }
            $arr_full_path = array_merge($arr_ancestor_path, $arr_full_path);
        } elseif ($mix_ancestry instanceof Entity) {
            $arr_full_path = array_merge($this->buildKeyPath($mix_ancestry, false), $arr_full_path);
        }
        return $arr_full_path;
    }
public function buildKeyPath(Entity $obj_gds_entity, $bol_first_node = true)
    {
        $str_kind = $obj_gds_entity->getKind();
        if(null === $str_kind) {
            if($bol_first_node) {
                if($this->obj_schema instanceof Schema) {
                    $str_kind = $this->obj_schema->getKind();
                } else {
                    throw new \Exception('Could not build full key path, no Schema set on Mapper and no Kind set on Entity');
                }
            } else {
                throw new \Exception('Could not build full key path, no Kind set on (nth node) GDS Entity');
            }
        }

        // Build the first node in the Key Path from this entity
        $arr_full_path = [$this->createKeyPathElement([
            'kind' => $str_kind,
            'id' => $obj_gds_entity->getKeyId(),
            'name' => $obj_gds_entity->getKeyName()
        ])];

        // Add any ancestors to the Key Path
        $mix_ancestry = $obj_gds_entity->getAncestry();
        if(is_array($mix_ancestry)) {
            $arr_ancestor_path = [];
            foreach($mix_ancestry as $arr_ancestor_element) {
                $arr_ancestor_path[] = $this->createKeyPathElement($arr_ancestor_element);
            }
            $arr_full_path = array_merge($arr_ancestor_path, $arr_full_path);
        } elseif ($mix_ancestry instanceof Entity) {
            $arr_full_path = array_merge($this->buildKeyPath($mix_ancestry, false), $arr_full_path);
        }
        return $arr_full_path;
    }
public function buildKeyPath ( Entity $ obj_gds_entity , $ bol_first_node = true ) { $ str_kind = $ obj_gds_entity -> getKind ( ) ; if ( null === $ str_kind ) { if ( $ bol_first_node ) { if ( $ this -> obj_schema instanceof Schema ) { $ str_kind = $ this -> obj_schema -> getKind ( ) ; } else { throw new \ Exception ( 'Could not build full key path, no Schema set on Mapper and no Kind set on Entity' ) ; } } else { throw new \ Exception ( 'Could not build full key path, no Kind set on (nth node) GDS Entity' ) ; } } // Build the first node in the Key Path from this entity $ arr_full_path = [ $ this -> createKeyPathElement ( [ 'kind' => $ str_kind , 'id' => $ obj_gds_entity -> getKeyId ( ) , 'name' => $ obj_gds_entity -> getKeyName ( ) ] ) ] ; // Add any ancestors to the Key Path $ mix_ancestry = $ obj_gds_entity -> getAncestry ( ) ; if ( is_array ( $ mix_ancestry ) ) { $ arr_ancestor_path = [ ] ; foreach ( $ mix_ancestry as $ arr_ancestor_element ) { $ arr_ancestor_path [ ] = $ this -> createKeyPathElement ( $ arr_ancestor_element ) ; } $ arr_full_path = array_merge ( $ arr_ancestor_path , $ arr_full_path ) ; } elseif ( $ mix_ancestry instanceof Entity ) { $ arr_full_path = array_merge ( $ this -> buildKeyPath ( $ mix_ancestry , false ) , $ arr_full_path ) ; } return $ arr_full_path ; }
Create a fully qualified Key path

@equivalent ProtoBuf::configureKey() ?

@param Entity $obj_gds_entity
@param bool $bol_first_node
@return array
@throws \Exception
Create a fully qualified Key path