예제 #1
0
  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;
    }
  }
예제 #2
0
  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;
    }
  }