synchronized from quantum plugin
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / wizards / PHPSelectRowPage.java
1 package com.quantum.wizards;
2
3 import java.text.MessageFormat;
4
5 import org.eclipse.jface.preference.IPreferenceStore;
6 import org.eclipse.jface.wizard.WizardPage;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.dnd.TextTransfer;
9 import org.eclipse.swt.dnd.Transfer;
10 import org.eclipse.swt.events.ModifyEvent;
11 import org.eclipse.swt.events.ModifyListener;
12 import org.eclipse.swt.events.SelectionEvent;
13 import org.eclipse.swt.events.SelectionListener;
14 import org.eclipse.swt.layout.GridData;
15 import org.eclipse.swt.layout.GridLayout;
16 import org.eclipse.swt.widgets.Button;
17 import org.eclipse.swt.widgets.Composite;
18 import org.eclipse.swt.widgets.Label;
19 import org.eclipse.swt.widgets.Text;
20
21 import com.quantum.QuantumPlugin;
22 import com.quantum.sql.TableRow;
23 //import com.quantum.view.PHPSourceConsole;
24 import com.quantum.view.tableview.TableAdapter;
25
26 public class PHPSelectRowPage extends WizardPage implements SQLPage {
27   TableRow row;
28   String[] columnNames;
29   Text[] whereValues;
30   // Text[] newValues;
31   Button[] primaryKeys;
32   Button[] setValues;
33   Label query;
34   IPreferenceStore fStore;
35   private final static boolean DEBUG = false;
36
37   public PHPSelectRowPage(String pageName) {
38     super(pageName);
39   }
40
41   public void init(TableRow row, TableAdapter adapter) {
42     this.row = row;
43   }
44
45   public void createControl(Composite parent) {
46     if (DEBUG) {
47       System.out.println("page create control");
48     }
49     Composite container = new Composite(parent, SWT.NULL);
50     fStore = QuantumPlugin.getDefault().getPreferenceStore();
51
52     GridLayout layout = new GridLayout();
53     container.setLayout(layout);
54     int layoutColumns = 4;
55     layout.numColumns = layoutColumns;
56
57     if (DEBUG) {
58       if (row == null) {
59         System.out.println("Row is null");
60       }
61       if (row.getColumnNames() == null) {
62         System.out.println("Columns are null");
63       }
64       if (row.getTableData() == null) {
65         System.out.println("Data is null");
66       }
67     }
68
69     columnNames = row.getColumnNames();
70     String[] data = row.getTableData();
71
72     for (int i = 0; i < row.getColumnCount(); i++) {
73       System.out.println("data = " + i + "=" + data[i]);
74       System.out.println("column = " + i + "=" + columnNames[i]);
75     }
76
77     whereValues = new Text[row.getColumnCount()];
78     //  newValues = new Text[row.getColumnCount()];
79     primaryKeys = new Button[row.getColumnCount()];
80     setValues = new Button[row.getColumnCount()];
81     Label temp = new Label(container, SWT.NULL);
82     temp.setText("Column Name");
83     temp = new Label(container, SWT.NULL);
84     temp.setText("Value");
85     temp = new Label(container, SWT.NULL);
86     temp.setText("Where");
87     //    temp = new Label(container, SWT.NULL);
88     //    temp.setText("New Value");
89     temp = new Label(container, SWT.NULL);
90     temp.setText("Select");
91     for (int i = 0; i < row.getColumnCount(); i++) {
92       Label label = new Label(container, SWT.NULL);
93       label.setText(columnNames[i]);
94       whereValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE);
95       if (data[i] == null || data[i].equals("")) {
96         whereValues[i].setText('$' + columnNames[i]);
97       } else {
98         whereValues[i].setText(data[i]);
99       }
100
101       whereValues[i].addModifyListener(new ModifyListener() {
102         public void modifyText(ModifyEvent e) {
103           updateQuery();
104         }
105       });
106
107       primaryKeys[i] = new Button(container, SWT.CHECK);
108       //primaryKeys[i].setText("Where Clause");
109       primaryKeys[i].addSelectionListener(new SelectionListener() {
110         public void widgetDefaultSelected(SelectionEvent e) {
111         }
112         public void widgetSelected(SelectionEvent e) {
113           updateQuery();
114         }
115       });
116       //   newValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE);
117       //   newValues[i].setText(data[i]);
118       //   newValues[i].addModifyListener(new ModifyListener() {
119       //    public void modifyText(ModifyEvent e) {
120       //       updateQuery();
121       //    }
122       //  });
123       setValues[i] = new Button(container, SWT.CHECK);
124       //setValues[i].setText("Select Value");
125       setValues[i].addSelectionListener(new SelectionListener() {
126         public void widgetDefaultSelected(SelectionEvent e) {
127         }
128         public void widgetSelected(SelectionEvent e) {
129           updateQuery();
130         }
131       });
132     }
133     query = new Label(container, SWT.WRAP);
134     GridData gridData = new GridData();
135     gridData.horizontalSpan = layoutColumns;
136     gridData.horizontalAlignment = GridData.FILL;
137     gridData.verticalAlignment = GridData.FILL;
138     gridData.grabExcessHorizontalSpace = true;
139     gridData.grabExcessVerticalSpace = true;
140     query.setLayoutData(gridData);
141
142     setControl(container);
143     updateQuery();
144
145     setPageComplete(true);
146   }
147
148   public void updateQuery() {
149     if (DEBUG) {
150       System.out.println("PHP SELECT");
151     }
152     StringBuffer setClause = new StringBuffer();
153     StringBuffer whereClause = new StringBuffer();
154     String temp;
155     boolean firstClause = false;
156     for (int i = 0; i < columnNames.length; i++) {
157       if (primaryKeys[i].getSelection()) {
158         if (firstClause) {
159           whereClause.append(" AND ");
160         }
161         firstClause = true;
162         whereClause.append(columnNames[i]);
163         whereClause.append(" = ");
164         temp = whereValues[i].getText();
165         //        if (temp.charAt(0) == '$') {
166         //          whereClause.append(temp);
167         //        } else {
168         whereClause.append("'" + temp + "'");
169         //        }
170
171       }
172       if (setValues[i].getSelection()) {
173         setClause.append(columnNames[i]);
174         //   setClause.append(" = ");
175         //   setClause.append(newValues[i].getText());
176         setClause.append(", ");
177       }
178     }
179     //    if (whereClause.length() > 1) {
180     //      whereClause.deleteCharAt(whereClause.length() - 1);
181     //      whereClause.deleteCharAt(whereClause.length() - 1);
182     //    }
183     if (setClause.length() > 1) {
184       setClause.deleteCharAt(setClause.length() - 1);
185       setClause.deleteCharAt(setClause.length() - 1);
186     }
187
188     String[] arguments = { setClause.toString(), row.getTable(), whereClause.toString()};
189     MessageFormat form = new MessageFormat(fStore.getString("phpeclipse.sql.select.template"));
190
191     String query = form.format(arguments);
192     //    String query = "$results = mysql_query(\"SELECT " + setClause.toString();
193     //    query += " FROM " + row.getTable();
194     //    query += " WHERE " + whereClause.toString() + "\");";
195     this.query.setText(query);
196   }
197
198   public boolean performFinish() {
199 //    PHPSourceConsole console = PHPSourceConsole.getInstance();
200 //    console.clear();
201 //    console.print(query.getText());
202         QuantumPlugin.getDefault().getSysClip().setContents(
203                         new Object[] { query.getText() },
204                         new Transfer[] { TextTransfer.getInstance()});
205     return true;
206   }
207 }