br.org.acessobrasil.nucleuSilva.util.ObterPaginaLocal.java Source code

Java tutorial

Introduction

Here is the source code for br.org.acessobrasil.nucleuSilva.util.ObterPaginaLocal.java

Source

/*******************************************************************************
 * Copyright 2005, 2006, 2007, 2008 Acessibilidade Brasil
 * Este arquivo  parte do programa ASES - Avaliador e Simulador para AcessibilidadE de Stios
 * O ASES  um software livre; voc pode redistribui-lo e/ou modifica-lo dentro dos termos da Licena Pblica Geral GNU como
 * publicada pela Fundao do Software Livre (FSF); na verso 2 da Licena, ou (na sua opnio) qualquer verso posterior.
 * Este programa  distribuido na esperana que possa ser  util, mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAO a qualquer  MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica Geral GNU para maiores detalhes.
 * Voc deve ter recebido uma cpia da Licena Pblica Geral GNU, sob o ttulo "LICENCA.txt", junto com este programa, se no, escreva para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *******************************************************************************/

/*******************************************************************************
 * Copyright (c) 2005, 2006, 2007 Acessibilidade Brasil.
 * 
 * This file is part of ASES.
 *
 * ASES is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 * A copy of the license can be found at 
 * http://www.gnu.org/copyleft/lesser.txt.
 *******************************************************************************/

package br.org.acessobrasil.nucleuSilva.util;

import static br.org.acessobrasil.silvinha.entidade.NomeArquivoOuDiretorioLocal.nomeArquivoOuDiretorio;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.URL;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.log4j.Logger;

import br.org.acessobrasil.silvinha.entidade.RelatorioDaUrl;

/**
 * Classe responsvel pela captura do contedo de uma pgina local
 * @author Renato Tomaz Nati
 * Criado em 11/1/2007 
 */
public final class ObterPaginaLocal {

    private static Logger log = Logger.getLogger("br.org.acessobrasil.silvinha");

    /**
     * Construtor de PegarPaginaWEB.
     */
    public ObterPaginaLocal(String nomeArquivo) {

    }

    /**
     * Mtodo que extrai o contedo de uma pgina.
     * @param url URL da pgina a ter seu contedo extrado.
     * @return Contedo de uma pgina.
     * @throws IOException Erro ao conectar a pgina.
     * @deprecated Utilize o mtodo getContent().
     */
    public static StringBuilder pegar(final URL url) throws IOException {
        //JOptionPane.showMessageDialog(null,"oi1");
        StringBuilder buf = new StringBuilder();
        File file = new File(nomeArquivoOuDiretorio);
        FileReader reader = new FileReader(file);
        BufferedReader leitor = new BufferedReader(reader);

        while (leitor.ready()) {
            buf.append(leitor.readLine() + "\n");
        }

        leitor.close();
        //JOptionPane.showMessageDialog(null,"oi2");
        return buf;
    }

    /**
     * Mtodo que extra o contedo de uma pgina web.
     * @param relatorio Pgina que vai ser pesquisada.
     * @throws IOException Erro ao tentar extrair o contedo da pgina html.
     */
    public void getContent(final RelatorioDaUrl relatorio) {
        final int mb = 1024;

        try {
            StringBuilder sbd = null;
            sbd = new StringBuilder();
            FileInputStream fis = null;
            ObjectInputStream ois = null;
            try {
                //JOptionPane.showMessageDialog(null,"arq = " + relatorio.getUrl()); 
                File file = new File(relatorio.getUrl());
                // JOptionPane.showMessageDialog(null,"fileexist");
                if (file.exists()) {

                    fis = new FileInputStream(file);

                    byte[] dados = new byte[mb];
                    int bytesLidos = 0;

                    while ((bytesLidos = fis.read(dados)) > 0) {
                        sbd.append(new String(dados, 0, bytesLidos));
                    }

                    fis.close();
                }

            } catch (Exception e) {
                log.error(e);
            }

            finally {
                if (fis != null) {
                    try {
                        fis.close();
                    } catch (Exception e) {
                    }
                }
                if (ois != null) {
                    try {
                        ois.close();
                    } catch (Exception e) {
                    }
                }
            }

            if (sbd != null) {

                relatorio.setConteudo(sbd);
            }
        } catch (Exception e) {

            log.error(e.getMessage(), e);
        }

    }

    /**
     * Mtodo que retorna o Content-type de uma pgina web.
     * @param metodo Uma instncia de org.apache.commons.httpclient.HttpMethod
     * inicializada pela pgina.
     * @return O Content-Type da pgina pesquisada.
     */
    private static String getContentType(final HttpMethod metodo) {
        String type = "";
        Header header = metodo.getResponseHeader("Content-Type");
        if (header != null) {
            type = header.getValue();
        }
        return type;
    }
}