use of com.navercorp.dbtools.sqlmap.parser.MapperParser in project cubrid-manager by CUBRID.
the class QueryEditorPart method runQuery.
/**
* Execute all the selected SQL script on editor, if not, execute all the
* script on editor
*
* @param isOnlyQueryPlan boolean
* @param isSqlmapQuery boolean whether or not it needs parsing a sqlmap query
* @param queries String
* @param rowParameterList List<List<PstmtParameter>>
*/
private void runQuery(boolean isOnlyQueryPlan, boolean isSqlmapQuery, String queries, List<List<PstmtParameter>> rowParameterList) {
// FIXME move this logic to core module
if (!isConnected()) {
CommonUITool.openErrorBox(Messages.qedit_tip_run_query);
return;
}
if (StringUtil.isEmpty(queries)) {
return;
}
try {
connection.getConnection(true);
} catch (SQLException e) {
CommonUITool.openErrorBox(e.getLocalizedMessage());
return;
}
try {
connection.setAutoCommit(isAutocommit);
} catch (SQLException e) {
CommonUITool.openErrorBox(e.getLocalizedMessage());
return;
}
if (!connection.hasConnection()) {
return;
}
MapperParser mapperParser = null;
boolean isXmlQueries = isSqlmapQuery && QueryUtil.isXml(queries);
if (isXmlQueries) {
try {
mapperParser = new MapperParserImpl();
} catch (Exception ignored) {
isXmlQueries = false;
}
}
if (isXmlQueries) {
boolean isNotFirstDisplayed = false;
try {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewPart view = page.findView(SqlmapNavigatorView.ID);
if (view == null) {
showToolTip(qeToolBar, runItem, Messages.titleSqlmapSupports, Messages.msgSqlmapSupports, 3);
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(SqlmapNavigatorView.ID, null, IWorkbenchPage.VIEW_ACTIVATE);
isNotFirstDisplayed = true;
}
} catch (PartInitException e) {
LOGGER.error(e.getMessage(), e);
}
// TODO #664 find query id on current position of xml content
// TODO #664 position
String queryId = QueryUtil.findNearbyQueryId(queries, queries.length() / 2);
MapperFile mapperFile = null;
try {
mapperFile = mapperParser.parse(getAllQueries());
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
// TODO #664 message
CommonUITool.openErrorBox(e.getLocalizedMessage());
}
List<String> queryIdList = mapperFile.getQueryIdList();
SqlmapNavigatorView.getInstance().updateQueryIdList(queryIdList, queryId);
List<QueryCondition> condList = mapperFile.getConditionList(queryId);
boolean isXmlUpdated = SqlmapPersistUtil.getInstance().isChanged(queryId, condList);
if (isXmlUpdated) {
SqlmapPersistUtil.getInstance().setConditions(queryId, condList);
}
String generatedQuery = SqlmapPersistUtil.getInstance().generateQuery(mapperFile, queryId);
String rawQuery = mapperFile.generateRawQuery(queryId);
if (rawQuery == null) {
showToolTip(qeToolBar, runItem, Messages.titleSqlmapUpdated, "Cannot find a query by the query id.\nIt seems to be commented out a query.", // TODO i18n
3);
}
List<String> bindParameters = QueryUtil.extractBindParameters(rawQuery);
for (String parameterOfSqlmap : bindParameters) {
String parameterName = QueryUtil.extractBindParameterName(parameterOfSqlmap);
SqlmapPersistUtil.getInstance().addOrModifyBindParameter(queryId, parameterName, null, BindParameterType.STRING.name());
BindParameter bindParameter = SqlmapPersistUtil.getInstance().getBindParameter(queryId, parameterName);
if (bindParameter != null) {
String value = bindParameter.getType().wrap(bindParameter.getValue());
generatedQuery = generatedQuery.replace(parameterOfSqlmap, value);
}
}
SqlmapNavigatorView.getInstance().refreshView();
if (!isNotFirstDisplayed) {
showToolTip(qeToolBar, runItem, Messages.titleSqlmapUpdated, Messages.msgSqlmapUpdated, 1);
}
return;
}
Vector<String> queryVector = QueryUtil.queriesToQuery(queries);
if (GeneralPreference.isShowAlertModifiedQueryOnAutoCommit() && isAutocommit() && !isOnlyQueryPlan && checkModifiedQueriesAndAlert(queryVector)) {
return;
}
if (isOnlyQueryPlan) {
if (!queryPlanItem.isEnabled()) {
return;
}
} else {
if (!runItem.isEnabled()) {
return;
}
}
isRunning = true;
queryPlanItem.setEnabled(false);
autoCommitItem.setEnabled(false);
setPstmtParaItem.setEnabled(false);
if (isOnlyQueryPlan) {
runQueryPlanOnly(queryVector);
} else {
runQuery(queryVector, rowParameterList, connection);
}
}
Aggregations