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
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
;
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
;
44 * executed_sql_resource관련 테이블 쿼리.
45 * 해당 테이블은 사용자 sql 실행쿼리에 관한 정보를 가지고 있습니다.
50 public class TadpoleSystem_ExecutedSQL
{
52 * Logger for this class
54 private static final Logger logger
= Logger
.getLogger(TadpoleSystem_ExecutedSQL
.class);
57 * save execute history
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()) {
71 String strExecuteResultData
= "";
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(
81 PublicTadpoleDefine
.EXECUTE_SQL_TYPE
.EDITOR
,
87 } catch(Exception e
) {
88 logger
.error("save the user query", e
); //$NON-NLS-1$
92 return longHistorySeq
;
96 * save execute history
100 * @param reqResultDAO
104 public static long insertExecuteHistory(final int user_seq
, final UserDBDAO userDB
, final RequestResultDAO reqResultDAO
) {
105 long longHistorySeq
= -1;
107 if(LicenseValidator
.getLicense().isValidate()) {
110 longHistorySeq
= TadpoleSystem_ExecutedSQL
.saveExecuteSQUeryResource(
113 PublicTadpoleDefine
.EXECUTE_SQL_TYPE
.EDITOR
,
119 } catch(Exception e
) {
120 logger
.error("save the user query", e
); //$NON-NLS-1$
124 return longHistorySeq
;
132 // * @param startTime
134 // * @param duringExecute
135 // * @param strSearch
137 // * @throws TadpoleSQLManagerException
138 // * @throws SQLException
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);
145 * 쿼리 실행 히스토리 디테일 창을 얻습니다.
149 * @param strResultType
153 * @param duringExecute
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
));
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();
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
);
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
;
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개를 리턴합니다.
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;
286 if(resultMap
.get("startdateexecute") instanceof Long
) {
287 startdateexecute
= (Long
)resultMap
.get("startdateexecute");
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;
297 if(resultMap
.get("enddateexecute") instanceof Long
) {
298 enddateexecute
= (Long
)resultMap
.get("enddateexecute");
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");
313 = new RequestResultDAO(duration
, new Timestamp(startdateexecute
), strHeadSQLText
, strSQLText
, new Timestamp(enddateexecute
), row
, result
, tdb_result_code
, strMessage
);
315 returnSQLHistory
.add(dao
);
318 return returnSQLHistory
;
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());
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();
377 * insert execute sql data
380 * @param startDateExecute
381 * @param tdb_sql_head
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
402 * @param startDateExecute
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$