- 1.7.6 초기 코드
[Tadpole.git] / com.hangum.tadpole.commons.sql / src / com / hangum / tadpole / engine / query / sql / TadpoleSystem_ExecutedSQL.java
blob42aea96276c2ae42ff6fded2689975c06c61ade6
1 /*******************************************************************************
2 * Copyright (c) 2013 hangum.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser Public License v2.1
5 * which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
7 *
8 * Contributors:
9 * hangum - initial API and implementation
10 ******************************************************************************/
11 package com.hangum.tadpole.engine.query.sql;
13 import java.sql.SQLException;
14 import java.sql.Timestamp;
15 import java.text.DateFormat;
16 import java.text.SimpleDateFormat;
17 import java.util.ArrayList;
18 import java.util.Date;
19 import java.util.HashMap;
20 import java.util.List;
21 import java.util.Map;
23 import org.apache.commons.lang.StringUtils;
24 import org.apache.log4j.Logger;
26 import com.hangum.tadpole.commons.dialogs.message.dao.RequestResultDAO;
27 import com.hangum.tadpole.commons.exception.TadpoleSQLManagerException;
28 import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine;
29 import com.hangum.tadpole.commons.libs.core.utils.LicenseValidator;
30 import com.hangum.tadpole.commons.util.ApplicationArgumentUtils;
31 import com.hangum.tadpole.engine.initialize.TadpoleEngineUserDB;
32 import com.hangum.tadpole.engine.manager.TadpoleSQLManager;
33 import com.hangum.tadpole.engine.query.dao.system.ExecutedSQLResultDataDAO;
34 import com.hangum.tadpole.engine.query.dao.system.ExecutedSqlResourceDAO;
35 import com.hangum.tadpole.engine.query.dao.system.ExecutedSqlResourceDataDAO;
36 import com.hangum.tadpole.engine.query.dao.system.UserDBDAO;
37 import com.hangum.tadpole.engine.restful.TadpoleException;
38 import com.hangum.tadpole.engine.sql.util.export.CSVExpoter;
39 import com.hangum.tadpole.engine.sql.util.resultset.QueryExecuteResultDTO;
40 import com.hangum.tadpole.engine.utils.TimeZoneUtil;
41 import com.ibatis.sqlmap.client.SqlMapClient;
43 /**
44 * executed_sql_resource관련 테이블 쿼리.
45 * 해당 테이블은 사용자 sql 실행쿼리에 관한 정보를 가지고 있습니다.
47 * @author hangum
50 public class TadpoleSystem_ExecutedSQL {
51 /**
52 * Logger for this class
54 private static final Logger logger = Logger.getLogger(TadpoleSystem_ExecutedSQL.class);
56 /**
57 * save execute history
59 * @param user_seq
60 * @param userDB
61 * @param reqResultDAO
62 * @param rsDAO
63 * @return
65 public static long insertExecuteHistory(final int user_seq, final UserDBDAO userDB, final RequestResultDAO reqResultDAO, final QueryExecuteResultDTO rsDAO) {
66 long longHistorySeq = -1;
68 if(LicenseValidator.getLicense().isValidate()) {
69 try {
71 String strExecuteResultData = "";
72 if(rsDAO != null) {
73 if(PublicTadpoleDefine.YES_NO.YES.name().equals(rsDAO.getUserDB().getIs_result_save())) {
74 strExecuteResultData = CSVExpoter.makeContent(true, rsDAO, ',', "UTF-8");
78 longHistorySeq = TadpoleSystem_ExecutedSQL.saveExecuteSQUeryResource(
79 user_seq,
80 userDB,
81 PublicTadpoleDefine.EXECUTE_SQL_TYPE.EDITOR,
82 reqResultDAO,
83 strExecuteResultData
87 } catch(Exception e) {
88 logger.error("save the user query", e); //$NON-NLS-1$
92 return longHistorySeq;
95 /**
96 * save execute history
98 * @param user_seq
99 * @param userDB
100 * @param reqResultDAO
101 * @param te
102 * @return
104 public static long insertExecuteHistory(final int user_seq, final UserDBDAO userDB, final RequestResultDAO reqResultDAO) {
105 long longHistorySeq = -1;
107 if(LicenseValidator.getLicense().isValidate()) {
108 try {
110 longHistorySeq = TadpoleSystem_ExecutedSQL.saveExecuteSQUeryResource(
111 user_seq,
112 userDB,
113 PublicTadpoleDefine.EXECUTE_SQL_TYPE.EDITOR,
114 reqResultDAO,
119 } catch(Exception e) {
120 logger.error("save the user query", e); //$NON-NLS-1$
124 return longHistorySeq;
127 // /**
128 // * 모든 sql 히스토리 조회
129 // *
130 // * @param strEmail
131 // * @param strType
132 // * @param startTime
133 // * @param endTime
134 // * @param duringExecute
135 // * @param strSearch
136 // * @return
137 // * @throws TadpoleSQLManagerException
138 // * @throws SQLException
139 // */
140 // public static List<RequestResultDAO> getAllExecuteQueryHistoryDetail(String strEmail, String strType, long startTime, long endTime, int duringExecute, String strSearch, int _indexStart, int _indexEnd) throws TadpoleSQLManagerException, SQLException {
141 // return getExecuteQueryHistoryDetail(strEmail, strType, "", startTime, endTime, duringExecute, strSearch, _indexStart, _indexEnd);
142 // }
145 * 쿼리 실행 히스토리 디테일 창을 얻습니다.
147 * @param strEmail
148 * @param strType
149 * @param strResultType
150 * @param dbSeq
151 * @param startTime
152 * @param endTime
153 * @param duringExecute
154 * @param strSearch
155 * @param _indexStart
156 * @param _indexEnd
157 * @return
158 * @throws TadpoleSQLManagerException
159 * @throws SQLException
161 public static List<RequestResultDAO> getExecuteQueryHistoryDetail(String strEmail, String strType, String strResultType, String dbSeq, long startTime, long endTime, int duringExecute, String strSearch, int _indexStart, int _indexEnd) throws TadpoleSQLManagerException, SQLException {
162 if(!LicenseValidator.getLicense().isValidate()) {
163 return new ArrayList<RequestResultDAO>();
166 List<RequestResultDAO> returnSQLHistory = new ArrayList<RequestResultDAO>();
168 Map<String, Object> queryMap = new HashMap<String, Object>();
169 queryMap.put("email", strEmail);
170 if(!"".equals(dbSeq)) queryMap.put("db_seq", dbSeq);
171 if(!"All".equals(strType)) queryMap.put("type", strType);
172 if(!"All".equals(strResultType)) {
173 queryMap.put("tdb_result_code", strResultType);
176 if(ApplicationArgumentUtils.isDBServer()) {
177 Date date = new Date(TimeZoneUtil.chageTimeZone(startTime));
178 DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
179 queryMap.put("startTime", formatter.format(date));
181 Date dateendTime = new Date(TimeZoneUtil.chageTimeZone(endTime));
182 queryMap.put("endTime", formatter.format(dateendTime));
183 } else {
184 queryMap.put("startTime", startTime);
185 queryMap.put("endTime", endTime);
188 queryMap.put("duration", duringExecute);
189 queryMap.put("strSearch", strSearch);
190 queryMap.put("_indexStart", _indexStart);
191 queryMap.put("_indexEnd", _indexEnd);
193 SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleEngineUserDB.getUserDB());
194 List<java.util.Map> listResourceData = sqlClient.queryForList("getExecuteQueryHistoryDetail", queryMap);
196 for (Map resultMap : listResourceData) {
197 long seq = (Long)resultMap.get("executed_sql_resource_seq");
199 Long startdateexecute = 0l;
200 String strHeadSQLText = StringUtils.trimToEmpty((String)resultMap.get("tdb_sql_head"));
201 String strSQLText = (String)resultMap.get("sql_data");
202 Long enddateexecute = 0l;
204 if(ApplicationArgumentUtils.isDBServer()) {
205 startdateexecute = ((Timestamp)resultMap.get("startdateexecute")).getTime();
206 enddateexecute = ((Timestamp)resultMap.get("enddateexecute")).getTime();
207 } else {
208 startdateexecute = (Long)resultMap.get("startdateexecute");
209 enddateexecute = (Long)resultMap.get("enddateexecute");
212 int row = (Integer)resultMap.get("row");
213 String result = (String)resultMap.get("result");
215 String userName = resultMap.get("name") == null?"":(String)resultMap.get("name");
216 String userEmail = resultMap.get("email") == null?"":(String)resultMap.get("email");
217 String strFullName = "".equals(userEmail)?"":userName+"("+ userEmail+")";
219 String dbName = (String) resultMap.get("display_name");
221 String ipAddress = (String) resultMap.get("ipaddress");
222 int dbSeq2 = (Integer) resultMap.get("dbseq");
224 int tdb_result_code = 0;
225 String strMessage = (String)resultMap.get("message");
226 int duration = (Integer) resultMap.get("duration");
227 String strDescription = (String)resultMap.get("description");
229 String strResultSaveYn = (String)resultMap.get("result_save_yn");
231 RequestResultDAO dao = new RequestResultDAO(
232 duration,strFullName, dbName, new Timestamp(startdateexecute),
233 strHeadSQLText, strSQLText, new Timestamp(enddateexecute), row, result, tdb_result_code, strMessage,
234 ipAddress, dbSeq2, strDescription);
235 dao.setSeq(seq);
237 String strExecuteType = (String)resultMap.get("types");
238 dao.setEXECUSTE_SQL_TYPE(PublicTadpoleDefine.EXECUTE_SQL_TYPE.valueOf(strExecuteType));
239 dao.setResult_save_yn(strResultSaveYn);
241 returnSQLHistory.add(dao);
244 return returnSQLHistory;
248 * execute query
250 * @param seq
251 * @return
252 * @throws TadpoleSQLManagerException
253 * @throws SQLException
255 public static List<ExecutedSQLResultDataDAO> getExecuteResultData(long seq) throws TadpoleSQLManagerException, SQLException {
256 SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleEngineUserDB.getUserDB());
258 return sqlClient.queryForList("getExecuteResultData", seq);
262 * 마지막 실행했떤 쿼리 20개를 리턴합니다.
264 * @param user_seq
265 * @param dbSeq
266 * @return
267 * @throws TadpoleSQLManagerException, SQLException
269 public static List<RequestResultDAO> getExecuteQueryHistory(int user_seq, int dbSeq, String filter) throws TadpoleSQLManagerException, SQLException {
270 List<RequestResultDAO> returnSQLHistory = new ArrayList<RequestResultDAO>();
272 Map<String, Object> queryMap = new HashMap<String, Object>();
273 queryMap.put("user_seq",user_seq);
274 queryMap.put("db_seq", dbSeq);
275 queryMap.put("filter", "%" + filter + "%");
276 queryMap.put("count", 20);
278 SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleEngineUserDB.getUserDB());
279 List<java.util.Map> listResourceData = sqlClient.queryForList("getExecuteQueryHistory", queryMap);
281 for (Map resultMap : listResourceData) {
282 long seq = (Long)resultMap.get("executed_sql_resource_seq");
284 Long startdateexecute = 0l;
285 // This case sqlite
286 if(resultMap.get("startdateexecute") instanceof Long) {
287 startdateexecute = (Long)resultMap.get("startdateexecute");
288 // This case mysql
289 } else {
290 startdateexecute = ((Timestamp)resultMap.get("startdateexecute")).getTime();
293 String strHeadSQLText = StringUtils.trimToEmpty((String)resultMap.get("tdb_sql_head"));
294 String strSQLText = (String)resultMap.get("sql_data");
295 Long enddateexecute = 0l;
296 // This case sqlite
297 if(resultMap.get("enddateexecute") instanceof Long) {
298 enddateexecute = (Long)resultMap.get("enddateexecute");
299 // This case mysql
300 } else {
301 enddateexecute = ((Timestamp)resultMap.get("enddateexecute")).getTime();
304 int tdb_result_code = 0;
305 String strMessage = (String)resultMap.get("message");
307 int row = (Integer)resultMap.get("row");
308 String result = (String)resultMap.get("result");
310 int duration = (Integer)resultMap.get("duration");
312 RequestResultDAO dao
313 = new RequestResultDAO(duration, new Timestamp(startdateexecute), strHeadSQLText, strSQLText, new Timestamp(enddateexecute), row, result, tdb_result_code, strMessage);
314 dao.setSeq(seq);
315 returnSQLHistory.add(dao);
318 return returnSQLHistory;
322 * save sqlhistory
324 * @param user_seq
325 * @param userDB
326 * @param sqlType
327 * @param requestResultDAO
328 * @param strExecuteResultData
330 public static long saveExecuteSQUeryResource(final int user_seq, final UserDBDAO userDB, final PublicTadpoleDefine.EXECUTE_SQL_TYPE sqlType, final RequestResultDAO requestResultDAO, final String strExecuteResultData) throws TadpoleSQLManagerException, SQLException {
331 if(PublicTadpoleDefine.YES_NO.YES.name().equals(userDB.getIs_profile())) {
332 ExecutedSqlResourceDAO executeSQLResourceDao = new ExecutedSqlResourceDAO();
333 executeSQLResourceDao.setDb_seq(userDB.getSeq());
334 executeSQLResourceDao.setUser_seq(user_seq);
335 executeSQLResourceDao.setTypes(sqlType.toString());
337 executeSQLResourceDao.setStartDateExecute(requestResultDAO.getStartDateExecute());
338 executeSQLResourceDao.setEndDateExecute(requestResultDAO.getEndDateExecute());
339 long duration = 0l;
340 try {
341 duration = requestResultDAO.getEndDateExecute().getTime() - requestResultDAO.getStartDateExecute().getTime();
342 } catch(Exception e){}
343 executeSQLResourceDao.setDuration(Integer.parseInt(""+duration));
345 executeSQLResourceDao.setRow(requestResultDAO.getRows());
346 executeSQLResourceDao.setResult(requestResultDAO.getResult());
348 if(requestResultDAO.getException() instanceof TadpoleException) {
349 TadpoleException te = (TadpoleException)requestResultDAO.getException();
350 executeSQLResourceDao.setTdb_result_code(te.getErrorCode());
353 executeSQLResourceDao.setTdb_result_code(requestResultDAO.getTdb_result_code());
354 executeSQLResourceDao.setMessage(requestResultDAO.getMesssage());
355 executeSQLResourceDao.setIpAddress(requestResultDAO.getIpAddress());
356 if(!"".equals(strExecuteResultData)) {
357 executeSQLResourceDao.setResult_save_yn(PublicTadpoleDefine.YES_NO.YES.name());
360 // 기존에 등록 되어 있는지 검사한다
361 SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleEngineUserDB.getUserDB());
362 ExecutedSqlResourceDAO executeSQL = (ExecutedSqlResourceDAO)sqlClient.insert("userExecuteSQLResourceInsert", executeSQLResourceDao); //$NON-NLS-1$
364 insertResourceSQLData(executeSQL.getSeq(), requestResultDAO.getStartDateExecute(), requestResultDAO.getTdb_sql_head(), requestResultDAO.getSql_text());
366 if(!"".equals(strExecuteResultData)) {
367 insertResourceResultData(executeSQL.getSeq(), requestResultDAO.getStartDateExecute(), strExecuteResultData);
370 return executeSQL.getSeq();
373 return -1;
377 * insert execute sql data
379 * @param seq
380 * @param startDateExecute
381 * @param tdb_sql_head
382 * @param sql_text
383 * @throws TadpoleSQLManagerException, SQLException
385 private static void insertResourceSQLData(final long seq, final Timestamp startDateExecute, final String tdb_sql_head, String sql_text) throws TadpoleSQLManagerException, SQLException {
386 SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleEngineUserDB.getUserDB());
388 // content data를 저장합니다.
389 ExecutedSqlResourceDataDAO dataDao = new ExecutedSqlResourceDataDAO();
390 dataDao.setExecuted_sql_resource_seq(seq);
391 dataDao.setStartDateExecute(startDateExecute);
392 dataDao.setTdb_sql_head(tdb_sql_head);
393 dataDao.setSql_data(sql_text);
395 sqlClient.insert("userExecuteSQLResourceDataInsert", dataDao); //$NON-NLS-1$
399 * insert execute sql result data
401 * @param seq
402 * @param startDateExecute
403 * @param contents
404 * @throws TadpoleSQLManagerException, SQLException
406 public static void insertResourceResultData(final long seq, final Timestamp startDateExecute, final String contents) throws TadpoleSQLManagerException, SQLException {
407 SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleEngineUserDB.getUserDB());
409 // content data를 저장합니다.
410 ExecutedSQLResultDataDAO dataDao = new ExecutedSQLResultDataDAO();
411 dataDao.setExecuted_sql_resource_seq(seq);
412 dataDao.setStartDateExecute(startDateExecute);
413 dataDao.setResult_data(contents);
415 sqlClient.insert("InsertExecuteSQLResultData", dataDao); //$NON-NLS-1$