X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/php/wizards/PHPSelectRowPage.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/php/wizards/PHPSelectRowPage.java new file mode 100644 index 0000000..3769350 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/php/wizards/PHPSelectRowPage.java @@ -0,0 +1,210 @@ + +package com.quantum.php.wizards; + +import java.text.MessageFormat; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.swt.SWT; +import org.eclipse.swt.dnd.TextTransfer; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import com.quantum.QuantumPlugin; +import com.quantum.adapters.DatabaseAdapter; +import com.quantum.model.Bookmark; +import com.quantum.model.Column; +import com.quantum.model.Entity; +import com.quantum.php.PHPMessages; +import com.quantum.wizards.BaseSQLPage; +import com.quantum.wizards.SQLPage; + +public class PHPSelectRowPage extends BaseSQLPage implements SQLPage { + String[] columnNames; + + Text[] variableNames; + + // Text[] newValues; + Button[] primaryKeys; + + Button[] selectValues; + + Label query; + + IPreferenceStore fStore; + + public PHPSelectRowPage(String pageName) { + super(pageName); + } + + public void createControl(Composite parent) { + System.out.println("page create control"); //$NON-NLS-1$ + Composite container = new Composite(parent, SWT.V_SCROLL); + fStore = QuantumPlugin.getDefault().getPreferenceStore(); + GridLayout layout = new GridLayout(); + container.setLayout(layout); + Entity entity = this.results.getEntity(); + + int layoutColumns = 4; + layout.numColumns = layoutColumns; + + columnNames = this.results.getColumnNames(); + variableNames = new Text[columnNames.length]; + // newValues = new Text[columnNames.length]; + primaryKeys = new Button[columnNames.length]; + selectValues = new Button[columnNames.length]; + Label temp = new Label(container, SWT.NULL); + temp.setText(PHPMessages.getString("PHPSelectRowPage.ColumnName")); //$NON-NLS-1$ + temp = new Label(container, SWT.NULL); + temp.setText(PHPMessages.getString("PHPSelectRowPage.VariableName")); //$NON-NLS-1$ + temp = new Label(container, SWT.NULL); + temp.setText(""); //$NON-NLS-1$ + // temp = new Label(container, SWT.NULL); + // temp.setText(PHPMessages.getString("PHPSelectRowPage.NewValue")); + // //$NON-NLS-1$ + temp = new Label(container, SWT.NULL); + temp.setText(PHPMessages.getString("PHPSelectRowPage._13")); //$NON-NLS-1$ + for (int i = 0; i < columnNames.length; i++) { + Label label = new Label(container, SWT.NULL); + label.setText(columnNames[i]); + variableNames[i] = new Text(container, SWT.BORDER | SWT.SINGLE); + GridData gridData = new GridData(); + gridData.widthHint = 100; + variableNames[i].setLayoutData(gridData); + Object data = this.row == null ? null : this.row.get(i + 1); + variableNames[i].setText(data == null ? "" : '$' + columnNames[i]);//data.toString()); + variableNames[i].addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateQuery(); + } + }); + primaryKeys[i] = new Button(container, SWT.CHECK); + primaryKeys[i].setText("Where"); //$NON-NLS-1$ + Column column = (entity == null) ? null : getColumn(entity, + columnNames[i]); + if (column != null && column.isPrimaryKey()) + primaryKeys[i].setSelection(true); + primaryKeys[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + // newValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE); + // newValues[i].setText(data == null ? "" : '$'+data.toString()); + // gridData = new GridData(); + // gridData.widthHint = 100; + // newValues[i].setLayoutData(gridData); + // newValues[i].addModifyListener(new ModifyListener() { + // public void modifyText(ModifyEvent e) { + // updateQuery(); + // } + // }); + selectValues[i] = new Button(container, SWT.CHECK); + selectValues[i].setText(PHPMessages + .getString("PHPSelectRowPage.SelectValue")); //$NON-NLS-1$ + selectValues[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + } + query = new Label(container, SWT.WRAP | SWT.V_SCROLL); + GridData gridData = new GridData(); + gridData.horizontalSpan = layoutColumns; + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + query.setLayoutData(gridData); + + setControl(container); + updateQuery(); + + setPageComplete(true); + } + + public void updateQuery() { + System.out.println("Selecting query"); //$NON-NLS-1$ + StringBuffer setClause = new StringBuffer(); + StringBuffer whereClause = new StringBuffer(); + Bookmark bookmark = this.results.getBookmark(); + Entity entity = this.results.getEntity(); + DatabaseAdapter adapter = bookmark.getAdapter(); + + int numValuesSet = 0; + int numValuesWhere = 0; + for (int i = 0; i < columnNames.length; i++) { + if (primaryKeys[i].getSelection()) { + String value = variableNames[i].getText(); + if (numValuesWhere > 0) + whereClause.append(" AND "); //$NON-NLS-1$ + whereClause.append("("); //$NON-NLS-1$ + whereClause.append(columnNames[i]); + whereClause.append(" = "); //$NON-NLS-1$ + appendColumn(whereClause, entity, columnNames[i], adapter, value); + whereClause.append(")"); //$NON-NLS-1$ + numValuesWhere++; + } + if (selectValues[i].getSelection()) { + // String value = newValues[i].getText(); + if (numValuesSet > 0) + setClause.append(", "); //$NON-NLS-1$ + setClause.append(columnNames[i]); + // setClause.append(" = "); //$NON-NLS-1$ + // appendColumn(setClause, entity, columnNames[i], adapter, value); + numValuesSet++; + } + } + // String query = "UPDATE " + this.results.getEntity().getQuotedTableName(); + // //$NON-NLS-1$ + // query += " SET " + setClause.toString(); //$NON-NLS-1$ + // query += " WHERE " + whereClause.toString(); //$NON-NLS-1$ + // + String[] arguments = { setClause.toString(), + this.results.getEntity().getQuotedTableName(), whereClause.toString() }; + MessageFormat form = new MessageFormat(fStore + .getString("phpeclipse.sql.select.template")); + + String query = form.format(arguments); + // String query = "$results = mysql_query(\"SELECT " + setClause.toString(); + // query += " FROM " + row.getTable(); + // query += " WHERE " + whereClause.toString() + "\");"; + this.query.setText(query); + + } + + /* + * (non-Javadoc) + * + * @see com.quantum.wizards.BaseSQLPage#getQueryText() + */ + protected String getQueryText() { + return query.getText(); + } + + /* + * (non-Javadoc) + * + * @see com.quantum.wizards.SQLPage#performFinish() + */ + public boolean performFinish() { + QuantumPlugin.getDefault().getSysClip().setContents( + new Object[] { query.getText() }, + new Transfer[] { TextTransfer.getInstance() }); + return true; + } +} \ No newline at end of file