--- /dev/null
+package net.sourceforge.phpeclipse.wizards.actions.metadata;
+
+import java.sql.SQLException;
+
+import org.eclipse.jface.wizard.WizardPage;
+
+import com.quantum.adapters.DatabaseAdapter;
+import com.quantum.model.Column;
+import com.quantum.model.Entity;
+import com.quantum.sql.SQLResultSetResults;
+import com.quantum.ui.dialog.ConnectionUtil;
+import com.quantum.util.connection.NotConnectedException;
+
+/**
+ * @author BC Holmes
+ */
+public abstract class BaseSQLPage extends WizardPage implements SQLPage {
+
+ protected Row row;
+ protected Column[] columns;
+// protected SQLResultSetResults results;
+ private ConnectionUtil connectionUtil = new ConnectionUtil();
+
+ public BaseSQLPage(String pageName) {
+ super(pageName);
+ }
+ public boolean performFinish() {
+// Bookmark bookmark = (Bookmark) this.results.getConnectable();
+// try {
+// bookmark.addQuery(getQueryText());
+// SQLResults sqlResults = MultiSQLServer.getInstance().execute(bookmark,
+// this.connectionUtil.getConnection(bookmark, getShell()), getQueryText());
+// return sqlResults == null ? false : true;
+// } catch (SQLException e) {
+// SQLExceptionDialog.openException(getShell(), bookmark, e);
+// return false;
+// }
+ return false;
+ }
+
+ protected abstract String getQueryText();
+ protected void appendColumn(StringBuffer whereClause, Entity entity, String columnName, DatabaseAdapter adapter, String value) {
+
+ if (adapter != null && entity != null && getColumn(entity, columnName) != null) {
+ Column column = getColumn(entity, columnName);
+ whereClause.append(adapter.quote(value, column.getType(), column.getTypeName()));
+ } else {
+ whereClause.append(value);
+ }
+ }
+ /**
+ * @param entity
+ * @param columnName
+ * @return
+ * @throws NotConnectedException
+ * @throws SQLException
+ */
+ protected Column getColumn(Entity entity, String columnName) {
+ try {
+ return entity == null ? null : entity.getColumn(columnName);
+ } catch (NotConnectedException e) {
+ return null;
+ } catch (SQLException e) {
+ return null;
+ }
+ }
+ public void init(Row row, Column[] columns) {
+// this.results = results;
+ this.row = row;
+ this.columns = columns;
+ }
+}
package net.sourceforge.phpeclipse.wizards.actions.metadata;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
import net.sourceforge.phpeclipse.wizards.xml.ModelUtil;
+import org.eclipse.jface.wizard.WizardDialog;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
* @see com.quantum.extensions.IDataExtension#run(org.w3c.dom.Document)
*/
public void run(Document doc) {
-// System.out.println(doc);
-
- Element root = doc.getDocumentElement();
+ // System.out.println(doc);
+ Element root = doc.getDocumentElement();
try {
XMLToModelConverter c = new XMLToModelConverter(root);
String name = ModelUtil.getTableName(root);
System.out.println(name);
Column[] cols = c.getColumns();
for (int i = 0; i < cols.length; i++) {
- System.out.print("Column-name: "+i+" ");
+ System.out.print("Column-name: " + i + " ");
System.out.println(cols[i].getName());
}
+ UpdateRowPage page = new UpdateRowPage(""); //$NON-NLS-1$
+ SQLRowWizard wizard = new SQLRowWizard();
+
+ List rowList = new ArrayList();
+ for (int i = 1; i < cols.length; i++) {
+ Vector row = new Vector();
+ row.addElement(cols[i].getName());
+ row.addElement(cols[i].getTypeName());
+ long precision = 0;
+ try {
+ precision = cols[i].getSize();// metaData.getPrecision(i);
+ } catch (Throwable t) {
+ // Do nothing. An exception can be generated by some very large row sizes, like BLOB in Oracle.
+ // Then getPrecision() will generate an exception. So we ignore it and go on.
+ }
+ // if (precision == 0) {
+ // precision = cols[i].getSize();
+ // }
+ int scale = cols[i].getNumberOfFractionalDigits();// metaData.getScale(i);
+
+ row.addElement(new Long(precision));
+ row.addElement(new Integer(scale));
+
+ boolean nullable = cols[i].isNullable();// metaData.isNullable(i);
+ // if (nullable == ResultSetMetaData.columnNoNulls) {
+ // row.addElement("Not Null"); //$NON-NLS-1$
+ // } else if (nullable == ResultSetMetaData.columnNullable) {
+ // row.addElement("Nullable"); //$NON-NLS-1$
+ // } else if (nullable == ResultSetMetaData.columnNullableUnknown) {
+ // row.addElement("Nullable"); //$NON-NLS-1$
+ // } else {
+ // row.addElement("<Error>"); //$NON-NLS-1$
+ // }
+ if (nullable) {
+ row.addElement("Nullable"); //$NON-NLS-1$
+ } else {
+ row.addElement("<Error>"); //$NON-NLS-1$
+ }
+ // row.addElement(metaData.isAutoIncrement(i) ? Boolean.TRUE : Boolean.FALSE);
+ rowList.add(new Row(row));
+ row.addElement(new Integer(cols[i].getType()));// metaData.getColumnType(i)));
+ }
+
+ Row rrow = new Row(rowList);
+ wizard.init(Messages.getString("TableView.UpdateRow"), page, rrow, cols); //$NON-NLS-1$
+ WizardDialog dialog = new WizardDialog(null, wizard);
+ dialog.open();
+
} catch (Exception e) {
e.printStackTrace();
}
}
-}
\ No newline at end of file
+}
+
--- /dev/null
+package net.sourceforge.phpeclipse.wizards.actions.metadata;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxCellEditor;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+import com.quantum.ImageStore;
+import com.quantum.Messages;
+import com.quantum.adapters.DatabaseAdapter;
+import com.quantum.model.Bookmark;
+import com.quantum.model.Column;
+import com.quantum.model.Entity;
+import com.quantum.util.StringMatrix;
+
+/**
+ * @author BC Holmes
+ * @author Elvin E. Ebora
+ */
+public class UpdateRowPage extends BaseSQLPage implements SQLPage {
+
+ class UpdateRowTableValues {
+ private String sColNames = null;
+
+ private String sOldValue = null;
+
+ private boolean bPrimary = false;
+
+ private String sNewValue = null;
+
+ private boolean bSetValue = false;
+
+ public UpdateRowTableValues() {
+ }
+
+ /**
+ * @return Returns the bSetValue.
+ */
+ public boolean isBSetValue() {
+ return bSetValue;
+ }
+
+ /**
+ * @param setValue
+ * The bSetValue to set.
+ */
+ public void setBSetValue(boolean setValue) {
+ bSetValue = setValue;
+ }
+
+ /**
+ * @return Returns the bPrimary.
+ */
+ public boolean isBPrimary() {
+ return bPrimary;
+ }
+
+ /**
+ * @param where
+ * The bPrimary to set.
+ */
+ public void setBPrimary(boolean where) {
+ bPrimary = where;
+ }
+
+ /**
+ * @return Returns the sColNames.
+ */
+ public String getSColNames() {
+ return sColNames;
+ }
+
+ /**
+ * @param colNames
+ * The sColNames to set.
+ */
+ public void setSColNames(String colNames) {
+ sColNames = colNames;
+ }
+
+ /**
+ * @return Returns the sNewValue.
+ */
+ public String getSNewValue() {
+ return sNewValue;
+ }
+
+ /**
+ * @param newValue
+ * The sNewValue to set.
+ */
+ public void setSNewValue(String newValue) {
+ sNewValue = newValue;
+ }
+
+ /**
+ * @return Returns the sOldValue.
+ */
+ public String getSOldValue() {
+ return sOldValue;
+ }
+
+ /**
+ * @param oldValue
+ * The sOldValue to set.
+ */
+ public void setSOldValue(String oldValue) {
+ sOldValue = oldValue;
+ }
+ }
+
+ class LabelProviderImpl implements ITableLabelProvider {
+ public Image getColumnImage(Object element, int columnIndex) {
+ if (columnIndex == 2) {
+ return ((UpdateRowTableValues) element).isBPrimary() ? imgCheck : imgUncheck;
+ } else if (columnIndex == 4) {
+ return ((UpdateRowTableValues) element).isBSetValue() ? imgCheck : imgUncheck;
+ } else {
+ return null;
+ }
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ String sReturn = "";
+ UpdateRowTableValues updateRow = (UpdateRowTableValues) element;
+ switch (columnIndex) {
+ case 0: // column names
+ sReturn = updateRow.getSColNames();
+ break;
+ case 1: // old values
+ sReturn = updateRow.getSOldValue();
+ break;
+ case 2: // set checkbox
+ break;
+ case 3: // new value
+ sReturn = updateRow.getSNewValue();
+ break;
+ case 4: // set value checkbox
+ break;
+ default:
+ break;
+ }
+ return sReturn;
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+ }
+
+ class ContentProviderImpl implements IStructuredContentProvider {
+ public Object[] getElements(Object inputElement) {
+ return updateTable;
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+ }
+
+ class CellModifierImpl implements ICellModifier {
+
+ public boolean canModify(Object element, String property) {
+ return true;
+ }
+
+ public Object getValue(Object element, String property) {
+ System.out.println("getValue called");
+
+ // Find the index of the column
+ int colIndx = comUI.getColumnNamesAsList(colNames).indexOf(property);
+ System.out.println("colIndx : " + colIndx);
+
+ Object rResult = null;
+ UpdateRowTableValues updateVal = (UpdateRowTableValues) element;
+
+ switch (colIndx) {
+ case 0: // column names
+ rResult = updateVal.getSColNames();
+ break;
+ case 1: // old values
+ rResult = updateVal.getSOldValue();
+ break;
+ case 2: // set checkbox
+ rResult = new Boolean(updateVal.isBPrimary());
+ break;
+ case 3: // new value
+ rResult = updateVal.getSNewValue();
+ break;
+ case 4: // set value checkbox
+ rResult = new Boolean(updateVal.isBSetValue());
+ break;
+ default:
+ break;
+ }
+
+ return rResult;
+ }
+
+ public void modify(Object element, String property, Object value) {
+ int colIndx = comUI.getColumnNamesAsList(colNames).indexOf(property);
+
+ TableItem item = (TableItem) element;
+ UpdateRowTableValues updateVal = (UpdateRowTableValues) item.getData();
+
+ switch (colIndx) {
+ case 0: // column names
+ break;
+ case 1: // old values
+ break;
+ case 2: // set checkbox
+ updateVal.setBPrimary(((Boolean) value).booleanValue());
+ break;
+ case 3: // new value
+ updateVal.setSNewValue(value.toString());
+ break;
+ case 4: // set value checkbox
+ updateVal.setBSetValue(((Boolean) value).booleanValue());
+ break;
+ default:
+ break;
+ }
+
+ updateView();
+ updateQuery();
+ }
+ }
+
+ String[] columnNames;
+
+ String[] colNames;
+
+ Text query;
+
+ UpdateRowTableValues[] updateTable = null;
+
+ CommonWizardUI comUI;
+
+ TableViewer tableViewer = null;
+
+ static Image imgCheck = null;
+
+ static Image imgUncheck = null;
+
+ static {
+ imgCheck = ImageStore.getImage(ImageStore.CHECKED);
+ imgUncheck = ImageStore.getImage(ImageStore.UNCHECKED);
+ }
+
+ public UpdateRowPage(String pageName) {
+ super(pageName);
+ }
+
+ public void createControl(Composite parent) {
+ System.out.println("page create control"); //$NON-NLS-1$
+ Composite container = new Composite(parent, SWT.NULL);
+ container.setLayout(new GridLayout());
+ container.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
+
+ // Entity entity = this.results.getEntity();
+
+ comUI = new CommonWizardUI();
+
+ // init values to be displayed on the table
+
+ // columnNames = this.results.getColumnNames();
+ int nLen = this.columns.length;
+ columnNames = new String[nLen];
+ for (int i = 0; i < this.columns.length; i++) {
+ columnNames[i] = this.columns[i].getName();
+ }
+ updateTable = new UpdateRowTableValues[nLen];
+
+ for (int nCtr = 0; nCtr < nLen; nCtr++) {
+ updateTable[nCtr] = new UpdateRowTableValues();
+ updateTable[nCtr].setSColNames(columnNames[nCtr]);
+ Object data = this.row == null ? null : this.row.get(nCtr + 1);
+ updateTable[nCtr].setSOldValue(data == null ? "" : data.toString());
+ Column column = null; //(entity == null) ? null : getColumn(entity, columnNames[nCtr]);
+ if (column != null && column.isPrimaryKey()) {
+ updateTable[nCtr].setBPrimary(true);
+ }
+ updateTable[nCtr].setSNewValue(data == null ? "" : data.toString());
+ }
+
+ createTable(container);
+
+ //query = new Label(container, SWT.WRAP);
+ query = new Text(container, SWT.V_SCROLL | SWT.MULTI | SWT.WRAP | SWT.READ_ONLY);
+ query.setLayoutData(comUI.createGridData(1, 10, GridData.FILL));
+ query.setVisible(false);
+
+ setControl(container);
+ //updateQuery();
+
+ setPageComplete(true);
+ }
+
+ public void updateQuery() {
+ System.out.println("Updating query"); //$NON-NLS-1$
+ query.setVisible(true);
+
+ StringMatrix columns = new StringMatrix();
+ for (int i = 0; i < columnNames.length; i++) {
+ if (updateTable[i].isBSetValue()) {
+ columns.addHeader(updateTable[i].getSColNames());
+ columns.add(updateTable[i].getSNewValue(), 0);
+ }
+ }
+ StringMatrix key = new StringMatrix();
+ for (int i = 0; i < columnNames.length; i++) {
+ if (updateTable[i].isBPrimary()) {
+ key.addHeader(updateTable[i].getSColNames());
+ // It's an old value because it't the key.
+ key.add(updateTable[i].getSOldValue(), 0);
+ }
+ }
+ // Bookmark bookmark = (Bookmark) this.results.getConnectable();
+ // DatabaseAdapter adapter = bookmark.getAdapter();
+ // this.query.setText(adapter.buildUpdate(this.results.getEntity(), columns, key));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.quantum.wizards.BaseSQLPage#getQueryText()
+ */
+ protected String getQueryText() {
+ return query.getText();
+ }
+
+ private void updateView() {
+ this.tableViewer.update(updateTable, null);
+ }
+
+ private void createTable(Composite composite) {
+ System.out.println("Creating table...");
+ Table table = comUI.createTablePage(composite);
+ colNames = new String[] {
+ Messages.getString("UpdateRowPage.ColumnName"),
+ Messages.getString("UpdateRowPage.OldValue"),
+ "Where",
+ Messages.getString("UpdateRowPage.NewValue"),
+ Messages.getString("UpdateRowPage.SetValue") };
+
+ comUI.createTableColumn(table, colNames[0], SWT.LEFT, 0, 150);
+ comUI.createTableColumn(table, colNames[1], SWT.LEFT, 1, 300);
+ comUI.createTableColumn(table, colNames[2], SWT.CENTER, 2, 60);
+ comUI.createTableColumn(table, colNames[3], SWT.LEFT, 3, 300);
+ comUI.createTableColumn(table, colNames[4], SWT.CENTER, 4, 70);
+ this.tableViewer = new TableViewer(table);
+ this.tableViewer.setColumnProperties(colNames);
+
+ CellEditor[] editor = new CellEditor[colNames.length];
+ TextCellEditor txtEditorField = new TextCellEditor(table);
+ txtEditorField.getControl().setEnabled(false);
+ editor[0] = txtEditorField;
+
+ TextCellEditor txtEditorFieldOld = new TextCellEditor(table);
+ txtEditorFieldOld.getControl().setEnabled(false);
+ editor[1] = txtEditorFieldOld;
+
+ editor[2] = new CheckboxCellEditor(table, SWT.NULL);
+
+ TextCellEditor txtEditorValues = new TextCellEditor(table);
+ editor[3] = txtEditorValues;
+
+ editor[4] = new CheckboxCellEditor(table, SWT.NULL);
+
+ this.tableViewer.setCellEditors(editor);
+ this.tableViewer.setLabelProvider(new LabelProviderImpl());
+ this.tableViewer.setContentProvider(new ContentProviderImpl());
+ this.tableViewer.setCellModifier(new CellModifierImpl());
+ this.tableViewer.setInput(updateTable);
+ }
+
+}
\ No newline at end of file