Quantum version 2.4.1
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / php / wizards / PHPSelectRowPage.java
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 (file)
index 0000000..3769350
--- /dev/null
@@ -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