
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.net.*;

import javax.naming.Context;
import javax.naming.InitialContext;

import java.sql.Connection;
import java.sql.Types;
import java.sql.Statement;
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.OracleCallableStatement;
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.driver.*;
import oracle.jdbc.pool.*;
import java.util.Hashtable;
import java.math.BigDecimal;


//import EJB Tester from JBoss
//import br.com.webraska.tracking.group.ejb.*;

public class GroupServlet extends HttpServlet {

    public void init(ServletConfig config) throws ServletException {
      super.init(config);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

      PrintWriter out = response.getWriter();
        try {

            String msg = request.getParameter("msg") == null ? "" : request.getParameter("msg");

            Hashtable h = new Hashtable();
            h.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
            h.put("java.naming.provider.url","localhost:1099");
            h.put("java.naming.factory.url.pkgs","org.jboss.naming");

            javax.naming.Context ctx = new InitialContext(h);
            org.jboss.pool.jdbc.JDBCPoolDataSource cpds = (org.jboss.pool.jdbc.JDBCPoolDataSource)ctx.lookup("java:/OracleDS");
            java.sql.Connection connection = cpds.getConnection();

            OracleCallableStatement procinout = null;
            long tracking = 1693880304l;
            procinout = (OracleCallableStatement)connection.prepareCall ("begin PKG_RASTREAMENTO.BUSCA_ULT_RASTR_VETOR_XY (?, ?, ?, ?, ?, ?, ?, ?); end;");
            procinout.setLong(1, tracking);//tracking_id
            procinout.registerOutParameter (2, Types.INTEGER); // arraysize
            int elemMaxLen = 100;
            int maxLen = 2000;
            int elemSqlType = Types.INTEGER;
            /*ATENÇÃO PEPE, MUDEI A LINHA ABAIXO PQ MUDOU A TABELA AQUI DENTRO.*/
            procinout.registerIndexTableOutParameter (3, maxLen, Types.VARCHAR, elemMaxLen); //aVeiculoID ANUMBER10
            procinout.registerIndexTableOutParameter (4, maxLen, Types.VARCHAR, elemMaxLen); //aDescr AVARCHAR100
            procinout.registerIndexTableOutParameter (5, maxLen, Types.VARCHAR, elemMaxLen); //aPlaca AVARCHAR10
            procinout.registerIndexTableOutParameter (6, maxLen, Types.VARCHAR, elemMaxLen); //aDataPosicao AVARCHAR10
            procinout.registerIndexTableOutParameter (7, maxLen, Types.FLOAT, elemMaxLen); //aLong (X) AFLOAT12_6
            procinout.registerIndexTableOutParameter (8, maxLen, Types.FLOAT, elemMaxLen); //aLat (Y) AFLOAT12_6
            procinout.execute();

            String[] aVehicleID = (String[]) procinout.getPlsqlIndexTable(3);
            BigDecimal[] aLong = (BigDecimal[])procinout.getPlsqlIndexTable(7);
            BigDecimal[] aLat = (BigDecimal[])procinout.getPlsqlIndexTable(8);
            procinout.close();
            connection.close();

            for(int i = 0; i < aVehicleID.length; i++)
            {
               System.out.println(i+1 + " Lat:" + aVehicleID[i] + " Long:" + aLat[i].doubleValue()  + " VehicleID:" + aLong[i].doubleValue());
               out.println(i+1 + " Lat:" + aVehicleID[i] + " Long:" + aLat[i].doubleValue()  + " VehicleID:" + aLong[i].doubleValue());
            }

            /*
            InitialContext ic = new InitialContext(h);
            Object o = ic.lookup("test/Tester");
            HelloHome home = (HelloHome)
                javax.rmi.PortableRemoteObject.narrow (o, HelloHome.class);

            Hello test = home.create();
            */
            //System.out.println( test.returnMessage( msg ) );
            //out.println(test.returnMessage( msg ));

        } catch ( Exception e ) {
            e.printStackTrace();
        }//end try/catch


    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        doGet(request,response);
    }


}

