Exemple #1
0
        public void Comecar()
        {
            if (string.IsNullOrEmpty(Expressao))
            {
                Source.SetResult(null);
            }
            else
            {
                var letras = new Letras();

                if (ContarEspacos)
                {
                    letras.Espacos = Expressao.ToCharArray().Count(x => x == ' ');
                }
                if (ContarVogais)
                {
                    letras.Vogais = Expressao.ToCharArray().Count(x => "aeiou".Contains(x.ToString()));
                }
                if (ContarConsonantes)
                {
                    letras.Consoantes = Expressao.ToCharArray().Count(x => !"aeiou".Contains(x.ToString()));
                }

                Source.SetResult(letras);
            }
        }
Exemple #2
0
        public ContadorLetras()
        {
            MainPage2 = new MainPage2();
            MainPage2.PublicButtonCancelar.Clicked += (sender, args) =>
            {
                Navigation.PopModalAsync(true);
                Source.SetResult(null);
            };

            MainPage2.PublicButtonConfirmar.Clicked += async(sender, args) =>
            {
                var letras = new Letras();

                if (MainPage2.PublicSwitchEspacos.IsToggled)
                {
                    letras.Espacos = Expressao.ToCharArray().Count(x => x == ' ');
                }
                if (MainPage2.PublicSwitchVogais.IsToggled)
                {
                    letras.Vogais = Expressao.ToCharArray().Count(x => "aeiou".Contains(x.ToString()));
                }
                if (MainPage2.PublicSwitchConsoantes.IsToggled)
                {
                    letras.Consoantes = Expressao.ToCharArray().Count(x => !"aeiou".Contains(x.ToString()));
                }

                await Navigation.PopModalAsync(true);

                Source.SetResult(letras);
            };
        }
        public string Resolver()
        {
            var resultadoParenteses = Parentese.Resolver();

            ExpressaoPartes.AppendLine($"-> {Expressao.ToString()}");
            string expressaoComEspaco = FormatarComEspacos(resultadoParenteses);

            ExpressaoPartes.AppendLine($"-> {expressaoComEspaco}");
            Colchete.AdicionarExpressao(resultadoParenteses);

            var resultadoColchetes = Colchete.Resolver();

            if (!resultadoParenteses.Equals(resultadoColchetes))
            {
                expressaoComEspaco = FormatarComEspacos(resultadoColchetes);
                ExpressaoPartes.AppendLine($"-> {expressaoComEspaco}");
            }

            Chave.AdicionarExpressao(resultadoColchetes);
            var resultadoChaves = Chave.Resolver();

            if (!resultadoColchetes.Equals(resultadoChaves))
            {
                expressaoComEspaco = FormatarComEspacos(resultadoChaves);
                ExpressaoPartes.AppendLine($"-> {expressaoComEspaco}");
            }

            var resultadoFinal = new OperacaoMatematica(resultadoChaves.ToString());
            var resultado      = resultadoFinal.Calcular();

            ExpressaoPartes.AppendLine($"-> {resultado.ToString()}");

            return($"-> {resultado.ToString()}");
        }
Exemple #4
0
 private void Start()
 {
     if (personagem == null)
     {
         personagem = GetComponentInParent <Expressao>();
     }
 }
Exemple #5
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="expressao"></param>
 /// <param name="variavies"></param>
 public ExpressaoAccessor(Expressao expressao, IVariavelCollection variavies)
 {
     expressao.Require(nameof(expressao)).NotNull();
     variavies.Require(nameof(variavies)).NotNull();
     Expressao  = expressao;
     _variaveis = variavies;
 }
        //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
        //ORIGINAL LINE: public static void TesteCalcular() throws Exception
        public static void TesteCalcular()
        {
            try
            {
                // 2x^2 - 2
                Polinomio pol = new Polinomio();
                Expressao expressao = new Expressao();

                pol.Expressao = expressao;
                Termo termo = new Termo();
                expressao.addTermo(termo);
                termo.addElementos(new Elemento(Sinal.Positivo, 2, 1));
                termo.addElementos(new Elemento(Sinal.Positivo, 'X', 2));

                termo = new Termo();
                expressao.addTermo(termo);
                termo.Sinal = Sinal.Negativo;
                termo.addElementos(new Elemento(Sinal.Positivo, 2, 1));

                double result = 0;

                var mapa = new Dictionary<char, int>();

                mapa['X'] = 1;
                result = pol.calcular(mapa);
                if (result != 0)
                {
                    throw new Exception("Teste 1 falhou. Esperava '0', recebeu '" + result + "'");
                }

                mapa['X'] = -5;
                result = pol.calcular(mapa);
                if (result != 48)
                {
                    throw new Exception("Teste 2 falhou. Esperava '48', recebeu '" + result + "'");
                }

                mapa['X'] = 100;
                result = pol.calcular(mapa);
                if (result != 19998)
                {
                    throw new Exception("Teste 3 falhou. Esperava '19998', recebeu '" + result + "'");
                }

                mapa['X'] = 0;
                result = pol.calcular(mapa);
                if (result != -2)
                {
                    throw new Exception("Teste 4 falhou. Esperava '-2', recebeu '" + result + "'");
                }

                Console.WriteLine("Calculo terminou com sucesso!");

            }
            catch (Exception ex)
            {
                throw new Exception("Teste de calculo falhou. " + ex.Message);
            }
        }
 public Semantico()
 {
     pilha = new Stack();
     polinomio = new Polinomio();
     Expressao expressao = new Expressao();
     polinomio.Expressao = expressao;
     pilha.Push(expressao);
 }
        public void TestSoma2()
        {
            var e1 = new ExpressaoNumerica(2d);
            var e2 = new ExpressaoNumerica(3d);

            var expressao = new Expressao(e1, Operador.Soma, e2);

            Assert.AreEqual(5, expressao.Avaliar());
        }
Exemple #9
0
        public void Somar2_2_igual_4()
        {
            Expressao e = new Expressao();

            e.Adicionar(new Operando(2));
            e.Adicionar(new Operador("+"));
            e.Adicionar(new Operando(2));

            Assert.AreEqual(e.Calcular(), 4);
        }
Exemple #10
0
        public CalculadoraViewModel()
        {
            this.display = this.digito = String.Empty;
            this.expr    = new Expressao();

            this.expr.OnExpressaoAtualizada(s =>
            {
                this.Expressao = s;
            });
        }
Exemple #11
0
        public void TestMethod1()
        {
            Expressao c      = new Expressao();
            int       indice = 0;


            //TESTE 1 E TESTE 2

            /*c[0] = new Elemento("4", 1);
             * c[1] = new Elemento("-", 3);
             * c[2] = new Elemento("2", 1);
             * c[3] = new Elemento("*", 4);
             * c[4] = new Elemento("2", 1);
             * c[5] = new Elemento("^", 5);
             * c[6] = new Elemento("2", 1);
             * c[7] = new Elemento("+", 3);
             * c[8] = new Elemento("2", 1);
             * c[9] = new Elemento("/", 4);
             * c[10] = new Elemento("2", 1);
             * string[] es = { "1","2", "3", "4", "^", "*", "-", "5", "6", "/", "+"};
             * var x = c.ConverterParaPosFixa(c.PilhaElementos, 11);
             * indice = 11;
             */


            //TESTE 3
            c[0]  = new Elemento("(", 2);
            c[1]  = new Elemento("1", 1);
            c[2]  = new Elemento("^", 5);
            c[3]  = new Elemento("2", 1);
            c[4]  = new Elemento("*", 4);
            c[5]  = new Elemento("3", 1);
            c[6]  = new Elemento("-", 3);
            c[7]  = new Elemento("4", 1);
            c[8]  = new Elemento("+", 3);
            c[9]  = new Elemento("5", 1);
            c[10] = new Elemento("/", 4);
            c[11] = new Elemento("6", 1);
            c[12] = new Elemento("/", 4);
            c[13] = new Elemento("(", 2);
            c[14] = new Elemento("7", 1);
            c[15] = new Elemento("+", 3);
            c[16] = new Elemento("8", 1);
            c[17] = new Elemento(")", 2);
            c[18] = new Elemento(")", 2);
            string[] es = { "1", "2", "^", "4", "*", "5", "-", "5", "6", "/", "7", "8", "+", "/", "+" };
            var      x  = c.ConverterParaPosFixa(c.PilhaElementos, 19);

            indice = 15;

            for (int i = 0; i < indice; i++)
            {
                Assert.AreEqual(es[i], x[i]);
            }
        }
        public void TestMultiplasExpressoes()
        {
            // -2 + 3 * (10 -1 + (2x1))
            IExpressao doisVezesUm                 = new Expressao(new ExpressaoNumerica(2), Operador.Multiplicacao, new ExpressaoNumerica(1));
            IExpressao dezMenosUm                  = new Expressao(new ExpressaoNumerica(10), Operador.Subtracao, new ExpressaoNumerica(1));
            IExpressao expParenteses               = new Expressao(dezMenosUm, Operador.Soma, doisVezesUm);
            IExpressao tresVezesParentes           = new Expressao(new ExpressaoNumerica(3), Operador.Multiplicacao, expParenteses);
            IExpressao menosDoisMaisTresParenteses = new Expressao(new ExpressaoNumerica(-2), Operador.Soma, tresVezesParentes);
            var        resultado = menosDoisMaisTresParenteses.Avaliar();

            Assert.AreEqual(31, resultado);
        }
        public void TestMultiplasSomas()
        {
            // 2 + 3 + 2
            var        expNo1            = new ExpressaoNumerica(2);
            var        expNo2            = new ExpressaoNumerica(3);
            IExpressao expressaoEsquerda = new Expressao(expNo1, Operador.Soma, expNo2);
            var        expNo3            = new ExpressaoNumerica(2);

            var expRaiz   = new Expressao(expressaoEsquerda, Operador.Soma, expNo3);
            var resultado = expRaiz.Avaliar();

            Assert.AreEqual(7, resultado);
        }
Exemple #14
0
        public void Mista_2pp2xigual4DeveTerException()
        {
            Assert.ThrowsException <Exception>(() =>
            {
                Expressao e = new Expressao();

                e.Adicionar(new Operando(2));
                e.Adicionar(new Operador("+"));
                e.Adicionar(new Operador("+"));
                e.Adicionar(new Operando(2));
                e.Calcular();
            });
        }
Exemple #15
0
        public void Complexa_2x2x2x2igual_16()
        {
            Expressao e = new Expressao();

            e.Adicionar(new Operando(2));
            e.Adicionar(new Operador("*"));
            e.Adicionar(new Operando(2));
            e.Adicionar(new Operador("*"));
            e.Adicionar(new Operando(2));
            e.Adicionar(new Operador("*"));
            e.Adicionar(new Operando(2));

            Assert.AreEqual(e.Calcular(), 16);
        }
Exemple #16
0
        //Método que verifica as escritas
        public bool instrucao_escrita(Instrucao_escrita inst_escrita)
        {
            Instrucao_escrita_a inst_esc_a = new Instrucao_escrita_a();
            Instrucao_escrita_b inst_esc_b = new Instrucao_escrita_b();

            if (compare("IMPRIMA"))
            {
                index++;
                if (tokens[index].nome.ToString() == "Texto")
                {
                    inst_esc_a.text = tokens[index].valor.ToString();
                    index++;
                    if (compare(";"))
                    {
                        index++;
                        inst_escrita = inst_esc_a;
                        return(true);
                    }

                    else
                    {
                        throw new System.Exception("Declaracao: \';\' esperado!");
                    }
                }

                Expressao expr = new Expressao();
                if (expressao(expr))
                {
                    inst_esc_b.expr = expr;
                    if (compare(";"))
                    {
                        index++;
                        inst_escrita = inst_esc_b;
                        return(true);
                    }

                    else
                    {
                        throw new System.Exception("Declaracao: \';\' esperado!");
                    }
                }
                else
                {
                    throw new System.Exception("Declaracao: \';\' esperado!");
                }
            }
            return(false);
        }
Exemple #17
0
        public void Mista_2p2x2m2div2_3()
        {
            Expressao e = new Expressao();

            e.Adicionar(new Operando(2));
            e.Adicionar(new Operador("+"));
            e.Adicionar(new Operando(2));
            e.Adicionar(new Operador("*"));
            e.Adicionar(new Operando(2));
            e.Adicionar(new Operador("-"));
            e.Adicionar(new Operando(2));
            e.Adicionar(new Operador("/"));
            e.Adicionar(new Operando(2));

            Assert.AreEqual(e.Calcular(), 5);
        }
Exemple #18
0
        private void btnEq_Click(object sender, EventArgs e)
        {
            try
            {
                var exp = new Expressao(txtInput.Text);

                string saida;
                ErrorLabel = !exp.ProcessarCalc(out saida);

                lbResult.Text = saida;
            }
            catch (Exception ex)
            {
                ErrorLabel    = true;
                lbResult.Text = ex.Message;
            }
        }
Exemple #19
0
        private bool expressao(Expressao expr)
        {
            int             guarda     = index;
            Expressao_ident expr_ident = new Expressao_ident();

            expr_ident.ident = new Identificador();

            if (identificador(ref expr_ident.ident))
            {
                expr = expr_ident;
                return(true);
            }

            index = guarda;
            Expressao_int expr_int = new Expressao_int();

            if (tokens[index].nome.ToString() == "Inteiro")
            {
                expr_int.inteiro = tokens[index].valor.ToString();
                expr             = expr_int;
                index++;
                return(true);
            }

            index = guarda;
            Expressao_real expr_real = new Expressao_real();

            if (tokens[index].nome.ToString() == "Real")
            {
                expr_real.real = tokens[index].valor.ToString();
                expr           = expr_int;
                index++;
                return(true);
            }
            return(false);
        }
        public void TestSubtracao2()
        {
            var expressao = new Expressao(new ExpressaoNumerica(2d), Operador.Subtracao, new ExpressaoNumerica(2d));

            Assert.AreEqual(0, expressao.Avaliar());
        }
Exemple #21
0
 public void AdicionarExpressao(string expressao)
 {
     expressao = expressao.ToString().Replace(" ", "");
     Expressao.Append(expressao);
 }
Exemple #22
0
 /// <summary>
 /// Adiciona a expressa informada.
 /// </summary>
 /// <param name="expressao"></param>
 public void Add(Expressao expressao)
 {
     expressao.Require(nameof(expressao)).NotNull();
     _expressoes.Add(expressao);
 }
        public void TesteInicializacao()
        {
            var expressao = new Expressao(null, Operador.Soma, null);

            Assert.IsNotNull(expressao);
        }
Exemple #24
0
        static public Falador BuscarPolaroideNosAssets(Personagens _personagem, Expressao _emocao)
        {
            Falador personagem = new Falador();

            //string path = "Assets/Sprites/Personagem/Polaroides/";
            string path   = "Polaroides/";
            string nome   = "";
            string emocao = "";

            switch (_personagem)
            {
            case Personagens.Diretor:
                nome            = "Diretor";
                personagem.nome = "Diretor";
                break;

            case Personagens.Drica:
                nome            = "Drica";
                personagem.nome = "Drica";
                break;

            case Personagens.Lurdinha:
                nome            = "Lurdinha";
                personagem.nome = "Lurdinha";
                break;

            case Personagens.Jean:
                nome            = "Jean";
                personagem.nome = "Jean";
                break;

            case Personagens.Leitura:
                nome            = "Leitura";
                personagem.nome = "Aluno";
                break;

            case Personagens.MeioAmbiente:
                nome            = "MeioAmbiente";
                personagem.nome = "Aluno";
                break;

            case Personagens.Madá:
                nome            = "Mada";
                personagem.nome = "Madá";
                break;

            case Personagens.Antonia:
                nome            = "Antonia";
                personagem.nome = "Antonia";
                break;

            case Personagens.Alice:
                nome            = "Alice";
                personagem.nome = "Alice";
                break;

            case Personagens.Montanari:
                nome            = "MariaMontanari";
                personagem.nome = "Maria Montanari";
                break;

            case Personagens.Comenius:
                nome            = "Comenius";
                personagem.nome = "Comenius";
                break;

            case Personagens.AlunoTipo:
                nome            = "Aluno";
                personagem.nome = "Aluno";
                break;

            case Personagens.Aluno:
                nome            = "Aluno";
                personagem.nome = "Aluno";
                break;

            case Personagens.Esquisito:
                nome            = "Esquisito";
                personagem.nome = "Aluno";
                break;

            case Personagens.Vladmir:
                nome            = "Vladmir";
                personagem.nome = "Vladmir";
                break;

            case Personagens.Paulino:
                nome            = "Paulino";
                personagem.nome = "Paulino";
                break;
            }

            path = path + nome + "/";

            switch (_emocao)
            {
            case Expressao.Bravo:
                emocao = "Bravo";
                break;

            case Expressao.CaraFechada:
                emocao = "CaraFechada";
                break;

            case Expressao.Rindo:
                emocao = "Rindo";
                break;

            case Expressao.Serio:
                emocao = "Serio";
                break;

            case Expressao.Sorrindo:
                emocao = "Sorrindo";
                break;
            }

            path = path + emocao;

            Texture2D texture = Resources.Load(path) as Texture2D;

            try
            {
                personagem.personagem = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
            }
            catch (NullReferenceException)
            {
                Debug.LogWarning("Não foi encontrado sprite em " + path);
            }

            return(personagem);
        }
 private void acao05(Token token)
 {
     Elemento elemento = (Elemento) this.pilha.Peek();
     Expressao expressao = new Expressao();
     expressao.Origem = elemento;
     elemento.Expressao = expressao;
     this.pilha.Push(expressao);
 }
        public void TestSoma()
        {
            var expressao = new Expressao(new ExpressaoNumerica(2d), Operador.Soma, new ExpressaoNumerica(2d));

            Assert.AreEqual(4, expressao.Avaliar());
        }
        public LeitorFeicaoGeo(string classeFeicao, FonteFeicao fonte, OperacaoEspacial operacao, Expressao filtro)
            : base(classeFeicao, fonte)
        {
            if (fonte == null)
            {
                throw new Exception("Fonte Nula");
            }
            this._fonte     = fonte;
            this._tabela    = fonte.ObterClasseFeicao(classeFeicao);
            this._atributos = this._tabela.Atributos;
            string str1 = "";

            for (int index = 0; index < this._tabela.Atributos.Count; ++index)
            {
                if (this._tabela.Atributos[index].Tipo == DbType.DateTime)
                {
                    str1 = str1 + "to_char(" + this._tabela.Atributos[index].Nome + ",'dd/mm/yyyy HH24:mi:ss') " + this._tabela.Atributos[index].Nome + ", ";
                }
                else
                {
                    str1 = str1 + this._tabela.Atributos[index].Nome + ", ";
                }
            }
            if (operacao != null)
            {
                str1 = str1 + operacao.GerarComando("param") + " ";
            }
            string str2 = str1 + this._tabela.CampoGeometrico;
            string str3 = "";

            if (filtro != null)
            {
                str3 = " where " + filtro.GerarComando("fparam");
            }
            OracleCommand cmd1 = new OracleCommand("select count(*) from " + this._tabela.Nome + str3, (this.Fonte as FonteFeicaoOracleSpatial).Conexao);

            filtro?.CarregarParametros(cmd1, "fparam");
            int int32 = Convert.ToInt32(cmd1.ExecuteScalar());

            this._dr = (XmlTextReader)null;
            if (int32 <= 0)
            {
                return;
            }
            OracleCommand cmd2 = new OracleCommand("select " + str2 + " from " + this._tabela.Nome + str3, (this.Fonte as FonteFeicaoOracleSpatial).Conexao);

            cmd2.XmlCommandType = OracleXmlCommandType.Query;
            cmd2.FetchSize      = 5242880L;
            cmd2.CommandTimeout = 3600;
            operacao?.CarregarParametros(cmd2, "param");
            filtro?.CarregarParametros(cmd2, "fparam");
            if (cmd2.Parameters.Count > 0)
            {
                cmd2.BindByName = true;
                cmd2.AddRowid   = true;
            }
            else
            {
                cmd2.BindByName = false;
            }
            this.ComandoSQL             = cmd2.CommandText;
            this._dr                    = (XmlTextReader)cmd2.ExecuteXmlReader();
            this._dr.WhitespaceHandling = WhitespaceHandling.None;
            do
            {
                ;
            }while (this._dr.Read() && this._dr.Name != "ROWSET");
        }
        public ExpressaoNumerica(string expressao)
        {
            Expressao.Append(expressao);

            Parentese.AdicionarExpressao(Expressao.ToString());
        }
        public void TestDivisao()
        {
            var expressao = new Expressao(new ExpressaoNumerica(2d), Operador.Divisao, new ExpressaoNumerica(2d));

            Assert.AreEqual(1, expressao.Avaliar());
        }
        public void TestMultiplicacao()
        {
            var expressao = new Expressao(new ExpressaoNumerica(2d), Operador.Multiplicacao, new ExpressaoNumerica(2d));

            Assert.AreEqual(4, expressao.Avaliar());
        }
        private List <byte[]> GerarZipProcessado()
        {
            List <string> prjList = new List <string>();

            string[] featureList = null;
            string[] aliasList   = null;

            switch (Project.Type)
            {
            case OPERACAO_DOMINIALIDADE:
                featureList = "TMP_ATP,TMP_APMP,TMP_AFD,TMP_ROCHA,TMP_VERTICE,TMP_ARL,TMP_RPPN,TMP_AFS,TMP_AVN,TMP_AA,TMP_ACONSTRUIDA,TMP_DUTO,TMP_LTRANSMISSAO,TMP_ESTRADA,TMP_FERROVIA,TMP_NASCENTE,TMP_RIO_LINHA,TMP_RIO_AREA,TMP_LAGOA,TMP_REPRESA,TMP_DUNA,TMP_REST_DECLIVIDADE,TMP_ESCARPA,TMP_AREAS_CALCULADAS".Split(',');
                aliasList   = "ATP,APMP,AFD,ROCHA,VERTICE,ARL,RPPN,AFS,AVN,AA,ACONSTRUIDA,DUTO,LTRANSMISSAO,ESTRADA,FERROVIA,NASCENTE,RIO_LINHA,RIO_AREA,LAGOA,REPRESA,DUNA,REST_DECLIVIDADE,ESCARPA,AREAS_CALCULADAS".Split(',');
                break;

            case OPERACAO_ATIVIDADE:
                featureList = "TMP_PATIV,TMP_LATIV,TMP_AATIV,TMP_AIATIV".Split(',');
                aliasList   = "PATIV,LATIV,AATIV,AIATIV".Split(',');
                break;
            }

            FonteFeicaoOracleSpatial origem            = GetDatabaseFontFeicao();
            FonteFeicaoShapeStream   destino           = new FonteFeicaoShapeStream();
            FonteFeicaoShapeStream   destinoTrackmaker = new FonteFeicaoShapeStream();

            origem.Abrir();
            destino.Abrir();
            destinoTrackmaker.Abrir();

            LeitorFeicao leitor       = null;
            ClasseFeicao classeFeicao = null;

            List <OperadorFeicaoShape> lstEscritores           = new List <OperadorFeicaoShape>();
            List <OperadorFeicaoShape> lstEscritoresTrackmaker = new List <OperadorFeicaoShape>();

            int count = featureList.Length;

            for (int i = 0; i < count; i++)
            {
                string feicao = featureList[i];
                string alias  = aliasList[i];

                classeFeicao = origem.ObterClasseFeicao(feicao);
                if (classeFeicao == null)
                {
                    continue;
                }

                OperadorFeicaoShape escritor  = null;
                AtributoCollection  atributos = null;

                OperadorFeicaoShape escritorTrackmaker  = null;
                AtributoCollection  atributosTrackmaker = null;

                Expressao filtro = null;
                Atributo  atributo;
                Feicao    data;

                if (feicao == "TMP_AREAS_CALCULADAS")
                {
                    string[] tipos = "APP_APMP,APP_AA_USO,APP_AA_REC,APP_AVN,APP_ARL".Split(',');

                    foreach (string tipoArea in tipos)
                    {
                        ExpressaoRelacionalOracleSpatial termo1 = new ExpressaoRelacionalOracleSpatial(new Campo("PROJETO"), TipoOperadorRelacional.Igual, new ParametroOracleSpatial(DbType.Int32, Project.Id));
                        ExpressaoRelacionalOracleSpatial termo2 = new ExpressaoRelacionalOracleSpatial(new Campo("TIPO"), TipoOperadorRelacional.Igual, new ParametroOracleSpatial(DbType.String, tipoArea, 50));
                        filtro = new ExpressaoLogicaOracleSpatial(termo1, TipoOperadorLogico.E, termo2);

                        try
                        {
                            leitor = origem.ObterLeitorFeicao(feicao, null, filtro);
                        }
                        catch (Exception exc)
                        {
                            for (int k = 0; k < 5; k++)
                            {
                                try
                                {
                                    ExpressaoRelacionalOracleSpatial termoAux = new ExpressaoRelacionalOracleSpatial(new Campo("1"), TipoOperadorRelacional.Igual, new Campo("1"));
                                    filtro = new ExpressaoLogicaOracleSpatial(filtro, TipoOperadorLogico.E, termoAux);
                                    leitor = origem.ObterLeitorFeicao(feicao, null, filtro);
                                }
                                catch (Exception)
                                {
                                    if (k < 4)
                                    {
                                        continue;
                                    }

                                    throw new Exception(string.Format("Feicao: {0} / Project.Id: {1} / tipo {2} / where: {3}", feicao, Project.Id, tipoArea, filtro.GerarComando()), exc);
                                }

                                break;
                            }
                        }

                        escritor = null;

                        while (leitor.Ler())
                        {
                            if (escritor == null)
                            {
                                atributos = new AtributoCollection();
                                atributos.Adicionar(classeFeicao.Atributos["AREA_M2"]);

                                escritor = (OperadorFeicaoShape)destino.CriarClasseFeicao(tipoArea, leitor.Atual.Geometria.ObterTipo(), 2, false, atributos);
                                prjList.Add(tipoArea);

                                lstEscritores.Add(escritor);


                                //Trackmaker
                                atributo         = new Atributo();
                                atributo.Nome    = "NOME";
                                atributo.Tamanho = 200;
                                atributo.Tipo    = DbType.String;

                                atributosTrackmaker = new AtributoCollection();
                                atributosTrackmaker.Adicionar(atributo);
                                escritorTrackmaker = (OperadorFeicaoShape)destinoTrackmaker.CriarClasseFeicao(tipoArea, leitor.Atual.Geometria.ObterTipo(), 2, false, atributosTrackmaker);

                                lstEscritoresTrackmaker.Add(escritorTrackmaker);
                            }

                            //Normal information
                            data           = new Feicao();
                            data.ID        = leitor.Atual.ID;
                            data.Geometria = leitor.Atual.Geometria;

                            data.Atributos = new AtributoCollection();
                            foreach (Atributo attr in atributos)
                            {
                                atributo       = attr.Clonar();
                                atributo.Valor = leitor.Atual.Atributos[atributo.Nome].Valor;
                                data.Atributos.Adicionar(atributo);
                            }

                            escritor.Inserir(data);


                            //Trackmaker information
                            data           = new Feicao();
                            data.ID        = leitor.Atual.ID;
                            data.Geometria = leitor.Atual.Geometria;

                            data.Atributos = new AtributoCollection();
                            atributo       = atributosTrackmaker[0].Clonar();
                            atributo.Valor = GenerateTrackMakerNameValue("TMP_" + tipoArea, leitor.Atual.Atributos);
                            data.Atributos.Adicionar(atributo);

                            escritorTrackmaker.Inserir(data);
                        }
                    }
                }
                else
                {
                    filtro = new ExpressaoRelacionalOracleSpatial(new Campo("PROJETO"), TipoOperadorRelacional.Igual, new ParametroOracleSpatial(DbType.Int32, Project.Id));

                    try
                    {
                        leitor = origem.ObterLeitorFeicao(feicao, null, filtro);
                    }
                    catch (Exception)
                    {
                        for (int k = 0; k < 5; k++)
                        {
                            try
                            {
                                ExpressaoRelacionalOracleSpatial termoAux = new ExpressaoRelacionalOracleSpatial(new Campo("1"), TipoOperadorRelacional.Igual, new Campo("1"));
                                filtro = new ExpressaoLogicaOracleSpatial(filtro, TipoOperadorLogico.E, termoAux);
                                leitor = origem.ObterLeitorFeicao(feicao, null, filtro);
                            }
                            catch (Exception)
                            {
                                if (k < 4)
                                {
                                    continue;
                                }

                                throw;
                            }

                            break;
                        }
                    }

                    while (leitor.Ler())
                    {
                        if (escritor == null)
                        {
                            atributos = new AtributoCollection();

                            atributos.Adicionar(classeFeicao.Atributos["ID"]);

                            if (classeFeicao.Atributos.IndiceDe("LARGURA") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["LARGURA"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("NOME") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["NOME"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("AMORTECIMENTO") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["AMORTECIMENTO"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("COD_APMP") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["COD_APMP"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("COMPENSADA") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["COMPENSADA"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("ESTAGIO") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["ESTAGIO"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("PROJETO") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["PROJETO"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("SITUACAO") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["SITUACAO"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("TIPO") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["TIPO"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("ZONA") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["ZONA"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("AREA_M2") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["AREA_M2"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("CODIGO") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["CODIGO"]);
                            }

                            if (classeFeicao.Atributos.IndiceDe("VEGETACAO") >= 0)
                            {
                                atributos.Adicionar(classeFeicao.Atributos["VEGETACAO"]);
                            }

                            escritor = (OperadorFeicaoShape)destino.CriarClasseFeicao(alias, leitor.Atual.Geometria.ObterTipo(), 2, false, atributos);
                            prjList.Add(alias);

                            lstEscritores.Add(escritor);

                            //Trackmaker
                            atributo         = new Atributo();
                            atributo.Nome    = "NOME";
                            atributo.Tamanho = 200;
                            atributo.Tipo    = DbType.String;

                            atributosTrackmaker = new AtributoCollection();
                            atributosTrackmaker.Adicionar(atributo);
                            escritorTrackmaker = (OperadorFeicaoShape)destinoTrackmaker.CriarClasseFeicao(alias, leitor.Atual.Geometria.ObterTipo(), 2, false, atributosTrackmaker);

                            lstEscritoresTrackmaker.Add(escritorTrackmaker);
                        }

                        //Normal information
                        data           = new Feicao();
                        data.ID        = leitor.Atual.ID;
                        data.Geometria = leitor.Atual.Geometria;

                        data.Atributos = new AtributoCollection();
                        foreach (Atributo attr in atributos)
                        {
                            atributo       = attr.Clonar();
                            atributo.Valor = leitor.Atual.Atributos[atributo.Nome].Valor;
                            data.Atributos.Adicionar(atributo);
                        }

                        escritor.Inserir(data);

                        //Trackmaker information
                        data           = new Feicao();
                        data.ID        = leitor.Atual.ID;
                        data.Geometria = leitor.Atual.Geometria;

                        data.Atributos = new AtributoCollection();
                        atributo       = atributosTrackmaker[0].Clonar();
                        atributo.Valor = GenerateTrackMakerNameValue(feicao, leitor.Atual.Atributos);
                        data.Atributos.Adicionar(atributo);

                        escritorTrackmaker.Inserir(data);
                    }
                }

                leitor.Fechar();
            }

            byte[] byteReturn           = null;
            byte[] byteTrackmakerReturn = null;

            if (lstEscritores.Count > 0)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    destino.ExportarParaZip(ms);
                    byteReturn = AdicionarArquivosPrj(ms, prjList.ToArray());
                }

                using (MemoryStream ms = new MemoryStream())
                {
                    destinoTrackmaker.ExportarParaZip(ms);
                    byteTrackmakerReturn = AdicionarArquivosPrj(ms, prjList.ToArray());
                }

                foreach (OperadorFeicaoShape escritorShp in lstEscritores)
                {
                    escritorShp.Fechar();
                }

                foreach (OperadorFeicaoShape escritorShp in lstEscritoresTrackmaker)
                {
                    escritorShp.Fechar();
                }
            }

            origem.Fechar();
            destino.Fechar();
            destinoTrackmaker.Fechar();

            List <byte[]> result = new List <byte[]>();

            result.Add(byteReturn);
            result.Add(byteTrackmakerReturn);

            return(result);
        }