예제 #1
0
        /// <summary>
        /// Construtor para <typeparamref name="MapaDeReferencia"/>.
        /// </summary>
        /// <param name="entradaReferenciada">Is the linked entry.</param>
        /// <param name="subEntradaOrigem">Is the source Element that references the entry.</param>
        /// <param name="source">Is the source Simbolo that references the entry.</param>
        /// <param name="simboloDestino">Is the target referencied Simbolo (entry owner).</param>
        public MapaDeReferencia(MapaDeEntrada mapaDeEntrada, SubEntrada subEntradaOrigem)
        {
            //SimboloOrigemId:
            if (subEntradaOrigem is Nocao)
            {
                SimboloOrigemId = (subEntradaOrigem as Nocao).Simbolo.Id;
            }
            else
            {
                SimboloOrigemId = (subEntradaOrigem as Impacto).Simbolo.Id;
            }

            //SimboloDestinoId:
            var entrada = subEntradaOrigem.Store.ElementDirectory.FindElement(mapaDeEntrada.EntradaId) as Entrada;

            if (entrada is Simbolo)
            {
                SimboloDestinoId = entrada.Id;
            }
            else if (entrada is Sinonimo)
            {
                SimboloDestinoId = (entrada as Sinonimo).Simbolo.Id;
            }
            else
            {
                throw new ArgumentException($"Entrada não é Simbolo nem Sinonimo.");
            }

            EntradaReferenciada = mapaDeEntrada.EntradaUnica;
            SubEntradaOrigemId  = subEntradaOrigem.Id;
        }
예제 #2
0
        /// <summary>
        /// Busca por novas referências entre <typeparamref name="Entrada"/>s
        /// </summary>
        /// <param name="mapaEntrada">Representa um <typeparamref name="MapaDeEntrada"/> para o qual se deseja buscar novas referências</param>
        public void AnalisaEAdicionaMapaDeReferenciaParaNovaEntrada(MapaDeEntrada mapaEntrada)
        {
            var subEntradas = _store.ElementDirectory.FindElements <SubEntrada>();

            /*debug*/ System.Diagnostics.Debug.WriteLine($"AnalisaEAdicionaMapaDeReferenciaParaNovaEntrada mapa[{mapaEntrada.EntradaUnica}] _store[{_store.Id}] subEntradas[{subEntradas.Count()}]");
            foreach (var item in subEntradas)
            {
                AnalisaEAdicionaMapaDeReferencia(mapaEntrada, item as SubEntrada);
            }
        }
예제 #3
0
        /// <summary>
        /// Removes all Link map that references the entry indicated
        /// </summary>
        /// <param name="entry"></param>
        public void RemoveReferenciasDeEntrada(MapaDeEntrada mapa)
        {
            var referencias = new List <MapaDeReferencia>
                              (
                _lista.Where(mRef => mRef.EntradaReferenciada.Equals(mapa.EntradaUnica))
                              );

            foreach (var referencia in referencias)
            {
                Remove(referencia);
            }
        }
예제 #4
0
        private void AnalisaEAdicionaMapaDeReferencia(MapaDeEntrada mapaEntrada, SubEntrada subEntrada)
        {
            var textoContemAlgumaEntrada = subEntrada.Texto.ContainsExtactExpression(mapaEntrada.EntradaUnica);

            if (textoContemAlgumaEntrada)
            {
                var novoMapaDeReferencia = new MapaDeReferencia(mapaEntrada, subEntrada);

                if (!Contem(novoMapaDeReferencia))
                {
                    Adiciona(novoMapaDeReferencia);
                }
            }
        }
예제 #5
0
 public MapaDeEntradaEventArgs(MapaDeEntrada mapaDeEntrada)
 {
     MapaDeEntrada = mapaDeEntrada;
 }
예제 #6
0
 public MapaDeEntradaAtualizadoEventArgs(MapaDeEntrada mapaDeEntradaAntigo, MapaDeEntrada mapaDeEntradaNovo)
 {
     MapaDeEntradaAntigo = mapaDeEntradaAntigo;
     MapaDeEntradaNovo   = mapaDeEntradaNovo;
 }
예제 #7
0
 /// <summary>
 /// Updates link maps from removing old links of <paramref name="oldEntry"/>
 /// and adding new from <paramref name="newEntry"/>
 /// </summary>
 /// <param name="oldEntry">The old entry that needs to be removed</param>
 /// <param name="newEntry">The new entry that needs to be added</param>
 /// <param name="elementId">Represents the element (Simbolo or Sinonimo) owner of <paramref name="newEntry"/></param>
 public void AtualizaMapaDeReferenciaAposAlteracaoDeEntrada(MapaDeEntrada mapaAntigo, MapaDeEntrada mapaNovo)
 {
     /*debug*/ System.Diagnostics.Debug.WriteLine($"Entrou em AtualizaMapaDeReferenciaAposAlteracaoDeEntrada o[{mapaAntigo.EntradaUnica}] n[{mapaNovo.EntradaUnica}]");
     RemoveReferenciasDeEntrada(mapaAntigo);
     AnalisaEAdicionaMapaDeReferenciaParaNovaEntrada(mapaNovo);
 }