<%@page import="com.eactive.eai.rms.common.datasource.DataSourceTypeManager"%> <%@ page language="java" contentType="text/html; charset=utf-8"%> <%@ page import="java.io.*, java.util.*, javax.xml.parsers.*, org.w3c.dom.*, javax.xml.xpath.*, java.sql.*, javax.sql.*, com.eactive.eai.agent.command.*, com.eactive.eai.agent.*, com.eactive.eai.rms.onl.common.util.*, com.eactive.eai.rms.common.datasource.*, org.apache.commons.logging.Log, org.apache.commons.logging.LogFactory, java.util.Arrays, com.eactive.eai.rms.common.util.StringUtils, com.eactive.eai.common.util.* " %> <%! private static final Logger logger = Logger.getLogger("runSql.jsp"); private String NEW_LINE = "\n"; private int MAX_FETCH_SIZE = 1000; private static Object obj = new Object(); public StringBuffer ListToString(List list){ StringBuffer sb = new StringBuffer(); //first item is ColName boolean isHead = true; for(int row=1;row list,String displayType, String serviceType ) throws Exception { Connection conn = null; Statement stmt = null; String driver = null; String url = null; String id =null; String pwd=null; ResultSet rs = null; HashMap results = new HashMap(); StringBuffer sb = new StringBuffer(); StringBuffer errorBuff = new StringBuffer(); int rownum = 0; try { DataSourceType dataType = DataSourceTypeManager.getDataSourceType(serviceType); String jndiName = dataType.getJndiName(); ServiceLocator sl = ServiceLocator.getInstance(); DataSource ds = sl.getDataSource( jndiName); conn = ds.getConnection(); stmt = conn.createStatement(); int cnt = 0; for(String sql : list) { try{ sql = sql.trim(); if(sql.length() == 0) continue; // System.out.println(sql); if(sql.toUpperCase().startsWith("SELECT")){ // 메모리 문제로 조회건수를 100건으로 제한하도록 한다. // 요건에 따라 변경 필요 sql = sql + "\n fetch first "+MAX_FETCH_SIZE+" rows only"; // DB2 stmt.execute(sql); rs = stmt.getResultSet(); List ret = new ArrayList(); int maxColumn = rs.getMetaData().getColumnCount(); ResultSetMetaData rsmd = rs.getMetaData(); String[] colName = new String[maxColumn]; int[] colSize = new int[maxColumn]; //get Col Name for(int i =1; i<=maxColumn; i++){ colName[i-1] = rsmd.getColumnName(i); colSize[i-1] = rsmd.getPrecision(i); } ret.add(colSize); ret.add(colName); while(rs.next()) { String[] row = new String[maxColumn]; for (int i=0;i Execute - ["+sql.trim()+"], affected "+ affected +" rows").append(NEW_LINE); } }catch(Exception e){ errorBuff.append("==> Error - ["+sql + "] : " +e.getMessage()).append(NEW_LINE); } } }catch(Exception e) { logger.error(e.getMessage(),e); throw e; } finally { try { if(stmt != null) stmt.close(); if(conn != null) conn.close(); if(rs != null) rs.close(); } catch (SQLException sqle) { logger.error("SQLException was thrown: " + sqle.getMessage()); } } HashMap retMap = new HashMap(); retMap.put("records",results); retMap.put("result", sb.toString()); retMap.put("error", errorBuff.toString()); return retMap; } public HashMap execute(String statements, String displayType,String serviceType,ServletRequest request) throws Exception { String[] results = new String[2]; String[] arr = statements.split(";"); List list = Arrays.asList(arr); return runSql(list, displayType, serviceType); } %> <% response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Expires", "0"); %> <% request.setCharacterEncoding("utf-8"); String filter = request.getParameter("filter"); String displayType = request.getParameter("displayType"); String serviceType = request.getParameter("serviceType"); String statement = request.getParameter("statement"); String userType=request.getParameter("userType"); String run=request.getParameter("run"); if (run == null) run = ""; if (displayType == null) displayType = "GRID"; if (serviceType == null) serviceType = ""; if (statement == null) statement = ""; HashMap runResult =new HashMap(); String errorMessage = ""; if (!"".equals(run) ){ runResult = execute(statement,displayType, serviceType,request); //response.sendRedirect("/monitoring/jsp/common/jsonResult.jsp"); errorMessage = (String)runResult.get("error"); if(errorMessage == null) errorMessage = ""; }else{ ; } %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> <%@ include file="/jsp/common/include/localemessage.jsp" %> <%-- --%>
<%-- " level="W" style="cursor:hand;"/> --%> <%-- " level="w" style="cursor:hand;"/> --%>
Data Explorer
Database :
DIsplay :
<% if("FLAT".equals(displayType)) { %> <% } else { HashMap recordsMap = (HashMap)runResult.get("records"); if(recordsMap != null) { %> <% } } %>
<%= localeMessage.getString("runSql.excute") %> : max fetch size <%= MAX_FETCH_SIZE %>
<%= localeMessage.getString("runSql.result") %>
<%= errorMessage %>
<%--
--%>
<% for(int sel=0; sel <= 10;sel++) { ArrayList resultList = (ArrayList)recordsMap.get("SEL"+sel); // System.out.println("SEL"+sel+" = "+resultList); if(resultList == null) { break; } %>
<% int[] colSize = (int[])resultList.get(0); int cellWidth = 40; for(int index = 1; index <% for(int p = 0; p cellWidth) cellWidth = colSize[p]; cellWidth = cellWidth * 10; out.println(String.format("", cellWidth, rows[p] )); } else { out.println(String.format("", rows[p])); } } %> <% } %>
%s%s
<% } %>