/** * Copyright (c) 2011-2014, OpenIoT * * This file is part of OpenIoT. * * OpenIoT is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, version 3 of the License. * * OpenIoT is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with OpenIoT. If not, see <http://www.gnu.org/licenses/>. * * Contact: OpenIoT mailto: info@openiot.eu * @author Behnaz Bostanipour * @author Timotee Maret */ package org.openiot.gsn.http.ac; import org.apache.log4j.Logger; import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.IOException; import java.io.PrintWriter; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; /** * Created by IntelliJ IDEA. * User: Behnaz Bostanipour * Date: May 15, 2010 * Time: 1:27:13 PM * To change this template use File | Settings | File Templates. */ public class MyGroupHtmlResultSetServlet extends HttpServlet { private static transient Logger logger = Logger.getLogger( MyGroupHtmlResultSetServlet.class ); /****************************************** Servlet Methods*******************************************/ /******************************************************************************************************/ public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); ConnectToDB ctdb = null; // Get the session HttpSession session = req.getSession(); ParameterSet pm = new ParameterSet(req); if(pm.valueForName("groupname")==null) { res.sendRedirect("/"); } else { if(pm.valueForName("groupname").equals("")) { res.sendRedirect("/"); } else { try { this.setSessionPrintWriter(req,out); ctdb = new ConnectToDB(); this.printHeader(out,pm.valueForName("groupname")); this.printLayoutMastHead(out,pm.valueForName("groupname")); this.printLayoutContent(out); ResultSet resultset=ctdb.selectTwoColumnsUnderOneCondition(new Column("DATASOURCENAME"),new Column("DATASOURCETYPE"), "ACGROUP_ACDATASOURCE",new Column("GROUPNAME",pm.valueForName("groupname"))); out.println("<br>"); out.println(this.resultSetToString(resultset)); out.println("<br>"); } catch(Exception e) { out.println("<p><b>Can not display group content!</b></p>"); logger.error("ERROR IN doPost"); logger.error(e.getMessage(),e); } finally { if(ctdb!=null) { ctdb.closeStatement(); ctdb.closeConnection(); } } this.printLayoutFooter(out); } } } public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException { this.doPost(req,res); } /****************************************** HTML Printing Methods*******************************************/ /***********************************************************************************************************/ private void printHeader(PrintWriter out, String groupName) { out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>"+ groupName +" Structure</TITLE>"); out.println(" <link rel=\"stylesheet\" media=\"screen\" type=\"text/css\" href=\"/style/acstyle.css\"/>"); //printStyle(out); out.println("</HEAD>"); out.println("<body>"); out.println("<div id=\"container\">"); out.println("<div class=box>"); } private void printLayoutMastHead(PrintWriter out, String groupName) { out.println("<div id=\"masthead\">"); out.println("<div class=\"image_float\"><img src=\"/style/gsn-mark.png\" alt=\"GSN logo\" /></div><br>"); out.println("<h1>"+ groupName +" Structure</h1>"); out.println("<div class=\"spacer\"></div>"); out.println("</div>"); out.println("<div id=\"mastheadborder\">"); this.printLinks(out); out.println("<br><br>"); out.println("</div>"); } private void printLayoutContent(PrintWriter out) { out.println("<div id=\"content\">"); } private void printLinks(PrintWriter out) { out.println("<a class=linkclass href=\"/\">GSN home</a>"); } private void printLayoutFooter(PrintWriter out) { out.println("</div>");//content out.println("<div id=\"footer\">"); out.println(" <p align=\"center\"><FONT COLOR=\"#000000\"/>Powered by <a class=\"nonedecolink\" href=\"http://globalsn.sourceforge.net/\">GSN</a>, Distributed Information Systems Lab, EPFL 2010</p>"); out.println("</div>");//footer out.println("</div>");//box out.println("</div>");//container out.println("</body>"); out.println("</html>"); out.println("<BR>"); //out.println("<HR>"); } /****************************************** AC related Methods*****************************************************/ /******************************************************************************************************************/ private String resultSetToString(ResultSet resultset)// can be called at most once { StringBuffer out = new StringBuffer(); // Start a table to display the result set out.append("<TABLE>\n"); try { ResultSetMetaData rsmd = resultset.getMetaData(); int numcols = rsmd.getColumnCount(); // Title the table with the result set's column labels out.append("<TR>"); for (int i = 1; i <= numcols; i++) { if(rsmd.getColumnLabel(i).equals("DATASOURCENAME")) { out.append("<TH>" + "virtual sensor name"); } else if(rsmd.getColumnLabel(i).equals("DATASOURCETYPE")) { out.append("<TH>" + "access right"); } else { out.append("<TH>" + rsmd.getColumnLabel(i)); } } out.append("</TR>\n"); while(resultset.next()) { out.append("<TR>"); // start a new row for (int i = 1; i <= numcols; i++) { out.append("<TD>"); // start a new data element Object obj = resultset.getObject(i); if (obj != null) { if(obj.toString().equals("1")) { out.append("read"); } else if(obj.toString().equals("2")) { out.append("write"); } else if(obj.toString().equals("3")) { out.append("read/write"); } else //!! do not call a virtual sensor by number { out.append(obj.toString()); } } else out.append(" "); } out.append("</TR>\n"); } // End the table out.append("</TABLE>\n"); } catch (SQLException e) { out.append("</TABLE><H1>ERROR:</H1> " + e.getMessage() + "\n"); } return out.toString(); } /****************************************** Client Session related Methods*******************************************/ /********************************************************************************************************************/ private void setSessionPrintWriter(HttpServletRequest req,PrintWriter out) { req.getSession().setAttribute("out",out); } }