package com.quantum.wizards; import java.sql.SQLException; import com.quantum.adapters.DatabaseAdapter; import com.quantum.model.Bookmark; import com.quantum.model.Column; import com.quantum.model.ConnectionException; import com.quantum.model.Entity; import com.quantum.model.NotConnectedException; import com.quantum.sql.SQLResults; import com.quantum.sql.TableRow; import com.quantum.view.ViewHelper; import com.quantum.view.tableview.TableAdapter; import org.eclipse.jface.wizard.WizardPage; /** * @author BC Holmes * @author Sirkware */ public abstract class BaseSQLPage extends WizardPage implements SQLPage { protected TableRow row; protected TableAdapter adapter; public BaseSQLPage(String pageName) { super(pageName); } public boolean performFinish() { try { Bookmark bookmark = this.adapter.getBookmark(); bookmark.addQuery(getQueryText()); SQLResults sqlResults = ViewHelper.tryGetResults(getShell(), bookmark.getConnection(), getQueryText()); return sqlResults.isError() ? false : true; } catch (ConnectionException e) { e.printStackTrace(); 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(TableRow row, TableAdapter adapter) { this.row = row; this.adapter = adapter; } }