package com.quantum.wizards; import java.sql.SQLException; import java.util.Arrays; import com.quantum.adapters.DatabaseAdapter; import com.quantum.model.Bookmark; import com.quantum.model.Column; import com.quantum.model.Entity; import com.quantum.model.NotConnectedException; import com.quantum.sql.MultiSQLServer; import com.quantum.sql.SQLResultSetResults; import com.quantum.sql.SQLResults; import com.quantum.ui.dialog.SQLExceptionDialog; import com.quantum.util.connection.ConnectionUtil; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; /** * @author BC Holmes * @author Sirkware */ public abstract class BaseSQLPage extends WizardPage implements SQLPage { protected SQLResultSetResults.Row row; protected SQLResultSetResults results; private ConnectionUtil connectionUtil = new ConnectionUtil(); public BaseSQLPage(String pageName) { super(pageName); } public boolean performFinish() { Bookmark bookmark = this.results.getBookmark(); 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; } } 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(SQLResultSetResults results, SQLResultSetResults.Row row) { this.results = results; this.row = row; } /** * @param table * @param colName * @param style * @param pos * @param width */ protected void createTableColumn(Table table, String colName, int style, int pos, int width) { TableColumn column = new TableColumn(table, style, pos); column.setText(colName); column.setWidth(width); } /** * @param columnNames * @return */ protected java.util.List getColumnNamesAsList(String[] columnNames) { return Arrays.asList(columnNames); } }