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>"); } }