package us.deans.parrot; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Map; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; import org.apache.log4j.Logger; public class TestAppController extends HttpServlet { private static final long serialVersionUID = 1L; private ParrotManager appConfig; private Logger logger = Logger.getLogger(this.getClass()); private DataSource ds1; private Connection dc1 = null; private Statement st1; private ResultSet rs1; private ArrayList dset = null; public TestAppController() { super(); } public void init(ServletConfig config) throws ServletException { super.init(config); logger.debug(">> initializing TestAppController (Parrot Pete saying 'Ello.')"); ServletContext ctx = null; String configFile = ""; // get configuration file through the servlet context. try { ctx = getServletContext(); configFile = ctx.getRealPath("/WEB-INF/parrot.properties"); } catch (Exception ex) { ex.printStackTrace(); } // get data source through the initial context. try { Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:comp/env"); ds1 = (DataSource)envContext.lookup("jdbc/CMS1-WP1"); } catch (NamingException e) { e.printStackTrace(); } appConfig = ParrotManager.getInstance(); appConfig.init(configFile); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String category = request.getParameter("job").trim(); switch (category) { case "list-bullet" : case "list-short" : case "list-long" : storylist(request, response, category); break; case "detail-bullet" : case "detail-short" : case "detail-long" : storyload(request, response); break; case "reshtml" : resumeload(request, response, category); break; case "resword" : case "respdf" : resumeload(request, response, category); break; case "checkwa" : checkapp(request, response); break; case "checkdb1" : checkdb(response); break; case "checkvars" : check_variables(response); break; } /* // check web application (if you get here then assume it's working and redirect to success page). if (request.getParameter("job").trim().equalsIgnoreCase("checkwa")) checkapp(request, response); // check database connection using JDNI if (request.getParameter("job").trim().equalsIgnoreCase("checkdb1")) checkdb(response); // check system variables if (request.getParameter("job").trim().equalsIgnoreCase("checkvars")) { check_variables(response); } */ } public void storylist(HttpServletRequest request, HttpServletResponse response, String category) { logger.debug(">> list of " + category + " stories."); try { dc1 = ds1.getConnection(); st1 = dc1.createStatement(); String SQL = ""; switch (category) { case "list-bullet" : SQL = appConfig.getSQL_ListBullets(); break; case "list-short" : SQL = appConfig.getSQL_ListShortStories(); break; case "list-long" : SQL = appConfig.getSQL_ListLongStories(); break; default : SQL = appConfig.getSQL_ListBullets(); break; } logger.debug("sql check >> " + SQL); rs1 = st1.executeQuery(SQL); dset = new ArrayList(); while (rs1.next()) { WpTitleRecord drec = new WpTitleRecord(); drec.setPostTitle(rs1.getString("post_title")); drec.setPostID(rs1.getInt("ID")); dset.add(drec); } rs1.close(); st1.close(); dc1.close(); } catch (SQLException e) { e.printStackTrace(); } request.setAttribute("stories", dset); logger.debug("got " + dset.size() + " records of data, redirecting to view now..."); RequestDispatcher dispatcher = request.getRequestDispatcher("views/short-stories.jsp"); try { dispatcher.forward(request, response); } catch (ServletException | IOException e) { logger.debug("dispatcher.forward - not working. See stack trace..."); e.printStackTrace(); } } public void storyload(HttpServletRequest request, HttpServletResponse response) { logger.debug(">> show short story."); String SQL = appConfig.getSQL_ViewStory(); // get parameter value from request object and translate to integer String strArg = request.getParameter("storyid").trim(); if (strArg.startsWith("'")) { strArg = strArg.substring(1, strArg.length() - 1); } Integer intArg = Integer.parseInt(strArg); logger.debug(SQL + " : " + intArg); WpContent drec = new WpContent(); try { dc1 = ds1.getConnection(); PreparedStatement ps1 = dc1.prepareStatement(SQL); ps1.setInt(1, intArg); rs1 = ps1.executeQuery(); while (rs1.next()) { drec.setPostTitle(rs1.getString("post_title")); drec.setPostContent(rs1.getString("post_content")); } rs1.close(); st1.close(); dc1.close(); } catch (SQLException ex) { ex.printStackTrace(); } request.setAttribute("short_story", drec); RequestDispatcher dispatcher = request.getRequestDispatcher("views/short-story.jsp"); try { dispatcher.forward(request, response); } catch (ServletException | IOException e) { logger.debug("dispatcher.forward - not working. See stack trace..."); e.printStackTrace(); } } public void resumeload(HttpServletRequest request, HttpServletResponse response, String category) { switch (category) { case "reshtml" : RequestDispatcher dispatcher = request.getRequestDispatcher("/Resume?jsp"); try { dispatcher.forward(request, response); } catch (ServletException | IOException e) { logger.debug("dispatcher.forward - not working. See stack trace..."); e.printStackTrace(); } break; case "resword" : break; case "respdf" : break; } logger.debug(">> loading resume..."); } // uses the response and request objects to redirect to a JSP page public void checkapp(HttpServletRequest request, HttpServletResponse response) { logger.debug(">> checking web app..."); // forward the request to the JSP RequestDispatcher dispatcher = request.getRequestDispatcher("/appcheck.html"); try { dispatcher.forward(request, response); } catch (ServletException | IOException e) { logger.debug("dispatcher.forward - not working. See stack trace..."); e.printStackTrace(); } logger.debug(">> app check complete."); } // uses the response object to print the result directly to the client. public void checkdb(HttpServletResponse response) throws IOException{ logger.debug(">> checking data source."); int x = 0; try { dc1 = ds1.getConnection(); st1 = dc1.createStatement(); logger.debug(">> got connection."); String sql = "SELECT COUNT(*) AS COUNT FROM wp_posts"; rs1 = st1.executeQuery(sql); while(rs1.next()) { x = rs1.getInt("Count"); } st1.close(); dc1.close(); } catch (SQLException e) { e.printStackTrace(); } logger.debug(">> data source check complete."); // streams the answer directly to the client. response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(x + " post records in database..."); } // uses the response object to print the result directly to the client. private void check_variables(HttpServletResponse response) { logger.debug(">> checking variables..."); // streams the answer directly to the client. response.setContentType("text/html"); PrintWriter out; try { out = response.getWriter(); out.println("Variables..."); Map variables = System.getenv(); for ( Map.Entry entry : variables.entrySet()) { String name = entry.getKey(); String value = entry.getValue(); out.println(name + " : " + value + "
"); } } catch (IOException e) { e.printStackTrace(); } logger.debug(">> variable check complete."); } // out public void short_storylist(HttpServletRequest request, HttpServletResponse response) { logger.debug(">> list of short stories."); try { dc1 = ds1.getConnection(); st1 = dc1.createStatement(); logger.debug("sql check >> " + appConfig.getSQL_ListShortStories()); String SQL = appConfig.getSQL_ListShortStories(); rs1 = st1.executeQuery(SQL); dset = new ArrayList(); while (rs1.next()) { WpTitleRecord drec = new WpTitleRecord(); drec.setPostTitle(rs1.getString("post_title")); drec.setPostID(rs1.getInt("ID")); dset.add(drec); } rs1.close(); st1.close(); dc1.close(); } catch (SQLException e) { e.printStackTrace(); } request.setAttribute("stories", dset); logger.debug("got " + dset.size() + " records of data, redirecting to view now..."); RequestDispatcher dispatcher = request.getRequestDispatcher("views/short-stories.jsp"); try { dispatcher.forward(request, response); } catch (ServletException | IOException e) { logger.debug("dispatcher.forward - not working. See stack trace..."); e.printStackTrace(); } } }