home *** CD-ROM | disk | FTP | other *** search
- package asp.wizard;
-
- import asp.netobjects.nfx.ui.OrderedListModel;
- import asp.netobjects.nfx.util.ExceptionHandler;
- import asp.netobjects.nfx.util.ExternalError;
- import asp.netobjects.nfx.util.InternalError;
- import asp.netobjects.nfx.wizard.Wizard;
- import asp.netobjects.nfx.wizard.WizardPage;
- import asp.netobjects.nfx.wizard.WizardPageView;
- import asp.netobjects.nfx.wizard.WizardView;
- import asp.util.ResourceUtil;
- import asp.wizard.def.DefConnection;
- import asp.wizard.def.DefQuery;
- import com.sun.java.swing.DefaultListModel;
- import com.sun.java.swing.ImageIcon;
- import java.awt.Component;
- import java.awt.Point;
- import java.awt.event.WindowEvent;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.sql.SQLException;
- import java.util.Enumeration;
- import java.util.Observable;
- import java.util.Vector;
-
- public class WizardModelDbQuery extends WizardModelAbstract {
- public static final String SUBWIZFINISHED = "_subwizfinished_";
- public static final String ERR_QUERY_NEVER_BUILT = "error.query_never_built";
- public static final String ERR_SPEC_SELECT = "error.spec_select";
- public static final String ERR_SPEC_FROM = "error.spec_from";
- public static final String ERR_QUERY_FAILED_REQD = "error.query_failed_reqd";
- public static final String ERR_QUERY_FAILED_ROW1 = "error.query_failed_row1";
- public static final String ERR_DUP_FIELDS = "error.dup_fields";
- public static final String ERR_HASSPACE_FIELDS = "error.hasspace_fields";
- public static final String ERR_QUERY_FAILED = "error.query_failed";
- public static final String ERR_UNSUPPORTED_FIELDS = "error.unsupported_fields";
- public static final String LBL_SECOND_INTROHEAD = "label.secondintrohead";
- public static final String LBL_SECOND_INTRO = "label.secondintro";
- private boolean _firstTime = true;
- private DefQuery _defQuery;
- private boolean _defExists = false;
- private DefConnection _defConn;
- private ResultSet _queryRS;
- // $FF: synthetic field
- static Class class$asp$wizard$WizardSubDbQuery;
- // $FF: synthetic field
- static Class class$asp$wizard$WVPanelDbQuery;
-
- public WizardModelDbQuery() {
- }
-
- public WizardModelDbQuery(Wizard wizard, String bullet, String info, ImageIcon icon, ExceptionHandler handler) {
- super(wizard, bullet, info, icon, handler);
- }
-
- protected WizardPageView getViewSingleInstance() {
- return WizardViewDbQuery.getInstance();
- }
-
- public void update(Observable o, Object arg) {
- if (o.getClass() == (class$asp$wizard$WizardSubDbQuery != null ? class$asp$wizard$WizardSubDbQuery : (class$asp$wizard$WizardSubDbQuery = class$("asp.wizard.WizardSubDbQuery")))) {
- if (arg == null) {
- this._firstTime = false;
- WizardViewDbQuery view = (WizardViewDbQuery)((WizardPage)this).getView();
- WizardSubDbQuery subwiz = WizardSubDbQuery.getInstance();
- view.setSelect(subwiz.getSelect());
- view.setFrom(subwiz.getFrom());
- view.setWhere(subwiz.getWhere());
- view.setOrderBy(subwiz.getOrderBy());
- } else if (arg instanceof WindowEvent && (((WindowEvent)arg).getID() == 201 || ((WindowEvent)arg).getID() == 202)) {
- WizardManager wm = ((WizardModelAbstract)this).getWizardManager();
- WizardSubDbQuery subwiz = (WizardSubDbQuery)o;
- WizardView view = ((Wizard)wm).getView();
- if (!((Component)view).isVisible()) {
- WizardView subwizview = ((Wizard)subwiz).getView();
- ((Component)view).setLocation(((Component)subwizview).getLocation());
- ((Component)view).setVisible(true);
- }
-
- ((Observable)subwiz).deleteObserver(this);
- }
- }
-
- WizardViewDbQuery view = (WizardViewDbQuery)((WizardPage)this).getView();
- view.updateControls(this.isFirstTime());
- }
-
- public void showSqlBuilder() {
- try {
- WizardSubDbQuery subwiz = WizardSubDbQuery.getInstance();
- WizardManager wm = ((WizardModelAbstract)this).getWizardManager();
- if (!((Wizard)subwiz).getView().isVisible()) {
- subwiz.setDefConnection(wm.getDefConnection(this));
- subwiz.initialize();
- Point mimiWizLoc = new Point(((Wizard)wm).getView().getLocation().x + 40, ((Wizard)wm).getView().getLocation().y + 40);
- ((Wizard)subwiz).getView().setLocation(mimiWizLoc);
- ((Wizard)subwiz).getView().setSize(540, 400);
- ((Observable)subwiz).addObserver(this);
- ((Wizard)subwiz).getView().setVisible(true);
- ((WizardPage)this).getView().repaint();
- }
- } catch (Exception e) {
- AspWizardExceptionHandler.showMessage(0, ((Throwable)e).getMessage());
- }
-
- }
-
- public boolean isFirstTime() {
- return this._firstTime;
- }
-
- public DefQuery getDefQuery() {
- if (this._defQuery == null) {
- this._defQuery = new DefQuery();
- String name = ((WizardModelAbstract)this).getDefPage().getUniqueNameFor(this._defQuery);
- this._defQuery.setName(name);
- WizardManager wm = ((WizardModelAbstract)this).getWizardManager();
- DefConnection defConn = null;
- if (wm != null) {
- defConn = wm.getDefConnection(this);
- }
-
- this._defQuery.setDefConnection(defConn);
- ((WizardModelAbstract)this).getDefPage().addElement(this._defQuery);
- }
-
- return this._defQuery;
- }
-
- void setDefQuery(DefQuery dq) {
- this._defQuery = dq;
- }
-
- public void commit() throws InternalError, ExternalError {
- boolean committed = false;
-
- try {
- WizardViewDbQuery view = (WizardViewDbQuery)((WizardPage)this).getView();
- DefQuery defQuery = this.getDefQuery();
- defQuery.setSelect(view.getSelect());
- defQuery.setFrom(view.getFrom());
- defQuery.setWhere(view.getWhere());
- defQuery.setOrderBy(view.getOrderBy());
- if (((WizardModelAbstract)this).getWizardManager().isUsePreviousQuery(this)) {
- defQuery.setUsePreviousQuery(0);
- } else {
- defQuery.setUsePreviousQuery(1);
- }
-
- defQuery.setDefConnection(this._defConn);
- defQuery.setResultSet(this._queryRS);
- committed = true;
- } finally {
- if (!committed && this._queryRS != null) {
- try {
- this._queryRS.close();
- } catch (SQLException e2) {
- System.err.println(((Throwable)e2).getMessage());
- this._queryRS = null;
- }
- }
-
- }
-
- }
-
- public void loadValues() {
- WizardViewDbQuery view = (WizardViewDbQuery)((WizardPage)this).getView();
- if (this._defQuery == null) {
- view.setSelect("");
- view.setFrom("");
- view.setWhere("");
- view.setOrderBy("");
- } else {
- view.setSelect(this._defQuery.getSelect());
- view.setFrom(this._defQuery.getFrom());
- view.setWhere(this._defQuery.getWhere());
- view.setOrderBy(this._defQuery.getOrderBy());
- }
-
- }
-
- public void loadView() {
- WizardSubDbQuery subwiz = WizardSubDbQuery.getInstance();
- subwiz.clearValues();
- this.loadValues();
- this.setupIntroText();
- WizardViewDbQuery view = (WizardViewDbQuery)((WizardPage)this).getView();
- view.updateControls(this.isFirstTime());
- }
-
- public void validate() throws InternalError, ExternalError {
- super.validate();
- WizardViewDbQuery view = (WizardViewDbQuery)((WizardPage)this).getView();
- if (this.isFirstTime()) {
- String msg = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "error.query_never_built");
- throw new ExternalError(msg);
- } else if (view.getSelect() != null && !view.getSelect().equals("")) {
- if (view.getFrom() != null && !view.getFrom().equals("")) {
- boolean validated = false;
-
- try {
- this._queryRS = null;
- Connection _conn = this.getConnection();
- WizDbManager WDBM = WizDbManager.getInstance();
- this._queryRS = WDBM.getResultSet(_conn, this.buildSQL());
- OrderedListModel lm = (OrderedListModel)WizDbManager.getFields(this._queryRS, false, new OrderedListModel());
- this.validateColumnHasNoSpace(lm);
- this.validateColumnUniqueness(lm);
- this.validateColumnTypes(this._queryRS);
- validated = true;
- } catch (EWizDbManager e) {
- String msg = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "error.query_failed_reqd");
- throw new ExternalError(msg + "\n\n" + ((Throwable)e).getMessage());
- } finally {
- if (!validated && this._queryRS != null) {
- try {
- this._queryRS.close();
- } catch (SQLException e2) {
- System.err.println(((Throwable)e2).getMessage());
- this._queryRS = null;
- }
- }
-
- }
-
- } else {
- String msg = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "error.spec_from");
- throw new ExternalError(msg);
- }
- } else {
- String msg = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "error.spec_select");
- throw new ExternalError(msg);
- }
- }
-
- public Connection getConnection() throws EWizDbManager {
- WizardManager WM = ((WizardModelAbstract)this).getWizardManager();
- this._defConn = WM.getDefConnection(this);
- WizDbManager WDBM = WizDbManager.getInstance();
- Connection conn = WDBM.getConnection(this._defConn.getDSNName(), this._defConn.getUserName(), this._defConn.getPassword());
- return conn;
- }
-
- public void validateColumnHasNoSpace(DefaultListModel lm) throws ExternalError {
- String fieldName = null;
- Enumeration e = lm.elements();
-
- while(e.hasMoreElements()) {
- fieldName = e.nextElement().toString();
- if (fieldName != null && fieldName.indexOf(" ") != -1) {
- String err = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "error.hasspace_fields");
- throw new ExternalError(err);
- }
- }
-
- }
-
- public void validateColumnUniqueness(OrderedListModel lm) throws ExternalError {
- String prevField = "";
- String newField = "";
- lm.setOrdered(true);
-
- for(Enumeration e = ((DefaultListModel)lm).elements(); e.hasMoreElements(); prevField = newField) {
- newField = e.nextElement().toString();
- if (prevField.compareTo(newField) == 0) {
- String err = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "error.dup_fields");
- throw new ExternalError(err + " " + prevField);
- }
- }
-
- }
-
- public void validateColumnTypes(ResultSet resultSet) throws ExternalError {
- try {
- ResultSetMetaData rsmd = resultSet.getMetaData();
- int columnCount = rsmd.getColumnCount();
- String typeName = null;
- Vector badColumns = new Vector();
-
- for(int i = 1; i <= columnCount; ++i) {
- typeName = WizDbManager.getDataTypeName(rsmd.getColumnType(i));
- if (typeName == null || typeName.equals("")) {
- badColumns.addElement(rsmd.getColumnName(i));
- }
- }
-
- int badCount = badColumns.size();
- if (badCount > 0) {
- StringBuffer sb = new StringBuffer();
-
- for(int i = 0; i < badCount; ++i) {
- sb.append(badColumns.elementAt(i).toString());
- if (i < badCount - 1) {
- sb.append(", ");
- }
- }
-
- String err = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "error.unsupported_fields");
- err = err + "\n\n" + sb.toString();
- throw new ExternalError(err);
- }
- } catch (SQLException e) {
- System.err.println(((Throwable)e).getMessage());
- }
-
- }
-
- public void testQuery() {
- try {
- Connection _conn = this.getConnection();
- WizDbManager WDBM = WizDbManager.getInstance();
- ResultSet rs = WDBM.getResultSet(_conn, this.buildSQL());
- SqlTableModelTestFrame testFrame = SqlTableModelTestFrame.getInstance();
- testFrame.update(rs);
- testFrame.setVisible(true);
- } catch (EWizDbManager e) {
- String err = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "error.query_failed");
- AspWizardExceptionHandler.showMessage(0, err + "\n\n" + ((Throwable)e).getMessage());
- }
-
- }
-
- public String buildSQL() {
- WizardViewDbQuery view = (WizardViewDbQuery)((WizardPage)this).getView();
- String SQLStr = "Select " + view.getSelect().trim();
- SQLStr = SQLStr + " From " + view.getFrom().trim();
- if (view.getWhere().trim().length() > 0) {
- SQLStr = SQLStr + " Where " + view.getWhere().trim();
- }
-
- if (view.getOrderBy().trim().length() > 0) {
- SQLStr = SQLStr + " Order By " + view.getOrderBy().trim();
- }
-
- return SQLStr;
- }
-
- public void setupIntroText() {
- WizardManager wm = ((WizardModelAbstract)this).getWizardManager();
- WizardPage modelConn = wm.getPreviousModel(this);
- WizardPage modelPrevQuery = wm.getModelOfClassLeftOf(this.getClass(), modelConn);
- boolean firstQueryModel = modelPrevQuery == null;
- WizardViewAbstract view = (WizardViewAbstract)((WizardPage)this).getView();
- if (firstQueryModel) {
- view.setIntroText((String)null, (String)null, true);
- } else {
- String head = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "label.secondintrohead");
- String text = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbQuery != null ? class$asp$wizard$WVPanelDbQuery : (class$asp$wizard$WVPanelDbQuery = class$("asp.wizard.WVPanelDbQuery")), "label.secondintro");
- view.setIntroText(head, text, false);
- }
-
- }
-
- // $FF: synthetic method
- static Class class$(String class$) {
- try {
- return Class.forName(class$);
- } catch (ClassNotFoundException forName) {
- throw new NoClassDefFoundError(((Throwable)forName).getMessage());
- }
- }
- }
-