package eu.artemis.shield.overlay.securityagent.impl;


import java.awt.event.ActionEvent;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.osgi.framework.ServiceReference;

import eu.artemis.shield.discovery.gdm.interfaces.IGenericDiscovery;

public class DiscoveryServlet extends HttpServlet{
  private static final long serialVersionUID = 3472683797378538L;
                      //   DiscoveryServlet

  IGenericDiscovery GDM;

  ServiceReference httpSR;

  boolean print = false;

  public DiscoveryServlet(ServiceReference httpSR, IGenericDiscovery GDM) {
    this.httpSR = httpSR;
    this.GDM = GDM;
  }

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

    doGet(request, response);
  }

  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    PrintWriter out = response.getWriter();

    response.setContentType("text/html");

    printHeader(out);

    try {
      if (request.getParameter("GO"!= null
          && request.getParameter("GO").equals("GO")) {
        String VID = null;
        String type = "";
        String serviceType = "servicetype=";
        String languageTag = "language=";
        String gui = "gui=";
        if (request.getParameter("servicetype"!= null) {
          serviceType += request.getParameter("servicetype");
        }
        if (request.getParameter("languagetag"!= null) {
          languageTag += request.getParameter("languagetag");
          if (languageTag.equals("language=")) {
            out
                .println("<br><br><h4>You haven't specified the Language Tag, Default is \"en_GB\"</h4>");
          }
        }
        String[] keywords = new String[3];
        keywords[2null;
        if(!request.getParameter("gui").equals(""))
        {
          gui += request.getParameter("gui");
          keywords[2= gui;
        }
        keywords[0= serviceType;
        keywords[1= languageTag;

        LinkedList result = GDM.findServices(VID, type, keywords);
        // URL image =
        // ClassLoader.getSystemClassLoader().getResource("./provaIMG.jpg");
        if (result != null) {
          out
              .println("<h2> This is the URL list for OWL Description </h2>");
          out
              .println("<table style=\"border-collapse: collapse\" BORDERCOLORDARK = #9999CC BORDERCOLORLIGHT = #9999CC BORDER = 1 CELLPADDING = 5 CELLSPACING = 0>");

          for (int i = 0; i < result.size(); i++) {
            int j = i+1;
            out
                .println("\t<tr BORDERCOLOR = #0000FF BACKGROUND = #0000FF>");
            out
                .println("\t\t<td BGCOLOR = #9999CC BORDERCOLOR = #FFFFFF><p align = center><b>" + j + "</b></p></td>");
            out.println("\t\t<td BGCOLOR = #" "F0F0FF"
                " BORDERCOLOR = #FFFFFF>" "<a href=\""
                + result.get(i).toString() "\">"
                + result.get(i).toString() "</a></td>"
                "</tr>");

            /*
             * out.println("<table><tr><td><a href=\"" +
             * result.get(i).toString() + "\">" +
             * result.get(i).toString() + "</a></td>" + "<td></td></tr></table>");
             */
          }
          out.println("</table>");
        }
      }

    catch (Exception e) {
      out.println("<pre>");
      e.printStackTrace(out);
      out.println("</pre>");
    }
  }

  public void actionPerformed(ActionEvent evt) {
    print = true;
  }

  void printHeader(PrintWriter outthrows IOException {
    out.println("<html>");
    out.println("<head>");
    out.println("<title>pSHIELD - Security Agent</title>");
      out.println("<table><tr><td><img width=100 src=\"../serviceprovider/sapienza_logo.gif\"></td><td>");
      out.println("<h1>University of Rome - pSHIELD </h1>");
      out.println("<h1>User Agent</h1>");
    out.println("<h2>Service Discovery Form</h2>");
    out.println("</td></tr><table>");

    out
        .println("<LINK href=\"/knopflerfish.css\" rel=\"stylesheet\" type=\"text/css\">");
    out.println("</head>");
    out.println("<body>");
    out.println("<form method=\"POST\">");
    out
        .println("<strong>Insert keywords to perform service discovery and then click \"GO\"</strong><br><br>");
    out.println("<table>");
    out
        .println("<tr><td><font size=\"3\"><strong>ServiceType  </strong></font></td><td><input type=\"text\" name=\"servicetype\" value=\"\" size=\"50\" /></td></tr>");
    out
        .println("<tr><td><font size=\"3\"><strong>LanguageTag  </strong></font></td><td><input type=\"text\" name=\"languagetag\" value=\"\" size=\"50\" /></td></tr>");
    out
        .println("<tr><td><font size=\"3\"><strong>GUI  </strong></font></td><td><input type=\"text\" name=\"gui\" value=\"\" size=\"50\" /></td></tr>");
    out.println("</table>");
    out
        .println("<br><input type=submit value=\"GO\" name=\"GO\" id=\"GO\">");
  }
  
}