package mrPack.web;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

public class Logowanie extends HttpServlet {
    private ArrayList miasta = new ArrayList();

    private ArrayList rodzaje = new ArrayList();

    private ArrayList panstwa = new ArrayList();

    DataSource dataSource = null;

    public void init() throws ServletException {
        try {
            InitialContext ctx = new InitialContext();
            Context envContext = (Context) ctx.lookup("java:comp/env");
            dataSource = (DataSource) envContext.lookup("jdbc/myDerby");
        } catch (Exception exc) {
            throw new ServletException("Nie ustanowiono połaczenia z bazą", exc);
        }
    }

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

        String login = request.getParameter("user");
        String passwd = request.getParameter("password");
        String tak = "Witaj " + login + "!";
        String nie = "Logowanie nieudane";

        if (login.equals("admin") && passwd.equals("mpr")) {

            request.setAttribute("odpowiedz", tak);

            String query = "select distinct biuro.panstwo.namePanstwo, biuro.miasto.nameMiasto,"
                    + " biuro.rodzaj.nameRodzaj from biuro.miasto, biuro.panstwo, "
                    + "biuro.rodzaj, biuro.oferta where "
                    + "biuro.oferta.miasto = biuro.miasto.idMiasto and biuro.oferta.panstwo ="
                    + " biuro.panstwo.idPanstwo and biuro.oferta.rodzaj = biuro.rodzaj.idRodzaj";

            Connection con = null;
            Statement st = null;
            ResultSet rs = null;

            try {
                con = dataSource.getConnection();
                st = con.createStatement();
                rs = st.executeQuery(query);

                while (rs.next()) {
                    miasta.add(rs.getString("nameMiasto"));
                    panstwa.add(rs.getString("namePanstwo"));
                    rodzaje.add(rs.getString("nameRodzaj"));
                }

                request.setAttribute("miasta", miasta);
                request.setAttribute("panstwa", panstwa);
                request.setAttribute("rodzaje", rodzaje);

                rs.close();
                st.close();

            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (rs != null) {
                        rs.close();
                    }
                    if (st != null) {
                        st.close();
                    }
                    if (con != null) {
                        con.close();
                    }
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            }

            RequestDispatcher view = request.getRequestDispatcher("dodaj.jsp");
            view.forward(request, response);

            miasta.clear();
            panstwa.clear();
            rodzaje.clear();
        } else {
            request.setAttribute("odpowiedz", nie);
            RequestDispatcher view = request.getRequestDispatcher("brak.jsp");
            view.forward(request, response);
        }

    }

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