Programação Orientada a Objetos Implementação do analisador de logs do Servidor Web com base nos requisitos da unidade curricular de Estatística, de acordo com o roteiro abaixo: Recuperar o conteúdo do arquivo de log de acesso do servidor httpd Apache; Definir o caractere separador de campo (ex.: - ou ou ;); Criar uma classe do tipo POJO para armazenar os campos; Fazer o teste copiando uma linha do arquivo de log e armazenar em uma variável do tipo String; Desenvolva a lógica para fazer a separação dos campos necessários a classe do item 3; Desenvolver a lógica para fazer os cálculos estatísticos solicitados; Desenvolver a classe java Executável para ler o arquivo de acesso e mostrar as estatísticas. Exemplo do arquivo de log: Pre-imagem do projeto Código logo mais a baixo:
Source.java package org.aplicativo; import java.io.file; import java.io.filenotfoundexception; import java.io.filewriter; import java.io.ioexception; import java.text.decimalformat; import java.util.arraylist; import java.util.list; import java.util.scanner; import org.relatorio.relatorio; import org.manipulacao.arquivo; import static org.manipulacao.arquivo.data; import static org.manipulacao.arquivo.imprimir; import static org.manipulacao.arquivo.ip; import static org.manipulacao.arquivo.usuario; /** * * @author junio_000 */ public class Source{ public static void main(string[] args) throws IOException { int op; File arquivo; arquivo = new File("./src/projeto-access_log"); List<Relatorio> lista = Arquivo.leitor(arquivo); Relatorio novo; do{ op = menu(); switch(op){ case 1: if (lista.isempty()){ System.out.println("A lista está vazia"); else { imprimir(lista); case 2: if (lista.isempty()){ System.out.println("A lista está vazia"); else { ip(lista);
case 3: System.out.println("Lista vazia"); else { usuario(lista); case 4: if (lista.isempty()){ System.out.println("A lista está vázia"); else { data(lista); while (op!=0); if (!lista.isempty()){ Arquivo.escritor(lista,arquivo); public static int menu() { Scanner leia = new Scanner(System.in); int opcao; do{ System.out.println("Escolha uma das opções...:"); System.out.println("0- Para poder Sair"); System.out.println("1- Para imprimir dados importados"); System.out.println("2- Para imprimir a quantidade de acessos"); System.out.println("3- Para poder imprimir a quantidade de acessos de determinado usuário"); System.out.println("4- Para poder imprimir a quantidade de acessos de determinada data"); opcao = leia.nextint(); while (opcao < 0 opcao > 4); return opcao; Relatorio.java
package org.relatorio; /** * * @author junio_000 */ public class Relatorio { String ip, usuario, data,hora; public Relatorio(){ super(); public Relatorio(String ip,string usuario,string data,string hora ) { super(); this.ip = ip; this.usuario = usuario; this.data = data; this.hora = hora; public String getip() { return ip; public void setip(string ip){ this.ip = ip; public String getusuario(){ return usuario; public void setusuario(string usuario) { this.usuario = usuario; public String getdata(){ return data; public void setdata(string data){ this.data = data; public String gethora(){ return hora; public void sethora(string hora) { this.hora = hora; @Override public String tostring(){ return "Relatorio [ip=" + ip +", usuario=" + usuario + ", data" + data +", hora=" + hora + "]";
Arquivo.java package org.manipulacao; import java.io.file; import java.io.filenotfoundexception; import java.io.filewriter; import java.io.ioexception; import java.text.decimalformat; import java.util.arraylist; import java.util.scanner; import java.util.list; import org.relatorio.relatorio; /** * * @author junio_000 */ public class Arquivo { public static List<Relatorio> leitor(file arquivoorigem) { List<Relatorio> listadelog = new ArrayList<>(); List<Relatorio> listadelog = null; try{ Scanner scan = new Scanner(arquivoOrigem); while (scan.hasnext()) { Relatorio relatorio = new Relatorio(); String linhadoarquivo = scan.nextline(); String[] dadosdolog = linhadoarquivo.split(";"); relatorio.setip(dadosdolog[0]); relatorio.setusuario(dadosdolog[1]); relatorio.setdata(dadosdolog[2]); relatorio.sethora(dadosdolog[3]); listadelog.add(relatorio); catch (FileNotFoundException e) { System.out.println("Arquivo não encontrado"); return listadelog; public static void escritor(list<relatorio> lista, File arquivodestino){ FileWriter fw; try { fw = new FileWriter(arquivoDestino);
for (Relatorio lista1 : lista) { String linha = String.format("%s;%s;%s;%s\n", lista1.getip(), lista1.getusuario(), lista1.getdata(), lista1.gethora()); fw.write(linha); fw.flush(); catch (IOException e) { System.out.println("Houve um erro ao tentar gravar o Arquivo \nverifique se você possui permissão no diretório de gravação"); public static void imprimir(list<relatorio> lista){ for (int i= 0; i < lista.size(); i++){ System.out.println(true); public static void ip(list<relatorio>lista){ Scanner leia = new Scanner(System.in); System.out.println("Esta Lista se encontra vazia"); else{ int qtde = 0; String ipe; System.out.println("Número do IP:"); ipe = leia.next(); for (int i=0; i< lista.size(); i++){ if(lista.get(i) instanceof Relatorio){ Relatorio x = (Relatorio) lista.get(i); if(x.getip().equals(ipe)){ qtde++; DecimalFormat f = new DecimalFormat("0.00"); double qtde = 0; percent = (double) ((qtde*1.0)/lista.size())*100; System.out.println("A porcentagem de acessos pelo ip escolhido é de "+f.format(percent)+"%"); public static void usuario(list<relatorio>lista){ Scanner leia = new Scanner(System.in); System.out.println("ALista vazia "); /*else{ int qtde = 0 String user;
System.out.println("nome do Usuário:"): user = leia.nextline(); for (Relatorio lista1 : lista) { if (lista1 instanceof Relatorio) { Relatorio x = (Relatorio) lista1; if(x.getusuario().equals(user)){ qtde++; */ DecimalFormat f = new DecimalFormat("0.00"); double qtde = 0; double percent = (double) ((qtde*1.0)/lista.size())*100; System.out.println("A porcentagem de acessos pelo usuário escolhido é de "+f.format(percent)+"%"); public static void data(list<relatorio>lista){ Scanner leia = new Scanner(Syste.in); System.out.println("Lista está vazia"); else{ int qtde = 0; String date; System.out.println("Data: "); date = leia.next(); for (Relatorio lista1 : lista) { if (lista1 instanceof Relatorio) { Relatorio x = (Relatorio) lista1; if(x.getdata().equals(date)){ qtde++; DecimalFormat f =new DecimalFormat("0.00"); percent = (double) ((qtde*1.0)/lista.size())*100; System.out.println("A porcentagem de acessos pela data escolhida é de"+f.format(percent)+"%"); private static class Syste { private static Readable in; public Syste() {