package net.sourceforge.phpdt.sql.actions; import java.sql.Connection; import java.util.Vector; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; import net.sourceforge.phpdt.sql.Messages; import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; import net.sourceforge.phpdt.sql.sql.MultiSQLServer; import net.sourceforge.phpdt.sql.sql.SQLParser; import net.sourceforge.phpdt.sql.sql.SQLResults; import net.sourceforge.phpdt.sql.view.BookmarkView; import net.sourceforge.phpdt.sql.view.QueryHistoryView; import net.sourceforge.phpdt.sql.view.SQLQueryView; import net.sourceforge.phpdt.sql.view.TableView; import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; import net.sourceforge.phpdt.sql.view.tableview.DefaultSizes; /** * @author panic * * Executes a query from the QueryView */ public class ExecuteAction extends Action implements IViewActionDelegate { SQLQueryView view; boolean flag = false; String execute1 = Messages.getString("ExecuteAction.Executing_Query3"); //$NON-NLS-1$ String execute2 = Messages.getString("ExecuteAction.Executing_Query2"); //$NON-NLS-1$ public void init(IViewPart view) { this.view = (SQLQueryView) view; } public void run(IAction action) { run(); } public void run() { view.setStatus(execute1); MultiSQLServer server = MultiSQLServer.getInstance(); view.setStatus(Messages.getString("ExecuteAction.Parsing_sql_script3")); //$NON-NLS-1$ Vector queries = new Vector(); String viewQuery = view.getQuery(); queries = SQLParser.parse(viewQuery); for (int i = 0; i < queries.size(); i++) { String query = (String) queries.elementAt(i); System.out.println(query); } int resultCount = 0; int resultUpdateCount = 0; int errorCount = 0; int resultsDisplayed = 0; for (int i = 0; i < queries.size(); i++) { if (flag) { view.setStatus(execute1); } else { view.setStatus(execute2); } BookmarkNode current = BookmarkView.getInstance().getCurrentBookmark(); Connection con = current.getConnection(); String query = (String) queries.elementAt(i); System.out.println(">" + query + "<"); //$NON-NLS-1$ //$NON-NLS-2$ if (con != null && !query.equals("")) { //$NON-NLS-1$ SQLResults results = server.execute(con, query, 1, DefaultSizes.PAGE_SIZE, DefaultSizes.MAX_COLUMN_SIZE); resultCount++; if (results.isResultSet()) { PHPEclipseSQLPlugin phpesqlPluginInstance = PHPEclipseSQLPlugin.getDefault(); phpesqlPluginInstance.showView("net.sourceforge.phpdt.sql.view.tableview"); //$NON-NLS-1$ TableView.getInstance().loadQuery(current, results); resultsDisplayed++; } else { int count = results.getUpdateCount(); if (count > 0) { resultUpdateCount += results.getUpdateCount(); } } if (results.isError()) { errorCount++; } } flag = !flag; view.setProgress(i + 1, queries.size()); } Image statImage = PHPEclipseSQLPlugin.getImage((errorCount > 0) ? "stop.gif" : "success.gif"); //$NON-NLS-1$ //$NON-NLS-2$ view.setStatus(statImage, Messages.getString("ExecuteAction.Done") + "(" + //$NON-NLS-1$ //$NON-NLS-2$ resultCount + Messages.getString("ExecuteAction.QueriesExecuted") + //$NON-NLS-1$ resultUpdateCount + Messages.getString("ExecuteAction.RowsUpdated") + //$NON-NLS-1$ resultsDisplayed + Messages.getString("ExecuteAction.ResultsDisplayed") + //$NON-NLS-1$ errorCount + Messages.getString("ExecuteAction.Errors") + ")"); //$NON-NLS-1$ //$NON-NLS-2$ view.setProgress(0, 1); QueryHistoryView history = QueryHistoryView.getInstance(); if (history != null) history.addQuery(viewQuery); } public void selectionChanged(IAction action, ISelection selection) { } }