Example #1
0
  private void doSearch(
      HttpServletRequest request,
      HttpServletResponse response,
      HttpSession session,
      UseCaseConf useCaseConf,
      PrintWriter writer)
      throws ValidationException, SessionException, BookException, AttributesException,
          SecurityException, ParseException, FileNotFoundException,
          TransformerConfigurationException, TransformerException, Exception {

    QuerySearchAvanced querySearchAvanced = saveSearchConditions(session, request);

    Document xmlDocument = null;
    List badCtrls = null;
    Integer bookID = (Integer) session.getAttribute(Keys.J_BOOK);

    Map rowMap = RowQuerySearchAdvanced.transformToMap(querySearchAvanced);

    // Validar los campos de búsqueda según el formato de cada uno
    badCtrls = bookUseCase.validateAdvancedQueryParams(useCaseConf, bookID, rowMap);

    // Si todos los campos están correctamente rellenados
    if (badCtrls.isEmpty()) {

      xmlDocument = doSearch(useCaseConf, bookID, rowMap, querySearchAvanced.getOrder());

      if (xmlDocument != null) {
        // Almacenamos el xml con los resultados en sesión
        session.setAttribute("queryResults", xmlDocument);

        String script =
            "<script language=javascript>top.g_TreeFunc=true;top.Main.Workspace.EnabledTool();"
                + "window.open(top.g_URL + \"/vldSearchOperator.jsp?method=showResults&SessionPId="
                + session.getId()
                + "\", \"TableData\",\"location=no\",true);</script>";

        response.getWriter().write(script);

      } else {

        writer.write(
            "<HTML><HEAD><script type=text/javascript language=javascript src=\"./scripts/tbltext.js\"></script>");

        ResponseUtils.generateJavaScriptLog(
            writer,
            RBUtil.getInstance(useCaseConf.getLocale())
                .getProperty(Keys.I18N_EXCEPTION_BOOK_HAS_NO_FOLDERS));
        writer.write(ACTIVATE_SEVERAL_ADVSEARCH);

        writer.write("</HEAD><BODY tabIndex=-1></BODY></HTML>");
      }
    } else {
      FieldSearchAvanced[] fieldList = querySearchAvanced.getFieldSearchAvanced();
      boolean[] invalidValues = querySearchAvanced.getHasInvalidValue();
      for (int i = 0; i < fieldList.length; i++) {
        FieldSearchAvanced field = fieldList[i];
        if (field != null) {
          if (badCtrls.contains(new Integer(field.getRowId()))) {
            invalidValues[i] = true;
          } else {
            invalidValues[i] = false;
          }
        }
      }
      // Actualizamos el valor en sesión de los campos de búsqueda para que aparezcan los no
      // validados
      session.setAttribute("valoresConsulta", querySearchAvanced);

      writer.write(
          "<HTML><HEAD><script type=text/javascript language=javascript src=\"./scripts/tbltext.js\"></script>");

      ResponseUtils.generateJavaScriptLog(
          writer,
          RBUtil.getInstance(useCaseConf.getLocale())
              .getProperty(Keys.I18N_ISICRESSRV_QRY_ABORT_CAUSE_INVALID_TEXT));

      writer.write(ACTIVATE_SEVERAL_ADVSEARCH);

      writer.write("</HEAD><BODY tabIndex=-1></BODY></HTML>");
    }
  }