Ejemplo n.º 1
0
        /**
         * Método de adição de nodos filhos ao artefato.
         * @param Nodo a ser adicionado como filho.
         * @return Retorna status da operção.
         */
        public bool AddChildNode(gBConcrete child_node)
        {
            if (this != child_node)
            {
                //Adiciona nodo na lista de nodos filhos
                this.child_nodes.Add(child_node);

                //Notifica gerenciador que estrutura de nodos fora alterada
                gBManager.Instance.NodeHierarchyChanged();

                child_node.parent_node = this;
                child_node.OnParentNodeSet(this);

                this.OnChildNodeAdd(child_node);

                return true;
            }
            else
            {
                return false;
            }
        }
Ejemplo n.º 2
0
        /**
         * Método de configuração do nodo pai do artefato.
         * @param Nodo a ser definido como pai do artefato.
         * @return Retorna status da operação. Um nodo não pode ser pai de si mesmo.
         */
        public bool SetParentNode(gBConcrete parent_node)
        {
            if (this != parent_node)
            {
                //Remove nodo de lista de pai atual, se este não for nulo
                if(this.parent_node != null)
                {
                    if(!this.parent_node.RemoveChildNode(this))
                    {
                        return false;
                    }
                }

                //Adiciona nodo em lista de nodo pai, se este não for nulo
                if (parent_node != null)
                {
                    if (!parent_node.AddChildNode(this))
                    {
                        return false;
                    }
                }
                return true;
            }
            return false;
        }
Ejemplo n.º 3
0
 /**
  * Método virtual chamado automaticamente no sucesso do ato de definição de um nodo pai.
  */
 public virtual void OnParentNodeSet(gBConcrete parent_node)
 {
 }
Ejemplo n.º 4
0
        /**
         * Método de remoção de nodo filho do artefato.
         * @param Nodo a ser removido da lista de nodos filhos.
         * @return Retorna o status da operação.
         */
        public bool RemoveChildNode(gBConcrete child_node)
        {
            if (this.child_nodes.Remove(child_node))
            {

                //Notifica gerenciador que estrutura de nodos fora alterada
                gBManager.Instance.NodeHierarchyChanged();

                child_node.parent_node = null;
                child_node.OnParentNodeSet(null);

                this.OnChildNodeRemove(child_node);

                return true;
            }

            return false;
        }
Ejemplo n.º 5
0
 /**
  * Método virtual chamado automaticamente no sucesso do ato de adição de um nodo filho.
  */
 public virtual void OnChildNodeAdd(gBConcrete child_node)
 {
 }
Ejemplo n.º 6
0
 /**
  * Método virtual chamado automaticamente no sucesso do ato de remoção de um nodo filho.
  */
 public virtual void OnChildNodeRemove(gBConcrete child_node)
 {
 }
Ejemplo n.º 7
0
 /**
  * Construtor da classe.
  * @param Artefato concreto ao qual pertence o sistema de LOD.
  */
 public gBLODSystem(gBConcrete concrete_artifact)
 {
     //Guarda referência de artefato concreto dono do sistema de LOD
     this.concrete_artifact = concrete_artifact;
 }
Ejemplo n.º 8
0
 /**
  * Método de validação de regra de LOD.
  * @param artifact Artefato alvo da validação da regra.
  * @return Retorna status de validação da regra.
  */
 public abstract bool Validate(gBConcrete concrete_artifact);
Ejemplo n.º 9
0
 /**
  * Método de ativação manual de regra de LOD.
  * @param concrete_artifact Artefato alvo da validação da regra.
  */
 public abstract void Execute(gBConcrete concrete_artifact);
Ejemplo n.º 10
0
 /**
  * Define um artefato concreto como nodo raiz.
  * @param Artefato a ser definido como nodo raiz.
  */
 public void SetRootNode(gBConcrete node)
 {
     //Adiciona nodo na lista de nodos raiz
     gBManager.Instance.root_node = node;
     if (node != null)
     {
         node.SetParentNode(null);
     }
 }
Ejemplo n.º 11
0
        /**
         * Método recursivo de busca e adição de nodos à lista fornecida.
         * @param nodes_list Lista de nodos.
         * @param ignore_ids ID's de nodos a serem ignorados.
         */
        private void FindNodesToUpdate(gBConcrete node, ref List<gBConcrete> nodes, ref HashSet<Guid> ignore)
        {
            //Vasculha os nodos filhos de artefato
            List<gBConcrete> child_nodes = node.GetChildNodes();
            foreach (gBConcrete child_node in child_nodes)
            {
                gBManager.Instance.FindNodesToUpdate(child_node, ref nodes, ref ignore);
            }

            //Busca nodo na lista de ids a serem ignorados
            foreach(Guid ignore_id in ignore)
            {
                if(ignore_id == node.GetID())
                {
                    ignore.Remove(ignore_id);
                    return;
                }
            }

            //Se não for ignorado, adiciona na lista
            nodes.Add(node);
        }