A lot of changes
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.sql / src / net / sourceforge / phpdt / sql / actions / ExecuteAction.java
1 package net.sourceforge.phpdt.sql.actions;
2
3 import java.util.Vector;
4
5 import net.sourceforge.phpdt.sql.IConstants;
6 import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin;
7 import net.sourceforge.phpdt.sql.sql.MultiSQLServer;
8 import net.sourceforge.phpdt.sql.sql.SQLParser;
9 import net.sourceforge.phpdt.sql.sql.SQLResults;
10 import net.sourceforge.phpdt.sql.view.QueryHistoryView;
11 import net.sourceforge.phpdt.sql.view.SQLQueryView;
12 import net.sourceforge.phpdt.sql.view.TableView;
13 import net.sourceforge.phpdt.sql.view.tableview.DefaultSizes;
14
15 import org.eclipse.jface.action.Action;
16 import org.eclipse.jface.action.IAction;
17 import org.eclipse.jface.viewers.ISelection;
18 import org.eclipse.swt.graphics.Image;
19 import org.eclipse.ui.IViewActionDelegate;
20 import org.eclipse.ui.IViewPart;
21
22 public class ExecuteAction
23   extends Action
24   implements IViewActionDelegate, IConstants {
25   SQLQueryView view;
26   boolean flag = false;
27   String execute1 = "Executing Query...";
28   String execute2 = "Executing Query..";
29   public void init(IViewPart view) {
30     this.view = (SQLQueryView) view;
31   }
32
33   public void run(IAction action) {
34     run();
35   }
36
37   public void run() {
38     view.setStatus(execute1);
39     MultiSQLServer server = MultiSQLServer.getInstance();
40     view.setStatus("Parsing sql script...");
41     Vector queries = new Vector();
42     String viewQuery = view.getQuery();
43     queries = SQLParser.parse(viewQuery);
44     for (int i = 0; i < queries.size(); i++) {
45       String query = (String) queries.elementAt(i);
46       if (DEBUG) {
47         System.out.println(query);
48       }
49     }
50     int resultCount = 0;
51     int resultUpdateCount = 0;
52     int errorCount = 0;
53     int resultsDisplayed = 0;
54     for (int i = 0; i < queries.size(); i++) {
55       if (flag) {
56         view.setStatus(execute1);
57       } else {
58         view.setStatus(execute2);
59       }
60       String query = (String) queries.elementAt(i);
61       if (DEBUG) {
62         System.out.println(">" + query + "<");
63       }
64       if (!query.equals("")) {
65         SQLResults results =
66           server.execute(
67             query,
68             1,
69             DefaultSizes.PAGE_SIZE,
70             DefaultSizes.MAX_COLUMN_SIZE);
71         resultCount++;
72         if (results.isResultSet()) {
73           TableView.getInstance().loadQuery(results);
74           resultsDisplayed++;
75         } else {
76           int count = results.getUpdateCount();
77           if (count > 0) {
78             resultUpdateCount += results.getUpdateCount();
79           }
80         }
81         if (results.isError()) {
82           errorCount++;
83         }
84       }
85       flag = !flag;
86       view.setProgress(i + 1, queries.size());
87     }
88     if (errorCount > 0) {
89       Image error = PHPEclipseSQLPlugin.getImage("stop.gif");
90       view.setStatus(
91         error,
92         "Done ("
93           + resultCount
94           + " queries executed, "
95           + resultUpdateCount
96           + " rows updated, "
97           + resultsDisplayed
98           + " results displayed, "
99           + errorCount
100           + " errors)");
101     } else {
102       Image success = PHPEclipseSQLPlugin.getImage("success.gif");
103       view.setStatus(
104         success,
105         "Done ("
106           + resultCount
107           + " queries executed, "
108           + resultUpdateCount
109           + " rows updated, "
110           + resultsDisplayed
111           + " results displayed, "
112           + errorCount
113           + " errors)");
114     }
115     view.setProgress(0, 1);
116     QueryHistoryView history = QueryHistoryView.getInstance();
117     history.addQuery(viewQuery);
118   }
119
120   public void selectionChanged(IAction action, ISelection selection) {
121   }
122 }