/* Copyright Dassault Systemes, 1999, 2018 */
package examples.development.applications.customwebtop;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;

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

import com.engineous.sdk.pse.JobInfoValue;
import com.engineous.sdk.pse.PSEException;
import com.engineous.sdk.pse.SysPSE;
import com.engineous.sdk.server.TomEEUtils;

/**
 * Servlet implementation class WebFiperServlet
 */
public class WebFiperServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public WebFiperServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String username = null;
		String password = null;
		
		if(request.getParameter("username") != null){
			username = request.getParameter("username");
			password = request.getParameter("password");
		}else if((String) request.getSession().getAttribute("username") != null){
			username = (String) request.getSession().getAttribute("username");
			password = (String) request.getSession().getAttribute("password");
		}
		
		if(username == null){
			response.sendRedirect("index.html");
		}else{
			try {
				request.getSession().setAttribute("username", username);
				request.getSession().setAttribute("password", password);
				
				TomEEUtils.addCredentials(username, password);

				response.setContentType ("text/html");
				PrintWriter out = response.getWriter();
				out.println("<h1 align=\"center\">Customized WebTop Example</h1>");

				out.println("<div align=\"right\"><a  align=\"center\" href=\""+ request.getContextPath()+ "/logout\">Logout</a></div>");

				out.println("<br><b>User:</b> " + username +"<br>");

				Iterator jobList = SysPSE.getPSE().getJobList(username).iterator();

				out.println("<br><table style=\"border: 1px solid black\" ><tr style=\"border: 1px solid black\"><th style=\"border: 1px solid black\">Job ID</th><th style=\"border: 1px solid black\">Model Name</th></tr> ");
				while (jobList .hasNext () ) 
				{
					out.print("<tr style=\"border: 1px solid black\">");
					JobInfoValue jobInfo = (JobInfoValue)jobList.next();
					out.print("<td style=\"border: 1px solid black\">" + jobInfo.getId() + "</td>");
					out.print("<td style=\"border: 1px solid black\">" + jobInfo.getModelName() + "</td>");
					out.print("</tr>");
				}
				out.print("</table>");

			} catch (PSEException e) {
				response.resetBuffer();
				PrintWriter out = response.getWriter();
				out.println("<br> Exception occured, see server logs for more details.");
				e.printStackTrace();
			} finally {
				TomEEUtils.clearCredentials();
			}
		}
	}

}
