/// <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; }
/// <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); } }
/// <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); } }
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); } } }
public MapaDeEntradaEventArgs(MapaDeEntrada mapaDeEntrada) { MapaDeEntrada = mapaDeEntrada; }
public MapaDeEntradaAtualizadoEventArgs(MapaDeEntrada mapaDeEntradaAntigo, MapaDeEntrada mapaDeEntradaNovo) { MapaDeEntradaAntigo = mapaDeEntradaAntigo; MapaDeEntradaNovo = mapaDeEntradaNovo; }
/// <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); }