conexiones.HTMLData.java Source code

Java tutorial

Introduction

Here is the source code for conexiones.HTMLData.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package conexiones;

import Clases.Estados;
import Clases.Expediente;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

/**
 *
 * @author martin
 */
public class HTMLData {

    public static final int EXP_ENCONTRADO = 0;
    public static final int EXP_NO_ENCONTRADO = 1;
    public static final int ERROR_PAGINA = 2;
    public static final int SEGURIDAD = 1;
    public static final int SALUD = 2;
    public static final int CONTADURIA = 3;
    public static final int TESORERIA = 4;
    private static final String URL_SEGURIDAD = "http://sistemas.gba.gov.ar/consulta/expedientes/movimientos.php";
    private static final String URL_SALUD = "https://sistemas.ms.gba.gov.ar/expeconsulta/consulta_movimientos.php";
    private static final String URL_SALUD_TABLA = "https://sistemas.ms.gba.gov.ar/expeconsulta/tabla_movimientos.php";
    private static final String URL_CONTADURIA = "http://www.cgp.gba.gov.ar/Expedientes/Default.aspx";
    private static final String URL_TESORERIA = "http://www.tesoreria.gba.gov.ar/expedientes/resultado2.php";
    private static Map<String, String> params;

    public static int fetchData(Expediente exp, int pagina, Estados est) {
        switch (pagina) {
        case 1:
            return dataSeguridad(exp, est);
        case 2:
            return dataSalud(exp, est);
        case 3:
            return dataContaduria(exp, est);
        case 4:
            return dataTesoreria(exp, est);
        default:
            return -1;
        }
    }

    public static boolean checkPages() {
        try {
            params = new HashMap();
            params.put("caract", "1");
            params.put("nroexp", "1");
            params.put("anioexp", "14");
            params.put("alcance", "1");
            params.put("nrocuerpo", "1");
            params.put("ente", "1");
            params.put("nro", "1");
            params.put("anio", "14");
            params.put("alcance", "1");
            params.put("fue_migrado", "1");
            params.put("car", "1");
            params.put("alcance", "1");
            Jsoup.connect(URL_SEGURIDAD).timeout(20000).data(params).post();
            Document doc2 = Jsoup.connect(URL_SALUD).timeout(20000).data(params).post();
            //System.out.println(doc2);
            try {
                String str = doc2.getElementById("formu").getElementsByClass("error").get(0).text();
                if (str.contains("Por el momento no puede mostrarse"))
                    return false;
            } catch (Exception exception) {
            }
            Jsoup.connect(URL_SALUD_TABLA).timeout(20000).data(params).get();
            Jsoup.connect(URL_CONTADURIA).timeout(20000).post();
            Jsoup.connect(URL_TESORERIA).timeout(20000).data(params).post();
            return true;
        } catch (Exception exception) {
            return false;
        }
    }

    private static int dataSeguridad(Expediente exp, Estados estado) {
        try {
            params = new HashMap();
            params.put("caract", exp.getCaratula());
            params.put("nroexp", exp.getNumero());
            params.put("anioexp", exp.getAnio());
            params.put("alcance", exp.getAlcance());
            params.put("nrocuerpo", "1");
            Document doc = Jsoup.connect(URL_SEGURIDAD).timeout(20000).data(params).post();
            Elements data = doc.getElementById("t_movimientos").getElementsByTag("tbody").get(1)
                    .getElementsByTag("tr");
            data = data.get(data.size() - 1).getAllElements();
            StringTokenizer st = new StringTokenizer(data.get(3).text());
            estado.setFechaE(st.nextToken());
            estado.setFechaSal(estado.getFechaE());
            estado.setEstado(data.get(4).text());
            if (data.size() > 5) {
                st = new StringTokenizer(data.get(5).text());
                estado.setFechaR(st.nextToken());
            }
            estado.setPagina("Seguridad");
            return EXP_ENCONTRADO;
        } catch (UnknownHostException exception) {
            System.out.println(exception);
            return ERROR_PAGINA; //No es posible acceder a la pagina
        } catch (Exception exception) {
            System.out.println(exception);
            return EXP_NO_ENCONTRADO; //No se encontro el expediente
        }

    }

    private static int dataSalud(Expediente exp, Estados estado) {
        params = new HashMap();
        params.put("ente", exp.getCaratula());
        params.put("nro", exp.getNumero());
        params.put("anio", exp.getAnio());
        params.put("alcance", exp.getAlcance());
        params.put("fue_migrado", "1");
        try {
            Document doc = Jsoup.connect(URL_SALUD).timeout(20000).data(params).post();
            Elements data = doc.getElementById("formu").getElementsByTag("table").get(1)
                    .getElementsByClass("tabla2");
            StringTokenizer st;
            String type;
            for (Element aux : data) {
                st = new StringTokenizer(aux.text(), ":");
                type = st.nextToken();
                if (type.equals("Facturas")) {
                    estado.setFactura(st.nextToken().substring(1));
                }
            }
            doc = Jsoup.connect(URL_SALUD_TABLA).data(params).timeout(20000).get();
            data = doc.getElementsByTag("table").get(0).getElementsByClass("columnaimpar");
            data = data.get(data.size() - 1).getAllElements();
            estado.setFechaR(data.get(3).text());
            estado.setFechaE(data.get(2).text());
            estado.setFechaSal(estado.getFechaE());
            estado.setEstado(data.get(5).text());
            estado.setPagina("Salud");
            return EXP_ENCONTRADO;
        } catch (UnknownHostException exception) {
            return ERROR_PAGINA; //No es posible acceder a la pagina
        } catch (Exception exception) {
            try {
                Document doc2 = Jsoup.connect(URL_SALUD_TABLA).timeout(20000).data(params).post();
                String aux = doc2.toString();
                //System.out.println(aux);
                if (aux.contains("El expediente buscado no posee movimientos"))
                    return EXP_NO_ENCONTRADO;
                if (aux.contains("El expediente no existe"))
                    return EXP_NO_ENCONTRADO; //No es posible acceder a la pagina
                else
                    return ERROR_PAGINA; //No se encontro el expediente
            } catch (Exception ex) {
                return ERROR_PAGINA; //No se encontro el expediente
            }
        }

    }

    private static int dataContaduria(Expediente exp, Estados estado) {
        WebDriver driver = new HtmlUnitDriver();
        try {
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            driver.get(URL_CONTADURIA);
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_tbCaratula")).clear();
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_tbCaratula")).sendKeys(exp.getCaratula());
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_tbNumero")).clear();
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_tbNumero")).sendKeys(exp.getNumero());
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_tbAnio")).clear();
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_tbAnio")).sendKeys(exp.getAnio());
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_tbAlcance")).clear();
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_tbAlcance")).sendKeys(exp.getAlcance());
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_btnConsultar")).submit();
            driver.manage().timeouts().implicitlyWait(100, TimeUnit.NANOSECONDS);
            try {
                estado.setEstado(driver.findElement(By.id("lblJur")).getText());
                estado.setFechaCon(driver.findElement(By.id("lblEgreFecha")).getText());
                estado.setFechaE(estado.getFechaCon());
                estado.setPagina("");
                return EXP_ENCONTRADO;
            } catch (NoSuchElementException e) {
                try { //el expediente esta en contaduria.
                    estado.setEstado(
                            driver.findElement(By.id("ctl00_ContentPlaceHolder1_lblOficinaActual")).getText());
                    estado.setFechaR(
                            driver.findElement(By.id("ctl00_ContentPlaceHolder1_lblFechaIngreso")).getText());
                    estado.setPagina("Contaduria");
                    return EXP_ENCONTRADO;
                } catch (NoSuchElementException ex) {
                    return EXP_NO_ENCONTRADO; //No se encontro el expediente
                }
            }
        } catch (Exception ex) {
            return ERROR_PAGINA; //No es posible acceder a la pagina
        } finally {
            driver.quit();
        }
    }

    private static int dataTesoreria(Expediente exp, Estados estado) {
        try {
            params = new HashMap();
            params.put("car", exp.getCaratula());
            params.put("nro", exp.getNumero());
            params.put("anio", exp.getAnio().substring(2));
            params.put("alcance", exp.getAlcance());
            Document doc = Jsoup.connect(URL_TESORERIA).timeout(20000).data(params).post();
            String data = doc.getElementsByClass("conteiner-resultado2").get(0).text();
            if ((!data.contains("El Expediente no se encuentra")) && (data.indexOf("Expediente ") != -1)) {
                estado.setEstado(data.substring(data.indexOf("Expediente ")));
                estado.setPagina("Tesoreria");
                return EXP_ENCONTRADO;
            } else {
                return EXP_NO_ENCONTRADO;
            }
        } catch (UnknownHostException exception) {
            return ERROR_PAGINA; //No es posible acceder a la pagina
        } catch (Exception exception) {
            return EXP_NO_ENCONTRADO; //No se encontro el expediente
        }

    }
}