terça-feira, 24 de maio de 2011

Tutorial sobre agendamento com o Quartz, backup do banco de dados e envio do banco/email

Olá pessoal, boa noite.

Depois de pesquisar um pouco sobre o agendamento de tarefas no Java, li sobre algumas API's e escolhi o Quartz pela flexibilidade na execução das tarefas e facilidade de implementação no projeto. Entretanto, a maioria dos exemplos e tutorias sobre esta API demonstra casos muito básicos e até inúteis, como demonstrar uma simples mensagem de aviso em um determinado intervalo de tempo, entre outros.
Por conta disto, decidi postar um exemplo bem prático que consiste no agendamento de um backup do banco de dados da aplicação Web em determinado horário e o envio de uma cópia desse backup por email usando a API do apache commons mail com o Gmail.

As linhas de código abaixo foram extraídas de exemplos de outros autores e adaptadas para a nossa situação.

Vou tentar demonstrar da forma mais simples possível:

Primeiro Passo: fazer o download dos arquivos .jar necessários.
Apache commons mail: http://linorg.usp.br/apache//commons/email/commons-email-current.jar
Quartz: http://d2zwv9pap9ylyd.cloudfront.net/quartz-1.8.3.tar.gz

Segundo Passo: vamos criar a classe com uma determinada tarefa. Em nosso caso, a tarefa será primeiramente o backup do banco de dados e em seguida a configuração do email para envio.

package teste.quartz.tarefa;

import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class Tarefa implements Job {

    public void execute(JobExecutionContext jec) throws JobExecutionException {
        File diretorio = new File("/home/viper/Documentos/bkpdb"); //defino o nome do diretório
        File bkp = new File("/home/viper/Documentos/bkpdb/bkp.sql"); //defino o nome do arquivo de bkp inicial

        if (!diretorio.isDirectory()) { //caso o diretorio nao tenha sido criado, utiliza-se a expressão abaixo para criá-lo
            new File("/home/viper/Documentos/bkpdb").mkdir();
        } else {

        }

        try {
            if (!bkp.isFile()) { //verifica-se se já existe arquivo de bkp criado, caso negativo, ele cria o arquivo de bkp inicial
                System.out.println("ainda nao existe bkp criado");
                Runtime
                        .getRuntime()
                        .exec(
                                "pg_dump -U usuario bancodedados -f /home/viper/Documentos/bkpdb/bkp.sql");
            } else {
                System.out.println("ja existe bkp criado");
                while (bkp.isFile()) { //caso já exista o arquivo acima, ele criará um arquivo com o nomedoarquivo+data+hora.sql. Dessa forma, um arquivo não
                                //sobrescreve o outro;

                    GregorianCalendar calendar = new GregorianCalendar(); //utiliza-se o GregorianCalendar para pegar a data/hora correta do sistema
                    int dia = calendar.get(Calendar.DAY_OF_MONTH);
                    int mes = calendar.get(Calendar.MONTH);
                    int ano = calendar.get(Calendar.YEAR);
                    int hora = calendar.get(Calendar.HOUR_OF_DAY);
                    int minuto = calendar.get(Calendar.MINUTE);
                    int segundo = calendar.get(Calendar.SECOND);
                    bkp = new File(
                            "/home/viper/Documentos/bkpdb/bkp"
                                    + dia + mes + ano + hora + minuto + segundo
                                    + ".sql"); //nome do arquivo de bkp criado com a data/hora atual
                    System.out
                            .println("Backup realizado com sucesso. Data atual: "
                                    + dia + "/" + mes + "/" + ano + "-" + hora + ":" + minuto + ":" + segundo);
                }

                Runtime.getRuntime()
                        .exec("pg_dump -U usuario bancodedados -f" + bkp); //executa o comando com o nome do arquivo de bkp acima

                File f = new File("");
                f = bkp; //pegamos aqui sempre o nome e o caminho do ultimo arquivo criado
                System.out.println("nome do arquivo/caminho: " + f);
                EmailAttachment attachment = new EmailAttachment(); //classe utilizada para criar anexos no email
                attachment.setPath(f.getPath()); //envia o caminho do arquivo
                attachment.setDisposition(EmailAttachment.ATTACHMENT);
                attachment.setDescription("File");
                attachment.setName(f.getName());

                try {

                    MultiPartEmail email = new MultiPartEmail(); //classe utilizada para permitir anexos no email
                    email.setDebug(true);
                    email.setHostName("smtp.gmail.com"); //servidor SMTP. Aqui usamos um do Gmail
                    email.setAuthentication("login_do_email", "senha"); // login e senha da conta Gmail
                    email.setSSL(true); //Autenticação de segurança SSL setada como True
                    email.addTo("seuemail@teste.com"); //nome do email que vai receber o bkp do banco de dados. Pode ser o seu para teste
                    email.setFrom("remetentedoemail"); //endereço de email do remetente
                    email.setSubject("Bkp Base de dados"); //assunto
                    email.setMsg("Segue em anexo base de dados"); //mensagem de texto

                    email.attach(attachment); //anexa o arquivo de bkp

                    email.send(); //envia o email
                } catch (EmailException e) { //exception caso aconteça algum erro ao enviar o email
                                        System.out.println("erro no envio: " + e.printStackTrace());
                                        e.printStackTrace()
                }

            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }
}

Terceiro Passo: criar a classe que irá executar a tarefa.

package teste.quartz.tarefa;

import java.io.IOException;
import java.util.GregorianCalendar;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;

public class ExecTarefa {

    static GregorianCalendar calendar = new GregorianCalendar();

        public static void main(String[] args) {

        Trigger trigger = TriggerUtils.makeDailyTrigger("Tarefa", hora, minuto); //aqui utilizamos o "makeDailyTrigger" que executa a tarefa determinada hora/minuto

        trigger.setName("Tarefa"); //setamos o nome da tarefa

        JobDetail jobDetail = new JobDetail("Tarefa", "Tarefa group",
                Tarefa.class); //definimos o JobDetail com o nome da tarefa, o grupo e a classe que contém a tarefa a ser executada

        Scheduler scheduler; //criamos o agendamento

        try {

            scheduler = new StdSchedulerFactory().getScheduler();

            scheduler.scheduleJob(jobDetail, trigger);

            scheduler.start(); //inicializando o agendamento da tarefa
            System.out.println("Agendando bkp e enviando por email");

        } catch (SchedulerException ex) {
            ex.printStackTrace(); //caso haja algum erro no agendamento, ele retorna uma exception
        }
    }

}

Pessoal, como eu disse antes, eu fiz meio que uma salada de códigos de outros autores para viabilizar esse exemplo. Espero que seja útil a quem está passando por uma dificuldade semelhante à que eu passei.

Abs e obrigado.

Créditos:
gabrielmassote - http://www.guj.com.br/java/104645-api-commons-mail---usando-gmail;
Camilo Lopes - http://blog.camilolopes.com.br/tag/mysql/;
Outros.

terça-feira, 25 de janeiro de 2011

USO DE TECNOLOGIAS NÃO-LETAIS NA INTERVENÇÃO POLICIAL: UMA PERSPECTIVA SEGUNDO A POLÍTICA NACIONAL


Kleber Cardoso dos Santos
Simone Fernandes dos Santos
Elizabeth Alencar Campos
Moreles Barbosa Rocha

Resumo: Este artigo tem por objetivo refletir sobre as políticas nacionais de uso de armas não-letais na intervenção policial. De acordo com documentos internacionais sobre o uso progressivo da força, os governos são encorajados a adotar e implementar as normas e regulamentos sobre o uso progressivo da força e tecnologias não-letais pelos encarregados de aplicação da lei. O tema invoca a multidisciplinaridade do conhecimento com enfoque no uso não-letal da força policial, sua permissão, produção e regulamentação. O estudo foi sistematizado em duas partes: a primeira contextualiza as normas internacionais sobre o uso progressivo da força e tecnologias não-letais; e na última parte serão abordadas as políticas nacionais viabilizadoras do uso progressivo da força e das tecnologias não-letais pelos operadores da lei.

Palavras-chave: intervenção policial, uso progressivo da força, tecnologia não-letal.
Abstract: This article has as objective contemplates on the national politics of use of no-lethal weapons in the intervention policeman. In agreement with international documents on the progressive use of the force, the governments are encouraged to adopt and to implement the norms and regulations on the progressive use of the force and no-lethal technologies for the person in charge of application of the law. The subject invokes the Integration of some areas of the knowledge with approach in the not-lethal use of the police force, its permission, production and regulation. The study was systematized in two parts: the first one introduces the international norms on the progressive use of the force and no-lethal technologies; and in the last part the national politics will be boarded that go to make possible the gradual use of the force and the not-lethal technologies for the operators of the Law.

Key-words: intervention policeman, progressive use of the force, no-lethal technology.


INTRODUÇÃO

O uso de tecnologias não-letais tem sido foco de estudos políticos em todo mundo. As recomendações feitas pela ONU referentes ao uso progressivo da força de acordo com os Direitos Humanos alteraram o rumo das políticas governamentais que regulam a abordagem policial. Algumas nações já regulamentaram em sua legislação a utilização de tecnologias não-letais pelos operadores da lei, dentro das etapas do uso progressivo da força, visando à preservação da vida.
Na Venezuela, de acordo com Briceño-Leon et al (1999), no ano de 1995 a Corregedoria da República recebeu denúncias de uma organização de defesa dos direitos humanos que neste mesmo ano, mais de cem homicídios foram cometidos por policiais. Em El Salvador, 64,8% das denúncias por atos ilegais ou arbitrários registradas pela Procuradoria de Direitos Humanos apontavam como responsáveis membros da Polícia Nacional Civil.
Conforme o mesmo autor, no Rio de Janeiro, também no ano de 1995, estimou-se mais de 300 mortos e de 200 feridos vítimas de ações policiais. No primeiro semestre de 1997, estimava-se que o número de mortos ultrapassou os 200. Segundo estatísticas do relatório da Anistia Internacional sobre o Brasil1, ainda no Rio de Janeiro, no período de janeiro a outubro de 2008, 15% das mortes violentas decorreram de ações policiais, em casos registrados como “autos de resistência”.
No ano de 2008, conforme o relatório da organização não governamental Humans Right Watch (HRW)2, 1.534 pessoas foram mortas por policiais nos estados do Rio de Janeiro e São Paulo, estimando para o Rio de Janeiro, um índice de 6,86 mortes para cada cem mil habitantes, enquanto que nos Estados Unidos e na África do Sul, os índices são de 0,12 e 0,96, respectivamente. Enquanto que os policiais de todo os Estados Unidos cometeram 371 homicídios no ano de 2008, os policiais do estado do Rio de Janeiro cometeram 1.137 homicídios no mesmo ano, três vezes o registrado em todo o estado norte-americano.
Essas estatísticas levaram o Governo Federal, através da Política Nacional de Segurança Pública a desenvolverem estratégias de redução de letalidade nas ações policiais. Essas estratégias foram amparadas por programas nacionais, investimentos, capacitação dos operadores, compra de equipamentos e ações de publicidade demonstrando a necessidade e eficácia da tecnologia não-letal.


AS NORMAS INTERNACIONAIS SOBRE O USO PROGRESSIVO DA FORÇA E TECNOLOGIAS NÃO-LETAIS
Contextualizando as normas internacionais sobre o uso progressivo da força e tecnologias pode-se dizer que existe dois Instrumentos Internacionais mais importantes sobre o Uso da Força e Arma de Fogo.
São eles:
  • Código de Conduta para Encarregados da Aplicação da Lei – CCEAL;
  • Princípios Básicos sobre o Uso da Força e Arma de Fogo – PBUFAF.

Código de Conduta para Encarregados da Aplicação da Lei – CCEAL
Este código foi adotado através da Resolução nº 34/169 da Assembléia Geral das Nações Unidas, em 17 de dezembro de 1979. É um instrumento internacional com objetivo de orientar os Estados Membros quanto à conduta dos policiais, e sensibilizar os integrantes das Organizações responsáveis pela Aplicação da Lei.
Esse código não tem força de tratado, mas busca criar padrões para que as práticas de aplicação da lei estejam de acordo com as disposições básicas dos direitos e liberdades humanas. É considerado um código de conduta ética e se baseia no exercício do policiamento ético e legal e consiste em oito artigos. São eles:
  1. Cumprir sempre o dever que a lei lhes impõe;
  2. Demonstrar respeito e proteção à dignidade humana, mantendo e defendendo os Direitos Humanos;
  3. Limitar o emprego da força;
  4. Tratar com informações confidenciais;
  5. Reiterar a proibição da tortura ou outro tratamento ou pena cruel, desumano ou degradante;
  6. Cuidar e Proteger a saúde das pessoas privadas de sua liberdade;
  7. Proibir o cometimento de qualquer ato de corrupção. Também devem opor-se e combater rigorosamente esses atos; e
  8. Respeito às Leis e ao CCEAL e convoca a prevenir e opor a quaisquer violações desses instrumentos.
O artigo 3º do CCEAL trata diretamente do uso da força pela polícia. Ele estipula que os encarregados da aplicação da lei, só podem empregar a força, quando estritamente necessário e na medida exigida para o cumprimento de seu dever.
É enfatizado pelo documento que o uso da força deve ser excepcional e nunca ultrapassar o nível razoável e necessário para se atingir os objetivos legítimos da aplicação da lei. Nesse sentido, entende-se que o uso da arma de fogo deve ser em casos extremos.

Os Princípios Básicos para o Uso da Força e Arma de Fogo – PBUFAF
Esses Princípios foram adotados no Oitavo Congresso das Nações Unidas sobre “Prevenção do Crime e Tratamento dos Infratores”, realizado em Havana, Cuba, de 27 de agosto a 7 de setembro de 1990. Também não é um tratado, porém, visa proporcionar, normas orientadoras aos Estados Membros, na tarefa de assegurar e promover o papel dos policiais.
Os princípios contidos neste documento devem ser considerados e respeitados pelos governos, no contexto da legislação e na prática Nacional, e levado ao conhecimento dos policiais, assim como de magistrados, promotores, advogados, membros do executivo, legislativo e do público em geral.
O preâmbulo dos PBUFAF reconhece a importância e complexidade do trabalho dos policiais, além de destacar seu papel de vital importância na proteção da vida, segurança e liberdade de todas as pessoas. Acrescenta que ênfase especial deve ser dada à eminência da manutenção da ordem pública e paz social, bem como da importância das qualificações, treinamento e conduta dos encarregados da aplicação da lei.
Os PBUFAF exigem que os governos e agências defensoras da lei assegurem que todos Encarregados da Lei recebam um treinamento profissional profundo e contínuo, só assim esses policiais estarão preparados para o Uso da Força.
Os dois instrumentos embora não estejam em forma de tratados, permitem o uso da força para qualquer propósito policial legitimo, reforçando o ponto de vista segundo o qual a atividade policial pode ser vista como uma maneira de resolver qualquer tipo de situação na sociedade na qual a força pode ser usada.
AS POLÍTICAS NACIONAIS VIABILIZADORAS DO USO PROGRESSIVO DA FORÇA E DAS TECNOLOGIAS NÃO-LETAIS PELOS OPERADORES DA LEI
O Ministério da Justiça lançou o Programa Nacional de Segurança com Cidadania (PRONASCI), que a partir de 2008, proporcionou a capacitação dos profissionais operadores da lei e o emprego de tecnologias não-letais, seguindo as recomendações da ONU constantes no PBUFAF, com o objetivo de garantir a integridade física dos cidadãos e dos próprios policiais. Os investimentos nessa capacitação chegaram a ultrapassar a casa dos R$ 3 milhões.
A segurança cidadã, considerada como um modelo que busca expandir o processo de articulação de todas as forças da sociedade e formas de governo no combate à criminalidade, possui em um de seus pilares o emprego de tecnologias não-letais para efetivar este combate, garantindo a integridade física dos cidadãos e do próprio policial. A utilização de armamentos não-letais já é recomendada pela SENASP. Dentre estes, estão as pistolas que paralisam o agressor sem causar danos à saúde.
Através de inúmeras ações, o Governo Federal tem firmado apoio com as instituições de segurança pública na implantação das políticas de uso progressivo da força e de tecnologias não-letais. Dentre essas ações, podemos citar como exemplo:
  • Batalhão Especial de Pronto Emprego (BEPE), parte integrante da Força Nacional de Segurança Pública, especializado para atuar em situações de grave crise, formado por 550 policiais de 11 estados, com o objetivo de disseminar tecnologia de ponta e conhecimento para grupos de operações especiais, com foco no respeito aos Direitos Humanos;
  • Curso de multiplicadores do uso progressivo da força, promovida pela Força Nacional de Segurança em parceria com o Ministério da Justiça, que visa capacitar os profissionais em segurança pública de todo o país em uso progressivo da força e emprego de técnicas e tecnologias não-letais, com o objetivo de reduzir a letalidade nas ações policiais;
  • Bolsa Formação, destinada à qualificação profissional dos operadores da lei, contribuindo em sua valorização e conseqüente benefício da sociedade brasileira. Segundo informações do sitio do PRONASCI, no dia 10 de março de 2008, em apenas dois dias, mais de 7.000 profissionais da segurança pública do Rio de Janeiro se inscreveram nesse projeto;
Essa crescente mudança de paradigmas também está refletindo no panorama legislativo. A Lei nº 5396/2009, aprovado pela Assembléia Legislativa do Estado do Rio de Janeiro ressalva que, o emprego prioritário das tecnologias não-letais não exclui o uso do armamento convencional, que deve ser utilizado como último recurso por parte do policial. O texto prevê, ainda, a capacitação dos policiais para o perfeito manuseio do equipamento não-letal. Desta forma, torna-se possível o estado criar uma política de segurança em que os agentes da lei sejam treinados e orientados de acordo com o conceito da utilização gradual da força.
O Ministério do Exercito através da portaria nº 20 de 27 de dezembro 2006, autoriza a aquisição, diretamente no fabricante, do armamento e munição não-letais, classificados como de uso restrito, para uso nas atividades de segurança privada, praticada por empresas especializadas ou por aquelas que possuem serviço orgânico de segurança.
Compete ao Departamento de Polícia Federal definir as dotações em armamento e munição não-letais, classificadas como de uso restrito, para cada empresa, e estabelecer as normas de utilização, armazenamento e destruição das munições com prazos de validade vencidos.
A legislação sobre armas e munições, lei nº 5/2006, no seu artigo 44º, dispõem que uso de Armas elétricas, aerossóis de defesa e outras armas de letalidade reduzida deve ser precedido de aviso explícito quanto à sua natureza e intenção da sua utilização, aplicando-se, com as devidas adaptações, as limitações definidas na referida lei, essas armas devem ser transportados em bolsa própria para o efeito, com o dispositivo de segurança acionado, e ser guardados no domicílio em local seguro.

CONSIDERAÇÕES FINAIS
O PRONASCI foi o programa que norteou o Brasil na aplicação de políticas públicas com cidadania, buscando a real proteção dos direitos humanos, seguindo as recomendações dos documentos da ONU sobre o uso progressivo da força e a utilização de técnicas e tecnologias não letais.
Atualmente, 23 estados já aderiram ao PRONASCI de acordo com informações do sitio3, são eles: Acre, Amapá, Alagoas, Amazonas, Bahia, Ceará, Espírito Santo, Goiás, Maranhão, Mato Grosso, Mato Grosso do Sul, Minas Gerais, Pará, Paraná, Pernambuco, Piauí, Rio de Janeiro, Rio Grande do Norte, Rio Grande do Sul, Rondônia, São Paulo, Sergipe e Tocantins.
O Governo Federal têm apoiado os Estados na efetivação dessas políticas, proporcionando capacitações aos aplicadores da lei, fornecendo investimentos, formulando projetos e programas que garantam segurança e cidadania à população e ao profissional da segurança pública. Essa mudança está acontecendo gradativamente, e necessita do apoio da população e dos profissionais da segurança pública. A expectativa é que, com esse novo paradigma, estatísticas de mortes causadas por policiais, como a do estado do Rio de Janeiro em relação ao ano de 2008 que obteve um índice três vezes maior que a dos Estados Unidos no mesmo período, tenha uma queda significativa.
O ultimo informe da Anistia Internacional sobre a situação dos direitos humanos no mundo destaca que a prática de tortura, a existência de maus-tratos, uso excessivo da força e execuções extrajudiciais cometidas por policiais ainda são constantes no Brasil.
Ainda há muito a se fazer. Os Estados brasileiros devem criar leis que efetivem o uso progressivo da força e a utilização de armas e tecnologias não-letais, a exemplo do estado do Rio de Janeiro, com o fim de firmar compromisso em reduzir o número de vítimas em ações policiais. Apesar do estado do Rio de Janeiro se destacar no que se refere à legislação sobre a utilização de tecnologias não-letais, as taxas de letalidade nas ações policiais continuam alarmantes, chegando a 1.048 mortes no ano de 2009, segundo dados do relatório do HRW4. Enquanto essa realidade permanecer inalterada, as capitais mais famosas do Brasil continuarão alvos constantes de pesquisas estatísticas e qualitativas sobre a violação dos direitos humanos pelos agentes aplicadores da lei.


REFERÊNCIAS
BRICEÑO-LEÓN, Roberto; CARNEIRO, Leandro Piquet; CRUZ, José Miguel. O apoio dos cidadãos à ação extrajudicial da polícia no Brasil, em El Salvador e na Venezuela. In: Cidadania, Justiça E Violência. Rio de Janeiro: Fundação Getúlio Vargas, 1999.
BRASIL. MINISTÉRIO DA JUSTIÇA. Perfil das Organizações de Segurança Pública no Brasil. Brasília: SENASP, 2006.

ROVER, C. Manual do Instrutor. Direitos Humanos e Direito Internacional Humanitário para Forças Policiais e de Segurança. Genebra: Comitê Internacional da Cruz Vermelha, 1998. Disponível em www.dhnet.org.br/manuais/dh/mundo/rover/c5.htm. Acesso em 05 de maio de 2010. 

Notas: 
1 Relatório da Anistia Internacional sobre o Brasil, obtido em http://ultimosegundo.ig.com.br/brasil/2009/05/28/veja+na+integra+
o+relatorio+da+anistia+internacional+sobre+o+brasil+6386941.html [capturado em 08 de junho de 2010]
2 Reportagem sobre a taxa de mortes causadas por policiais do RJ e SP obtido em http://www.correiobraziliense.com.br/app/
noticia182/2009/12/09/brasil,i=159812/TAXA+DE+MORTES+CAUSADAS+POR+POLICIAIS+DO+RJ+E+SP+E+SUPERIOR+A+DE+CORPORACOES+AGRESSIVAS+DE+OUTROS+PAISES.shtml [capturado em 08 de junho de 2010]
3 Quantitativo de Estados que aderiram ao PRONASCI, obtido em http://portal.mj.gov.br/pronasci/data/Pages
/MJF4F53AB1PTBRIE.htm [capturado em 09 de junho de 2010]
4 Notícia sobre o aumento de mortes causadas pela polícia no estado de São Paulo, obtido em http://ilanud.org.br/comunicacao
/noticias/aumenta-29-numero-de-mortes-causadas-pela-polecia-de-sao-paulo-em-abril/ [capturado em 09 de junho de 2010]