コード例 #1
0
        public async Task <IActionResult> Edit(decimal id, [Bind("Id,TipoElemento,TipoOcorrencia,ElementoPai,ComparacaoBases")] ComparacaoBasesElemento comparacaoBasesElemento)
        {
            if (id != comparacaoBasesElemento.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(comparacaoBasesElemento);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ComparacaoBasesElementoExists(comparacaoBasesElemento.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ComparacaoBases"] = new SelectList(_context.ComparacaoBases, "Id", "Id", comparacaoBasesElemento.ComparacaoBases);
            ViewData["ElementoPai"]     = new SelectList(_context.ComparacaoBasesElementos, "Id", "TipoElemento", comparacaoBasesElemento.ElementoPai);
            return(View(comparacaoBasesElemento));
        }
コード例 #2
0
        public async Task <IActionResult> Create([Bind("Id,TipoElemento,TipoOcorrencia,ElementoPai,ComparacaoBases")] ComparacaoBasesElemento comparacaoBasesElemento)
        {
            if (ModelState.IsValid)
            {
                _context.Add(comparacaoBasesElemento);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ComparacaoBases"] = new SelectList(_context.ComparacaoBases, "Id", "Id", comparacaoBasesElemento.ComparacaoBases);
            ViewData["ElementoPai"]     = new SelectList(_context.ComparacaoBasesElementos, "Id", "TipoElemento", comparacaoBasesElemento.ElementoPai);
            return(View(comparacaoBasesElemento));
        }
コード例 #3
0
        private ComparacaoBases ExtrairInformacoesComparacaoDeXML(string xmlFileOut, ComparacaoBases comparacaoBases)
        {
            var settings = new XmlReaderSettings();

            settings.IgnoreWhitespace = true;
            string stringConteudo = File.ReadAllText(xmlFileOut);
            var    xmlDocument    = new XmlDocument();

            xmlDocument.LoadXml(stringConteudo);
            XmlNodeList elementsGroup = xmlDocument.SelectNodes("//Result/Group");
            var         nsmgr         = new XmlNamespaceManager(xmlDocument.NameTable);

            nsmgr.AddNamespace("entry", "urn:newbooks-schema");
            string tagNomeElemento;

            foreach (XmlNode elementGroup in elementsGroup)
            {
                TipoOcorrencia tipoOcorrencia = ObterTipoOcorrenciaPorValueGroup(elementGroup.Attributes["Value"].Value);
                tagNomeElemento = tipoOcorrencia == TipoOcorrencia.Exclusao ? xPathTargetElement : xPathSourceElement;
                // Entra nas 'tabelas'
                XmlNodeList elementosTabelas = elementGroup.SelectNodes(".//Entry[@Name='Table'][@Type='TopLevelElement']");
                foreach (XmlNode entry in elementosTabelas)
                {
                    // Salva os dados da tabela
                    var comparacaoBasesElemento = new ComparacaoBasesElemento();
                    comparacaoBasesElemento.ComparacaoBases = comparacaoBases.Id;
                    comparacaoBasesElemento.TipoElemento    = ((char)TipoElemento.Tabela).ToString();
                    comparacaoBasesElemento.TipoOcorrencia  = ((char)tipoOcorrencia).ToString();
                    comparacaoBasesElemento.XmlOutCompare   = entry.OuterXml;
                    comparacaoBasesElemento.Nome            = entry.SelectSingleNode(tagNomeElemento).InnerText;
                    // Se existir, recupera as entradas de colunas da tabela
                    XmlNodeList elementosColunas = entry.SelectNodes(".//Entry/Children/Entry[@Name='Column'][@Type='Element']");
                    foreach (XmlNode childrenEntry in elementosColunas)
                    {
                        var comparacaoBasesElementoFilho = new ComparacaoBasesElemento();
                        comparacaoBasesElementoFilho.ComparacaoBases = comparacaoBases.Id;
                        comparacaoBasesElementoFilho.TipoElemento    = ((char)TipoElemento.Coluna).ToString();
                        string nomeColuna         = childrenEntry.SelectSingleNode(xPathTargetElement).InnerText;
                        bool   colunaExisteNoAlvo = true;
                        if (string.IsNullOrWhiteSpace(nomeColuna))
                        {
                            nomeColuna         = childrenEntry.SelectSingleNode(xPathSourceElement).InnerText;
                            colunaExisteNoAlvo = false;
                        }
                        if (tipoOcorrencia != TipoOcorrencia.Alteracao)
                        {
                            // Fora ocorrência de alteração da tabela, a ocorrência da coluna é a mesma da tabela
                            comparacaoBasesElementoFilho.TipoOcorrencia = ((char)tipoOcorrencia).ToString();
                        }
                        else
                        {
                            // Se ocorrência da tabela é de alteração, tem que verificar de q lado a coluna existe.
                            comparacaoBasesElementoFilho.TipoOcorrencia = ((char)(colunaExisteNoAlvo ? TipoOcorrencia.Exclusao : TipoOcorrencia.Inclusao)).ToString();
                        }
                        comparacaoBasesElementoFilho.XmlOutCompare = childrenEntry.OuterXml;
                        comparacaoBasesElementoFilho.Nome          = nomeColuna;
                        comparacaoBasesElemento.InverseElementoPaiNavigation.Add(comparacaoBasesElementoFilho);
                    }
                    comparacaoBasesElemento.ComparacaoBasesNavigation = comparacaoBases;
                    // Só adiciona elemento de alteração (tabela) se possuir elmentos filhos (colunas modificadas)
                    if (comparacaoBasesElemento.TipoOcorrencia != "A" || comparacaoBasesElemento.InverseElementoPaiNavigation.Count > 0)
                    {
                        comparacaoBases.ComparacaoBasesElementos.Add(comparacaoBasesElemento);
                    }
                }
            }
            comparacaoBases.XmlOutCompare = stringConteudo;
            return(comparacaoBases);
        }