Esempio n. 1
0
 protected Locale getLocale(HttpServletRequest request) {
   String locid = request.getParameter(P_LOCALE_ID);
   if (locid == null || locid.length() == 0) {
     return request.getLocale();
   }
   StringTokenizer tokenizer = new StringTokenizer(locid, "_-");
   String language = String.valueOf(tokenizer.nextToken()).toLowerCase();
   String country = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null;
   if (country != null) {
     return new Locale(language, country.toUpperCase());
   }
   return new Locale(language);
 }
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {
    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings", request.getLocale());
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    out.println("<html>");
    out.println("<head>");

    String title = rb.getString("helloworld.title");

    out.println("<title>" + title + "</title>");
    out.println("</head>");
    out.println("<body bgcolor=\"white\">");

    // note that all links are created to be relative. this
    // ensures that we can move the web application that this
    // servlet belongs to to a different place in the url
    // tree and not have any harmful side effects.

    // XXX
    // making these absolute till we work out the
    // addition of a PathInfo issue

    out.println("<a href=\"../helloworld.html\">");
    out.println(
        "<img src=\"../images/code.gif\" height=24 "
            + "width=24 align=right border=0 alt=\"view code\"></a>");
    out.println("<a href=\"../index.html\">");
    out.println(
        "<img src=\"../images/return.gif\" height=24 "
            + "width=24 align=right border=0 alt=\"return\"></a>");
    out.println("<h1>" + title + "</h1>");
    out.println("</body>");
    out.println("</html>");
  }
 public Locale getLocale() {
   return request.getLocale();
 }
Esempio n. 4
0
  /**
   * Get Query By Form results throught response output stream.
   *
   * @param queryspec Name of XML file containing the Query Specification
   * @param columnlist List of comma separated column names to retrieve
   * @param where SQL WHERE clause to apply
   * @param order by SQL ORDER BY clause to apply
   * @param showas Output format. One of { "CSV" <i>(comma separated)</i>, "TSV" <i>(tabbed
   *     separated)</i>, "XLS" <i>(Excel)</i> }
   * @throws IOException
   * @throws FileNotFoundException
   * @throws ServletException
   */
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException, FileNotFoundException, ServletException {
    Class oDriver;
    Connection oConn = null;
    ServletOutputStream oOut = response.getOutputStream();
    QueryByForm oQBF;
    String sQuerySpec;
    String sColumnList;
    String sWhere;
    String sOrderBy;
    String sShowAs;
    String sStorage;

    if (DebugFile.trace) {
      DebugFile.writeln("Begin HttpQueryServlet.doGet(...)");
      DebugFile.incIdent();
    }

    sStorage = Environment.getProfileVar("hipergate", "storage");

    if (DebugFile.trace) DebugFile.writeln("storage=" + sStorage);

    try {
      oDriver = Class.forName(jdbcDriverClassName);
    } catch (ClassNotFoundException ignore) {
      oDriver = null;
      if (DebugFile.trace)
        DebugFile.writeln("Class.forName(" + jdbcDriverClassName + ") : " + ignore.getMessage());
      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Database driver not found");
    }

    if (null == oDriver) return;

    try {

      sQuerySpec = request.getParameter("queryspec");
      sColumnList = request.getParameter("columnlist");
      if (null == sColumnList) sColumnList = "*";
      sWhere = request.getParameter("where");
      if (null == sWhere) sWhere = "1=1";
      sOrderBy = request.getParameter("orderby");
      if (null == sOrderBy) sOrderBy = "";
      sShowAs = request.getParameter("showas");
      if (null == sShowAs) sShowAs = "CSV";

      if (DebugFile.trace)
        DebugFile.writeln("queryspec=" + sQuerySpec != null ? sQuerySpec : "null");
      if (DebugFile.trace) DebugFile.writeln("where=" + sWhere);
      if (DebugFile.trace) DebugFile.writeln("orderby=" + sOrderBy);

      if (hasSqlSignature(sColumnList)) {
        response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid Column List Syntax");
        return;
      }

      oQBF = new QueryByForm("file://" + sStorage + "/qbf/" + sQuerySpec + ".xml");

      if (DebugFile.trace) DebugFile.writeln("DriverManager.getConnection(" + jdbcURL + ",...)");
      oConn = DriverManager.getConnection(jdbcURL, dbUserName, dbUserPassword);

      // Send some basic http headers to support binary d/l.
      if (sShowAs.equalsIgnoreCase("XLS")) {
        response.setContentType("application/x-msexcel");
        response.setHeader(
            "Content-Disposition",
            "inline; filename=\"" + oQBF.getTitle(request.getLocale().getLanguage()) + " 1.csv\"");
      } else if (sShowAs.equalsIgnoreCase("CSV")) {
        response.setContentType("text/plain");
        response.setHeader(
            "Content-Disposition",
            "attachment; filename=\""
                + oQBF.getTitle(request.getLocale().getLanguage())
                + " 1.csv\"");
      } else if (sShowAs.equalsIgnoreCase("TSV")) {
        response.setContentType("text/tab-separated-values");
        response.setHeader(
            "Content-Disposition",
            "attachment; filename=\""
                + oQBF.getTitle(request.getLocale().getLanguage())
                + " 1.tsv\"");
      } else {
        response.setContentType("text/plain");
        response.setHeader(
            "Content-Disposition",
            "inline; filename=\"" + oQBF.getTitle(request.getLocale().getLanguage()) + " 1.txt\"");
      }

      if (0 == sOrderBy.length())
        oQBF.queryToStream(
            oConn, sColumnList, oQBF.getBaseFilter(request) + " " + sWhere, oOut, sShowAs);
      else
        oQBF.queryToStream(
            oConn,
            sColumnList,
            oQBF.getBaseFilter(request) + " " + sWhere + " ORDER BY " + sOrderBy,
            oOut,
            sShowAs);

      oConn.close();
      oConn = null;

      oOut.flush();
    } catch (SQLException e) {
      if (DebugFile.trace) DebugFile.writeln("SQLException " + e.getMessage());
      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    } catch (ClassNotFoundException e) {
      if (DebugFile.trace) DebugFile.writeln("ClassNotFoundException " + e.getMessage());
      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    } catch (IllegalAccessException e) {
      if (DebugFile.trace) DebugFile.writeln("IllegalAccessException " + e.getMessage());
      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    } catch (Exception e) {
      if (DebugFile.trace) DebugFile.writeln("Exception " + e.getMessage());
      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    } finally {
      try {
        if (null != oConn) if (!oConn.isClosed()) oConn.close();
      } catch (SQLException e) {
        if (DebugFile.trace) DebugFile.writeln("SQLException " + e.getMessage());
      }
    }

    if (DebugFile.trace) {
      DebugFile.decIdent();
      DebugFile.writeln("End HttpQueryServlet.doGet()");
    }
  } // doGet()