protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String oper = req.getParameter("oper"); String tableAlias = req.getParameter("tableAlias"); String columnName = req.getParameter("columnName"); QueryDesignHandler handler = getHandler(req); req.setAttribute("handler", handler); if (log.isDebugEnabled()) { log.debug( "oper=" + oper + ", query=" + handler.getQuery().getName() + ", tableAlias=" + tableAlias + ", columnName=" + columnName); } if ("designTables".equals(oper)) { WebUtil.forward(req, resp, "/ralasafe/query/tables.jsp"); return; } else if ("viewTable".equals(oper)) { Table[] tables = handler.getQuery().getQueryTypeSequence().getFrom().getTable(); for (int i = 0; i < tables.length; i++) { Table table = tables[i]; if (table.getAlias().equals(tableAlias)) { req.setAttribute("table", table); i = tables.length; } } WebUtil.forward(req, resp, "/ralasafe/query/table.jsp"); return; } else if ("getColumn".equals(oper)) { Column column = handler.getColumn(tableAlias, columnName); String[][] mappingClassPropertyAndTypes = handler.getMappingClassPropertyAndTypes(); req.setAttribute("column", column); req.setAttribute("mappingClassPropertyAndTypes", mappingClassPropertyAndTypes); WebUtil.forward(req, resp, "/ralasafe/query/editColumn.jsp"); return; } else if ("getGroupColumn".equals(oper)) { Column column = handler.getGroupColumn(tableAlias, columnName); req.setAttribute("column", column); WebUtil.forward(req, resp, "/ralasafe/query/editGroupColumn.jsp"); return; } else if ("getOrderColumn".equals(oper)) { Column column = handler.getOrderColumn(tableAlias, columnName); req.setAttribute("column", column); WebUtil.forward(req, resp, "/ralasafe/query/editOrderColumn.jsp"); return; } else if ("designGroup".equals(oper)) { WebUtil.forward(req, resp, "/ralasafe/query/group.jsp"); return; } else if ("designOrder".equals(oper)) { WebUtil.forward(req, resp, "/ralasafe/query/order.jsp"); return; } else if ("designWhere".equals(oper)) { WebUtil.forward(req, resp, "/ralasafe/query/where.jsp"); return; } else if ("whereExprContextMenu".equals(oper)) { String nodeId = req.getParameter("nodeId"); Object item = handler.getWhereExprItem(nodeId); req.setAttribute("item", item); WebUtil.forward(req, resp, "/ralasafe/query/whereExprContextMenu.jsp"); return; } else if ("loadWhereExprForm".equals(oper)) { String nodeId = req.getParameter("nodeId"); // String pId=req.getParameter( "pId" ); String exprType = req.getParameter("exprType"); if (!StringUtil.isEmpty(nodeId)) { Object obj = handler.getWhereExprItem(nodeId); ExpressionGroupTypeItem item = (ExpressionGroupTypeItem) obj; req.setAttribute("item", item); Object choiceValue = item.getChoiceValue(); if (choiceValue instanceof BinaryExpression) { exprType = "binary"; } else if (choiceValue instanceof InExpression || choiceValue instanceof NotInExpression) { exprType = "in"; } else if (choiceValue instanceof IsNullExpression || choiceValue instanceof IsNotNullExpression) { exprType = "null"; } } String[] userFields = WebUtil.getUserType(req).getUserMetadata().getUserFields(); req.setAttribute("userFields", userFields); if ("binary".equals(exprType)) { WebUtil.forward(req, resp, "/ralasafe/query/editWhereBinaryExpr.jsp"); } else if ("in".equals(exprType)) { WebUtil.forward(req, resp, "/ralasafe/query/editWhereInExpr.jsp"); } else if ("null".equals(exprType)) { WebUtil.forward(req, resp, "/ralasafe/query/editWhereNullExpr.jsp"); } return; } else if ("return".equals(oper)) { String gotoPage = handler.getManagePage(); // remove handler from session req.getSession().removeAttribute(getHandlerAttributeKey(req)); // goto manage page resp.sendRedirect(gotoPage); return; } else { WebUtil.forward(req, resp, "/ralasafe/query/design.jsp"); return; } }
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String oper = req.getParameter("oper"); String tableAlias = req.getParameter("tableAlias"); String columnName = req.getParameter("columnName"); QueryDesignHandler handler = getHandler(req); req.setAttribute("handler", handler); if (log.isDebugEnabled()) { log.debug( "oper=" + oper + ", query=" + handler.getQuery().getName() + ", tableAlias=" + tableAlias + ", columnName=" + columnName); } if ("checkTableColumns".equals(oper)) { handler.addTableColumns(tableAlias); return; } else if ("unCheckTableColumns".equals(oper)) { handler.deleteTableColumns(tableAlias); return; } else if ("deleteTable".equals(oper)) { handler.deleteTable(tableAlias); return; } else if ("addTable".equals(oper)) { String schema = req.getParameter("schema"); String tableName = req.getParameter("tableName"); String alias = handler.addTable(schema.trim(), tableName.trim()); Gson gson = new Gson(); String json = gson.toJson(alias); resp.setContentType("application/json"); resp.getWriter().print(json); return; } else if ("setMappingClass".equals(oper)) { String mappingClass = req.getParameter("mappingClass"); handler.setMappingClass(mappingClass); return; } else if ("deleteColumn".equals(oper)) { handler.deleteColumn(tableAlias, columnName); return; } else if ("addColumn".equals(oper)) { handler.addColumn(tableAlias, columnName); return; } else if ("updateTableColumn".equals(oper)) { String function = req.getParameter("function"); String property = req.getParameter("property"); boolean readOnly = WebUtil.getBooleanParameter(req, "readOnly", false); int index = property.indexOf("<"); String javaProp = property.substring(0, index - 1).trim(); String javaType = property.substring(index + 1, property.length() - 1).trim(); handler.changeColumnMapping(tableAlias, columnName, function, javaProp, javaType, readOnly); return; } else if ("moveGroupColumn".equals(oper)) { String direct = req.getParameter("direct"); handler.moveGroupColumn(direct, tableAlias, columnName); return; } else if ("deleteGroupColumn".equals(oper)) { handler.deleteGroupColumn(tableAlias, columnName); return; } else if ("editGroupColumn".equals(oper)) { String aliasColumn = req.getParameter("aliasColumn"); int firstIndex = aliasColumn.indexOf("["); int lastIndex = aliasColumn.indexOf("]"); tableAlias = aliasColumn.substring(firstIndex + 1, lastIndex); columnName = aliasColumn.substring(lastIndex + 2); int index = WebUtil.getIntParameter(req, "index", 0); handler.editGroupColumn(index, tableAlias, columnName); return; } else if ("addGroupColumn".equals(oper)) { String aliasColumn = req.getParameter("aliasColumn"); int firstIndex = aliasColumn.indexOf("["); int lastIndex = aliasColumn.indexOf("]"); tableAlias = aliasColumn.substring(firstIndex + 1, lastIndex); columnName = aliasColumn.substring(lastIndex + 2); handler.addGroupColumn(tableAlias, columnName); return; } else if ("moveOrderColumn".equals(oper)) { String direct = req.getParameter("direct"); handler.moveOrderColumn(direct, tableAlias, columnName); return; } else if ("deleteOrderColumn".equals(oper)) { handler.deleteOrderColumn(tableAlias, columnName); return; } else if ("editOrderColumn".equals(oper)) { String aliasColumn = req.getParameter("aliasColumn"); String orderType = req.getParameter("orderType"); int firstIndex = aliasColumn.indexOf("["); int lastIndex = aliasColumn.indexOf("]"); tableAlias = aliasColumn.substring(firstIndex + 1, lastIndex); columnName = aliasColumn.substring(lastIndex + 2); int index = WebUtil.getIntParameter(req, "index", 0); handler.editOrderColumn(index, tableAlias, columnName, orderType); return; } else if ("addOrderColumn".equals(oper)) { String aliasColumn = req.getParameter("aliasColumn"); String orderType = req.getParameter("orderType"); int firstIndex = aliasColumn.indexOf("["); int lastIndex = aliasColumn.indexOf("]"); tableAlias = aliasColumn.substring(firstIndex + 1, lastIndex); columnName = aliasColumn.substring(lastIndex + 2); handler.addOrderColumn(tableAlias, columnName, orderType); return; } else if ("loadWhereExprGroup".equals(oper)) { String xml = handler.getWhere(); resp.setContentType("application/json;charset=UTF-8"); ServletOutputStream out = resp.getOutputStream(); out.print(xml); return; } else if ("addWhereChildExprGroup".equals(oper)) { String nodeId = req.getParameter("nodeId"); String type = req.getParameter("type"); handler.addWhereChildExprGroup(nodeId, type); return; } else if ("editWhereExprGroup".equals(oper)) { String nodeId = req.getParameter("nodeId"); String type = req.getParameter("type"); handler.editWhereExprGroup(nodeId, type); return; } else if ("deleteWhereExpr".equals(oper)) { String nodeId = req.getParameter("nodeId"); handler.deleteWhereExpr(nodeId); return; } else if ("addWhereExpr".equals(oper)) { String pId = req.getParameter("pId"); String exprType = req.getParameter("exprType"); if ("binary".equals(exprType)) { BinaryExpression expr = getBinaryExpression(req); handler.addBinaryExpression(expr, pId); } else if ("null".equals(exprType)) { Column column = getWhereExprInColumn(req); String operator = req.getParameter("operator"); handler.addNullExpression(column, operator, pId); } return; } else if ("editWhereExpr".equals(oper)) { String nodeId = req.getParameter("nodeId"); String exprType = req.getParameter("exprType"); if ("binary".equals(exprType)) { BinaryExpression expr = getBinaryExpression(req); handler.editBinaryExpression(expr, nodeId); } else if ("null".equals(exprType)) { Column column = getWhereExprInColumn(req); String operator = req.getParameter("operator"); handler.editNullExpression(column, operator, nodeId); } return; } else if ("save".equals(oper)) { // remove handler from session req.getSession().removeAttribute(getHandlerAttributeKey(req)); int id = WebUtil.getIntParameter(req, "id", -23); QueryManager queryManager = WebUtil.getQueryManager(req); try { handler.save(id, queryManager); } catch (EntityExistException e) { log.error("", e); throw new ServletException(e); } return; } }