/* * Execute query against a list of sensors * * */ public static String executeQuery( String envelope, String query, String matchingSensors, String format) throws ParseException { // String matchingSensors = getListOfSensorsAsString(envelope); String reformattedQuery = reformatQuery(query, matchingSensors); StringBuilder sb = new StringBuilder(); Connection connection = null; try { connection = Main.getDefaultStorage().getConnection(); Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet results = statement.executeQuery(reformattedQuery); ResultSetMetaData metaData; // Additional information about the results int numCols, numRows; // How many rows and columns in the table metaData = results.getMetaData(); // Get metadata on them numCols = metaData.getColumnCount(); // How many columns? results.last(); // Move to last row numRows = results.getRow(); // How many rows? String s; // System.out.println("* Executing query *\n" + reformattedQuery + "\n***"); // headers // sb.append("# Query: " + query + NEWLINE); sb.append("# Query: " + reformattedQuery.replaceAll("\n", "\n# ") + NEWLINE); sb.append("# "); // System.out.println("ncols: " + numCols); // System.out.println("nrows: " + numRows); for (int col = 0; col < numCols; col++) { sb.append(metaData.getColumnLabel(col + 1)); if (col < numCols - 1) sb.append(SEPARATOR); } sb.append(NEWLINE); for (int row = 0; row < numRows; row++) { results.absolute(row + 1); // Go to the specified row for (int col = 0; col < numCols; col++) { Object o = results.getObject(col + 1); // Get value of the column // logger.warn(row + " , "+col+" : "+ o.toString()); if (o == null) s = "null"; else s = o.toString(); if (col < numCols - 1) sb.append(s).append(SEPARATOR); else sb.append(s); } sb.append(NEWLINE); } } catch (SQLException e) { sb.append("ERROR in execution of query: " + e.getMessage()); } finally { Main.getDefaultStorage().close(connection); } return sb.toString(); }
public boolean isValid(HttpServletRequest request, HttpServletResponse response) throws IOException { String vsName = request.getParameter("name"); // Added by Behnaz HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); if (vsName == null || vsName.trim().length() == 0) { response.sendError(WebConstants.MISSING_VSNAME_ERROR, "The virtual sensor name is missing"); return false; } VSensorConfig sensorConfig = Mappings.getVSensorConfig(vsName); if (sensorConfig == null) { response.sendError( WebConstants.ERROR_INVALID_VSNAME, "The specified virtual sensor doesn't exist."); return false; } // Added by Behnaz. if (user != null) // meaning, that a login session is active, otherwise we couldn't get there if (Main.getContainerConfig().isAcEnabled() == true) { if (user.hasReadAccessRight(vsName) == false && user.isAdmin() == false) // ACCESS_DENIED { response.sendError( WebConstants.ACCESS_DENIED, "Access denied to the specified virtual sensor ."); return false; } } return true; }