fixed NPE
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / wizards / DeleteRowPage.java
index dc90a00..10d1fda 100644 (file)
@@ -1,11 +1,5 @@
 package com.quantum.wizards;
 
-import com.quantum.Messages;
-import com.quantum.adapters.AdapterFactory;
-import com.quantum.adapters.DatabaseAdapter;
-import com.quantum.model.Bookmark;
-import com.quantum.model.Entity;
-
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -18,6 +12,12 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
+import com.quantum.Messages;
+import com.quantum.adapters.DatabaseAdapter;
+import com.quantum.model.Bookmark;
+import com.quantum.model.Column;
+import com.quantum.model.Entity;
+
 public class DeleteRowPage extends BaseSQLPage implements SQLPage {
        String[] columnNames;
        Text[] values;
@@ -30,55 +30,39 @@ public class DeleteRowPage extends BaseSQLPage implements SQLPage {
        
        public void createControl(Composite parent) {
                System.out.println("page create control"); //$NON-NLS-1$
-               Composite container = new Composite(parent, SWT.NULL);
+               Composite container = new Composite(parent, SWT.V_SCROLL);
                GridLayout layout = new GridLayout();
                container.setLayout(layout);
                layout.numColumns = 3;
 
-               if (row == null) {
-                       System.out.println("Row is null"); //$NON-NLS-1$
-               }
-               if (row.getColumnNames() == null) {
-                       System.out.println("Columns are null"); //$NON-NLS-1$
-               }
-               if (row.getTableData() == null) {
-                       System.out.println("Data is null"); //$NON-NLS-1$
-               }
-               Entity entity = row.getEntity();
-               columnNames = row.getColumnNames();
-               String[] data = row.getTableData();
-               for (int i = 0; i < row.getColumnCount(); i++) {
-                       System.out.println("data = " + i + "=" + data[i]); //$NON-NLS-1$ //$NON-NLS-2$
-                       System.out.println("column = " + i + "=" + columnNames[i]); //$NON-NLS-1$ //$NON-NLS-2$
-               }
-               values = new Text[row.getColumnCount()];
-               whereValues = new Button[row.getColumnCount()];
+               Entity entity = this.results.getEntity();
+               columnNames = this.results.getColumnNames();
+
+               values = new Text[columnNames.length];
+               whereValues = new Button[columnNames.length];
                new Label(container, SWT.NULL).setText(Messages.getString("DeleteRowPage.ColumnName")); //$NON-NLS-1$
                new Label(container, SWT.NULL).setText(Messages.getString("DeleteRowPage.Value")); //$NON-NLS-1$
                new Label(container, SWT.NULL).setText(Messages.getString("DeleteRowPage.IncludeIn")); //$NON-NLS-1$
-               for (int i = 0; i < row.getColumnCount(); i++) {
+               for (int i = 0; i < columnNames.length; i++) {
                        Label label = new Label(container, SWT.NULL);
                        label.setText(columnNames[i]);
                        values[i] = new Text(container, SWT.BORDER | SWT.SINGLE);
-                       GridData fullHorizontal = new GridData();
-                       fullHorizontal.horizontalAlignment = GridData.FILL;
-                       values[i].setLayoutData(fullHorizontal);
-                       values[i].setText(data[i]);
-
+                       Object object = this.row == null ? null : this.row.get(i+1);
+                       values[i].setText(object == null ? "" : object.toString());
+                       GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+                       gridData.widthHint = 150;
+                       values[i].setLayoutData(gridData);
                        values[i].addModifyListener(new ModifyListener() {
-                               public void modifyText(ModifyEvent e) {
+                               public void modifyText(ModifyEvent event) {
                                        updateQuery();
-                               }                               
+                               }
                        });
                        
                        whereValues[i] = new Button(container, SWT.CHECK);
                        whereValues[i].setText(Messages.getString("DeleteRowPage.WhereClause")); //$NON-NLS-1$
                        // we check if it's a primary key to select it in the WHERE clause
-                       if (entity != null && entity.getColumn(columnNames[i]).isPrimaryKey()) {
-                whereValues[i].setSelection(true);
-                       } else {
-                               whereValues[i].setSelection(false);
-            }
+                       Column column = getColumn(entity, columnNames[i]);
+            whereValues[i].setSelection(column == null ? false : column.isPrimaryKey());
                        whereValues[i].addSelectionListener(new SelectionListener() {
                                public void widgetDefaultSelected(SelectionEvent e) {
                                }
@@ -105,9 +89,9 @@ public class DeleteRowPage extends BaseSQLPage implements SQLPage {
        public void updateQuery() {
                System.out.println(Messages.getString("DeleteRowPage.UpdatingQuery")); //$NON-NLS-1$
                StringBuffer whereClause = new StringBuffer();
-               Bookmark bookmark = row.getBookmark();
-               Entity entity = row.getEntity();
-               DatabaseAdapter adapter = AdapterFactory.getInstance().getAdapter(bookmark.getType());
+               Bookmark bookmark = this.results.getBookmark();
+               Entity entity = this.results.getEntity();
+               DatabaseAdapter adapter = bookmark.getAdapter();
                
                int numSelected = 0;
                for (int i = 0; i < columnNames.length; i++) {
@@ -121,7 +105,7 @@ public class DeleteRowPage extends BaseSQLPage implements SQLPage {
                                whereClause.append(")"); //$NON-NLS-1$
                        }
                }
-               String query = "DELETE FROM " + row.getTable(); //$NON-NLS-1$
+               String query = "DELETE FROM " + this.results.getEntity().getQuotedTableName(); //$NON-NLS-1$
                if (numSelected > 0) {
                        query += " WHERE " + whereClause.toString(); //$NON-NLS-1$
                }