Ejemplo n.º 1
0
        /// <summary>
        ///     Funcionalidade
        ///         Vasculha o diretório selecionado atrás de TxTs com as Tags Parametrizadas.
        ///         Cria as pastas automaticamente que estão nas tags do arquivo no intervalo |%Diretorios!Arquivo%|.
        ///         Lê o arquivo de Origem e na tag parametrizada depois do coringa "!" deverá ser colocado o nome do arquivo.
        ///
        ///     Links
        ///         Já cria automaticamente o arquivo .url
        ///         Na linha após a tag parametrizada no arquivo de origem deve ficar o título do link e na terceira a Url.
        ///             Ex:
        ///                 |%Pesquisa%|
        ///                 www.google.com
        ///                 http://www.google.com
        ///
        ///                 Ou
        ///
        ///                 |%Foruns%|
        ///                 forum.macnews.com.br - 206 atalhos para o mac OsX Leopard
        ///                 http://forum.macnews.com.br/topic/45877-206-atalhos-para-o-mac-osx-leopard
        ///
        ///         Quando existirem diversos links um em baixo do outro em sequencia, deverá ser criado um Txt dentro de um diretorio para organização posterior:
        ///             Ex: |%Tarefas/Organizações/Links!Visualizar%|
        ///
        ///     Regras
        ///         1. Se no arquivo de Origem tiver "--" como por exemplo em "--Arquivo.txt" na frente de seu nome ou dentro do próprio arquivo como em --|%Tarefas/Organizações/Links!Visualizar%|, este não entrará no processo de organização.
        ///         5. Em links não pode haver tabulação, nem coringas como "/" no título.
        ///         6. Nas Tags prestar atenção se o final não possui tabulação após %|
        ///         7. Tomar cuidado com erros nas tags como: |%Notas/Pesquisa!Financas!Acoes%|
        ///         8. Preste atenção se o link não possui a estrutura Tag > Titulo > URL, será retornado um erro.
        ///         9. Tome cuidado também para não esquecer o coringa '!' na Tag de um texto, senão será considerado um link e pode ocasionar erro.
        ///         10. Se não exitir ums Tag no arquivo e o restantes das informações não possuirem Tag, o conteúdo do arquivo será atribuido a primeira Tag.
        ///         11. Se for feita duas compilações distintas e os diretórios estiverem com o mesmo nome, a segunda compilação atualizará a primeira. Sem perder informação.
        ///
        ///    Excessões
        ///         1. Pode haver espaços na Tags, mas não é recomendado é melhor usar underline.
        ///         2. Pode haver mais de um enter entre as Tags, mas não dentro de um bloco, pois estes são organizados por tabulação
        ///         3. Pode haver acentos nas Tags e nos blocos
        ///
        ///     Referencias
        ///         Método IndexOf
        ///             http://dotnetperls.com/indexof
        ///         Directory.CreateDirectory Method
        ///             http://msdn.microsoft.com/en-us/library/system.io.directory.createdirectory(v=vs.71).aspx
        ///         Método Split
        ///             http://dotnetperls.com/string-split
        ///         Ler um arquivo de texto usando o System.IO e o Visual C# .NET
        ///             http://support.microsoft.com/kb/306777/pt-br
        ///         Leitura e escrita em arquivos com C#
        ///             http://imasters.com.br/artigo/12197/csharp/leitura_e_escrita_em_arquivos_com_c
        ///         Simple Text File Operations in C#
        ///             http://www.csharphelp.com/2005/12/simple-text-file-operations-in-c
        ///         Quebra de Linha em C#
        ///             http://social.msdn.microsoft.com/Forums/pt-BR/clientept/thread/bf79be70-d50a-4438-91ed-591640c01244
        ///             http://social.msdn.microsoft.com/Forums/pt-BR/504/thread/ab8b03ef-e969-4926-9b8d-4eb628e2d9cd
        ///
        ///     Motivação
        ///         A tecnologia não atende nossas necessidades de ser agil e organizado ao mesmo tempo. Informação deve ser fluída, constante como o
        ///         pensamento humano e a tecnologia ainda não é muito dinâmica e inteligente o suficiente para acompanhar as mudanças nesta velociadade
        ///         necessária que dê um retorno rápido e organizado. A informação fluida siginifica toda informação pode estar ligada.
        ///         Lembre-se tablets são só um meio mais prático e bonito de criar informação como antigamente. A tecnologia ainda limita a agidade do pensamento humano.
        ///
        ///     Tarefas
        ///         Criar a funcionalidade reversa para entrar em diretórios organizados e sincronizar com Favoritos, OneNote / SkyDrive, Google Drive e SQL
        ///         Você pode ainda ter os dados sincronizados com algum blog, suas codificações
        ///         Você pode criar funcionalidades de calendário, para não disponibilizar mais informações para o Google
        ///         Você pode ainda estender a idéia para organizar seus arquivos, vídeos.
        ///         Você poderá gerenciar seus programas também e poderá acessa-los do trabalho em sua casa.
        ///         Você pode sincronizar com o banco de dados informações diretamente de sites acessados
        ///         Você pode criptografar as informações, assim muitos irão usar sua ferramenta. A informação fica armazenada no dispositivo móvel
        ///         até que seja sincronizada com um PC ou Tablet. Nunca mais a informação ficará na rede. As informações que a pessoa desejasse colocar na
        ///         internet será só escolher para sincronizar com google drive, skydrive e etc...
        ///         Você pode criar formatação através de códigos para colocar tags HTML, exemplo: |105|Teste|106| = <b>Teste</b>.
        ///         Você pode sincronizar os favoritos, para IE, Chrome e etc...
        ///
        ///     Observações
        ///         Se você quer suas anotações e links perfeitamente organizados o ideal é armazenar em banco dados só assim você poderá
        ///         relacionar tópicos relacionados, verbetes e urls agrupados ao mesmo tempo na mesma categoria, sem que se repeta
        ///         para as outras anotacões.
        ///
        ///         URls, Imagens e até mesmo vídeos ficariam em tabelas separadas, mas uma anotação poderia ter
        ///         o link para o vídeo, a imagem. É o mesmo conceito da planilha onde você encontra tudo em um único arquivo. Você fica
        ///         preso as limitações do software que o projetista criou. Até seu trabalho pode ficar organizado assim e será útil
        ///         para usar em outras empresas também.
        ///
        ///         Você pode criar um site para acessar e cadastrar as informações. Suas senhas
        ///         podem ficar armazenadas aqui também. Você não dependerá de nenhum programa que falhe ou de politicas de seguranças das empresas
        ///         que bloqueiam sites de armazenamento e pen-drives (Transformando você em um robô).
        ///
        ///         O banco de dados é muito bom, pois não divulgarei minhas informações para o Google. Este sisteminha é a idéia da PessoalNet.
        ///         Pois nem toda idéia deve ser colocada na internet.
        ///
        ///         Você não precisa mais instalar OneNote, Usar SkyDrive, você criará suas próprias funcionalidades.
        ///
        ///         Use Linux, Aprenda Java, Desenvolva para Android e sempre se mantenha organizado.
        ///
        ///     Rotinas
        ///         Você deverá estar constantemente organizando e fazendo backup do banco de dados, enquanto ele não estiver disponível na internet.
        ///
        ///     Instanciação obsoleta (VS 2010 Express)
        ///         Obsoleta: NameValueCollection _appSettings = ConfigurationManager.AppSettings;
        ///         Nova(Não funciona!): ConfigurationSettings.AppSettings["ExtencaoTXT"]
        ///
        ///     1 - Tem que adicionar a referencia da dll System.Configuration
        ///     2 - adicionar using System.Configuration;
        ///     3 - Tem que trocar ConfigurationSettings.AppSettings por ConfigurationManager.AppSettings
        ///     Resolve System.Configuration.ConfigurationSettings warning
        ///         http://weblogs.asp.net/hosamkamel/archive/2007/09/07/resolve-system-configuration-configurationsettings-warning.aspx
        ///     Configuration Settings File for providing application configuration data
        ///         http://www.codeproject.com/Articles/6538/Configuration-Settings-File-for-providing-applicat
        ///     ConfigurationSettings.AppSettings Property
        ///         http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings.aspx
        ///     .NET Framework V2.0 Obsolete API List
        ///         http://msdn.microsoft.com/en-us/vstudio/Aa497286.aspx
        /// </summary>
        /// <returns></returns>
        public Boolean CompilarTagsParametrizadas(ProgressBar pbArquivos)
        {
            AuxConteudo = string.Empty;

            DiretorioCompleto = new DirectoryInfo(DiretorioSelecionado);
            Arquivos          = DiretorioCompleto.GetFiles(ConfigurationManager.AppSettings["ExtencaoTXT"]);

            //Atribui a quantidade de arquivos TXT para o Progress Bar
            pbArquivos.Maximum = Arquivos.Length;

            foreach (FileInfo file in Arquivos)
            {
                //Armazena o nome do arquivo caso ocorra algum erro.
                ArquivoAtual = file.Name;

                //Se o arquivo não conter "--" em seu nome então o processo de organização deve seguir
                if (!file.Name.Contains(ConfigurationManager.AppSettings["CaracterExclusao"]))
                {
                    //Encoding.GetEncoding(1252) implementa acentos
                    Arquivo = new StreamReader(file.FullName, Encoding.GetEncoding(1252));

                    Linha = Arquivo.ReadLine();

                    //Atribui um arquivo lido para a Progress Bar
                    pbArquivos.Step = 1;
                    pbArquivos.PerformStep();

                    while (!Arquivo.EndOfStream)
                    {
                        //Armazena a linha atual do arquivo caso ocorra algum erro.
                        LinhaAtual = Linha;

                        //Verifica se a linha possui o delimitador parametrizado, senão esta linha não será processada
                        if (Linha.Contains(ConfigurationManager.AppSettings["DelimitadorAberto"]) && Linha.Contains(ConfigurationManager.AppSettings["DelimitadorFechado"]))
                        {
                            //Limpa delimitadores do caminho
                            Caminho = Linha.Replace(ConfigurationManager.AppSettings["DelimitadorAberto"], string.Empty).Replace(ConfigurationManager.AppSettings["DelimitadorFechado"], string.Empty);

                            VerificarTextoLink();
                            SepararNomesDiretorios();
                            ManterTextoPrimeiroBloco();
                            CriarDiretoriosEArquivos();
                        }
                        else
                        {
                            throw new Exception(ConfigurationManager.AppSettings["MsgErroDelimitadores"]);
                        }
                    }

                    ProcessoCompleto = true;
                }
            }

            return(ProcessoCompleto);
        }
Ejemplo n.º 2
0
        public static void gravaLogAzure()
        {
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            //string arqLog = @"C:\Users\Ivan\Documents\FRIGOBOM DADOS.FDB\LOG.sql";
            string arqLog = CaminhoDadosXML(caminho) + @"Dados\LOG.sql";

            var prodx = from p in XElement.Load((CaminhoDadosXML(caminho) + @"Dados\Conexoes.xml")).Elements("Conexao")
                        where p.Element("tipo").Value == "azure"
                        select new
            {
                servidor = p.Element("servidor").Value,
                usuario  = p.Element("usuario").Value,
                senha    = p.Element("senha").Value,
                banco    = p.Element("banco").Value,
            };

            // Executa a consulta
            foreach (var produto in prodx)
            {
                string cipherText    = produto.senha.Trim();
                string decryptedText = CryptorEngine.Decrypt(cipherText, true);

                builder.DataSource = produto.servidor;
                builder.UserID     = produto.usuario;
                builder.Password   = decryptedText;
                //builder.Password = produto.senha;
                builder.InitialCatalog = produto.banco;
                builder.ConnectTimeout = 60;
            }

            //limpa memória
            prodx = null;

            using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
            {
                try
                {
                    connection.Open();
                    StreamReader texto = new StreamReader(arqLog);
                    // textBox3.Text = texto.ReadToEnd();
                    string oLogSql = "";
                    string s       = texto.ReadToEnd();
                    int    i       = 0;
                    string sql     = @"INSERT INTO [dbo].[vendas_frigobom_log]
                                       ([F_log])
                                 VALUES ";

                    string[] words = Regex.Split(s, "\r\n");


                    foreach (string Linha in words)
                    {
                        if (i == 0)
                        {
                            oLogSql += sql + "('" + Linha.Replace("'", "|") + "')";
                            i++;
                        }
                        else if (i == 999)
                        {
                            oLogSql += ",('" + Linha.Replace("'", "|") + "')";
                            i        = 0;
                        }
                        else
                        {
                            oLogSql += ",('" + Linha.Replace("'", "|") + "')";
                            i++;
                        }
                    }

                    ///fecho e deleto o arquivo.
                    texto.Close();

                    if (File.Exists(arqLog))
                    {
                        File.Delete(arqLog);
                    }

                    //exporto dados.
                    SqlCommand command = new SqlCommand(oLogSql, connection);
                    command.CommandTimeout = 60;
                    command.ExecuteNonQuery();
                    connection.Close();

                    //log.WriteEntry(watch.Elapsed + " | Exportação para o cloud concluida " +  "\r\n");
                    sql     = null;
                    oLogSql = null;
                    s       = null;
                    words   = null;
                    arqLog  = null;
                }
                catch (Exception ex)
                {
                    //log.WriteEntry(ex);

                    string oLog = " Erro Exportar Log no Azure linha 160 " + ex.Message + "\r\n";
                    Global.gravaLog(oLog);
                }
            }
        }