1 package com.quantum.wizards;
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.events.ModifyEvent;
5 import org.eclipse.swt.events.ModifyListener;
6 import org.eclipse.swt.events.SelectionEvent;
7 import org.eclipse.swt.events.SelectionListener;
8 import org.eclipse.swt.layout.GridData;
9 import org.eclipse.swt.layout.GridLayout;
10 import org.eclipse.swt.widgets.Button;
11 import org.eclipse.swt.widgets.Composite;
12 import org.eclipse.swt.widgets.Label;
13 import org.eclipse.swt.widgets.Text;
15 import com.quantum.Messages;
16 import com.quantum.adapters.DatabaseAdapter;
17 import com.quantum.model.Bookmark;
18 import com.quantum.model.Column;
19 import com.quantum.model.Entity;
21 public class UpdateRowPage extends BaseSQLPage implements SQLPage {
28 public UpdateRowPage(String pageName) {
32 public void createControl(Composite parent) {
33 System.out.println("page create control"); //$NON-NLS-1$
34 Composite container = new Composite(parent, SWT.V_SCROLL);
35 GridLayout layout = new GridLayout();
36 container.setLayout(layout);
37 Entity entity = this.results.getEntity();
39 int layoutColumns = 5;
40 layout.numColumns = layoutColumns;
42 columnNames = this.results.getColumnNames();
43 oldValues = new Text[columnNames.length];
44 newValues = new Text[columnNames.length];
45 primaryKeys = new Button[columnNames.length];
46 setValues = new Button[columnNames.length];
47 Label temp = new Label(container, SWT.NULL);
48 temp.setText(Messages.getString("UpdateRowPage.ColumnName")); //$NON-NLS-1$
49 temp = new Label(container, SWT.NULL);
50 temp.setText(Messages.getString("UpdateRowPage.OldValue")); //$NON-NLS-1$
51 temp = new Label(container, SWT.NULL);
52 temp.setText(""); //$NON-NLS-1$
53 temp = new Label(container, SWT.NULL);
54 temp.setText(Messages.getString("UpdateRowPage.NewValue")); //$NON-NLS-1$
55 temp = new Label(container, SWT.NULL);
56 temp.setText(Messages.getString("UpdateRowPage._13")); //$NON-NLS-1$
57 for (int i = 0; i < columnNames.length; i++) {
58 Label label = new Label(container, SWT.NULL);
59 label.setText(columnNames[i]);
60 oldValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE);
61 GridData gridData = new GridData();
62 gridData.widthHint = 100;
63 oldValues[i].setLayoutData(gridData);
64 Object data = this.row == null ? null : this.row.get(i+1);
65 oldValues[i].setText(data == null ? "" : data.toString());
66 oldValues[i].addModifyListener(new ModifyListener() {
67 public void modifyText(ModifyEvent e) {
71 primaryKeys[i] = new Button(container, SWT.CHECK);
72 primaryKeys[i].setText("Where"); //$NON-NLS-1$
73 Column column = (entity == null) ? null : getColumn(entity, columnNames[i]);
74 if (column != null && column.isPrimaryKey())
75 primaryKeys[i].setSelection(true);
76 primaryKeys[i].addSelectionListener(new SelectionListener() {
77 public void widgetDefaultSelected(SelectionEvent e) {
79 public void widgetSelected(SelectionEvent e) {
83 newValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE);
84 newValues[i].setText(data == null ? "" : data.toString());
85 gridData = new GridData();
86 gridData.widthHint = 100;
87 newValues[i].setLayoutData(gridData);
88 newValues[i].addModifyListener(new ModifyListener() {
89 public void modifyText(ModifyEvent e) {
93 setValues[i] = new Button(container, SWT.CHECK);
94 setValues[i].setText(Messages.getString("UpdateRowPage.SetValue")); //$NON-NLS-1$
95 setValues[i].addSelectionListener(new SelectionListener() {
96 public void widgetDefaultSelected(SelectionEvent e) {
98 public void widgetSelected(SelectionEvent e) {
103 query = new Label(container, SWT.WRAP | SWT.V_SCROLL);
104 GridData gridData = new GridData();
105 gridData.horizontalSpan = layoutColumns;
106 gridData.horizontalAlignment = GridData.FILL;
107 gridData.verticalAlignment = GridData.FILL;
108 gridData.grabExcessHorizontalSpace = true;
109 gridData.grabExcessVerticalSpace = true;
110 query.setLayoutData(gridData);
112 setControl(container);
115 setPageComplete(true);
117 public void updateQuery() {
118 System.out.println("Updating query"); //$NON-NLS-1$
119 StringBuffer setClause = new StringBuffer();
120 StringBuffer whereClause = new StringBuffer();
121 Bookmark bookmark = this.results.getBookmark();
122 Entity entity = this.results.getEntity();
123 DatabaseAdapter adapter = bookmark.getAdapter();
125 int numValuesSet = 0;
126 int numValuesWhere = 0;
127 for (int i = 0; i < columnNames.length; i++) {
128 if (primaryKeys[i].getSelection()) {
129 String value = oldValues[i].getText();
130 if (numValuesWhere > 0) whereClause.append(" AND "); //$NON-NLS-1$
131 whereClause.append("("); //$NON-NLS-1$
132 whereClause.append(columnNames[i]);
133 whereClause.append(" = "); //$NON-NLS-1$
134 appendColumn(whereClause, entity, columnNames[i], adapter, value);
135 whereClause.append(")"); //$NON-NLS-1$
138 if (setValues[i].getSelection()) {
139 String value = newValues[i].getText();
140 if (numValuesSet > 0) setClause.append(", "); //$NON-NLS-1$
141 setClause.append(columnNames[i]);
142 setClause.append(" = "); //$NON-NLS-1$
143 appendColumn(setClause, entity, columnNames[i], adapter, value);
147 String query = "UPDATE " + this.results.getEntity().getQuotedTableName(); //$NON-NLS-1$
148 query += " SET " + setClause.toString(); //$NON-NLS-1$
149 query += " WHERE " + whereClause.toString(); //$NON-NLS-1$
150 this.query.setText(query);
154 * @see com.quantum.wizards.BaseSQLPage#getQueryText()
156 protected String getQueryText() {
157 return query.getText();