com.ibm.as400.vaccess
Class SQLQueryBuilderPane

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--com.ibm.as400.vaccess.SQLQueryBuilderPane
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class SQLQueryBuilderPane
extends javax.swing.JComponent
implements java.io.Serializable

The SQLQueryBuilderPane class represents a panel which allows a user to dynamically build a SQL query using graphical interfaces. The corresponding SQL is generated.

Data for the GUI is retrieved from the system when load() is called. If load() is not called, the tables in the GUI will be empty.

If table names are provided, then the user is presented choices based on the fields within those tables. If userSelectTables is true, the user may modify the tables on which the query is built. tableSchemas and userSelectTableSchemas are used to determine the list of tables which the user can choose from, however the user is not prevented from using tables not in these schemas.

It is up to the user to register a JDBC driver when using this class. For example, the following code registers the AS/400 Toolbox for Java JDBC driver.

DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ());

Most errors are reported by firing ErrorEvents, rather than throwing exceptions. Users should listen for ErrorEvents in order to diagnose and recover from error conditions.

SQLQueryBuilderPane objects generate the following events:

// Register JDBC driver.
DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ());

// Set up table for result set contents.
final SQLConnection connection = new SQLConnection("jdbc:as400://MySystem");
final SQLQueryBuilderPane pane = new SQLQueryBuilderPane(connection);

// Set up window to hold table
JFrame frame = new JFrame ("My Window");
WindowListener l = new WindowAdapter()
{
// Close the pane when window is closed.
public void windowClosing(WindowEvent e)
{
pane.close();
connection.close();
}
};
frame.addWindowListener(l);

// Set up the error dialog adapter.
pane.addErrorListener (new ErrorDialogAdapter (frame));

// Add the component and get data from system.
frame.getContentPane().add(pane);
pane.load();

// Display the window
frame.setVisible(true)

See Also:
Serialized Form

Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SQLQueryBuilderPane()
          Constructs a SQLQueryBuilderPane object.
SQLQueryBuilderPane(SQLConnection connection)
          Constructs a SQLQueryBuilderPane object.
SQLQueryBuilderPane(SQLConnection connection, java.lang.String[] tables)
          Constructs a SQLQueryBuilderPane object.
 
Method Summary
 void addErrorListener(ErrorListener listener)
          Adds a listener to be notified when an error occurs.
 void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
          Adds a listener to be notified when the value of any bound property is changed.
 void addVetoableChangeListener(java.beans.VetoableChangeListener listener)
          Adds a listener to be notified when the value of any constrained property is changed.
 SQLConnection getConnection()
          Returns the SQL connection with which to access data for the GUI.
 java.lang.String getQuery()
          Returns the SQL query that corresponds to the user's selections.
 java.lang.String[] getTables()
          Returns the names of the tables used in the query.
 java.lang.String[] getTableSchemas()
          Returns the schemas for which the tables will be listed for inclusion in the query.
 boolean getUserSelectTables()
          Returns true if the user is able to select and change the tables that are included in the query.
 boolean getUserSelectTableSchemas()
          Returns true if the user is able to select and change the schemas for which tables are shown.
 void load()
          Gets data from the system.
 void removeErrorListener(ErrorListener listener)
          Removes a listener from being notified when an error occurs.
 void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
          Removes a listener from being notified when the value of any bound property is changed.
 void removeVetoableChangeListener(java.beans.VetoableChangeListener listener)
          Removes a listener from being notified when the value of any constrained property is changed.
 void setConnection(SQLConnection connection)
          Sets the SQL connection with which to access data for the GUI.
 void setTables(java.lang.String[] tables)
          Sets the table names for the query.
 void setTableSchemas(java.lang.String[] tableSchemas)
          Sets the schemas for which the tables will be listed for inclusion in the query.
 void setUserSelectTables(boolean flag)
          Sets whether the user will be able to select and change the tables that are included in the query.
 void setUserSelectTableSchemas(boolean flag)
          Sets whether the user will be able to select and change the schemas for which tables are shown.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getUIClassID, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SQLQueryBuilderPane

public SQLQueryBuilderPane()
Constructs a SQLQueryBuilderPane object.

SQLQueryBuilderPane

public SQLQueryBuilderPane(SQLConnection connection)
Constructs a SQLQueryBuilderPane object.
Parameters:
connection - The SQL connection.

SQLQueryBuilderPane

public SQLQueryBuilderPane(SQLConnection connection,
                           java.lang.String[] tables)
Constructs a SQLQueryBuilderPane object.
Parameters:
connection - The SQL connection.
tables - The names of the tables to be used for the query. Tables should be in the form of schema.table.
Method Detail

addErrorListener

public void addErrorListener(ErrorListener listener)
Adds a listener to be notified when an error occurs. The listener's errorOccurred() method will be called.
Parameters:
listener - The listener.

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Adds a listener to be notified when the value of any bound property is changed. The listener's propertyChange() method will be called.
Overrides:
addPropertyChangeListener in class javax.swing.JComponent
Parameters:
listener - The listener.

addVetoableChangeListener

public void addVetoableChangeListener(java.beans.VetoableChangeListener listener)
Adds a listener to be notified when the value of any constrained property is changed. The listener's vetoableChange() method will be called.
Overrides:
addVetoableChangeListener in class javax.swing.JComponent
Parameters:
listener - The listener.

getConnection

public SQLConnection getConnection()
Returns the SQL connection with which to access data for the GUI.
Returns:
The SQL connection.

getQuery

public java.lang.String getQuery()
Returns the SQL query that corresponds to the user's selections. An empty String is returned if no tables have been selected.
Returns:
The SQL query that corresponds to the user's selections.

getTables

public java.lang.String[] getTables()
Returns the names of the tables used in the query.
Returns:
The table names.

getTableSchemas

public java.lang.String[] getTableSchemas()
Returns the schemas for which the tables will be listed for inclusion in the query.
Returns:
The schema names.

getUserSelectTables

public boolean getUserSelectTables()
Returns true if the user is able to select and change the tables that are included in the query. This property controls when the table page is enabled or disabled. The default value is true.
Returns:
true if the user is allowed to change the tables in the query; false otherwise.

getUserSelectTableSchemas

public boolean getUserSelectTableSchemas()
Returns true if the user is able to select and change the schemas for which tables are shown. This property controls whether the list of tables on the table page is changeable. The default value is true.
Returns:
true if the user is allowed to change the schemas whose tables are shown; false otherwise.

load

public void load()
Gets data from the system. If the connection is null, the AS/400 JDBC driver will be used, and the user will be prompted for sign-on information.

removeErrorListener

public void removeErrorListener(ErrorListener listener)
Removes a listener from being notified when an error occurs.
Parameters:
listener - The listener.

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Removes a listener from being notified when the value of any bound property is changed.
Overrides:
removePropertyChangeListener in class javax.swing.JComponent
Parameters:
listener - The listener.

removeVetoableChangeListener

public void removeVetoableChangeListener(java.beans.VetoableChangeListener listener)
Removes a listener from being notified when the value of any constrained property is changed.
Overrides:
removeVetoableChangeListener in class javax.swing.JComponent
Parameters:
listener - The listener.

setConnection

public void setConnection(SQLConnection connection)
                   throws java.beans.PropertyVetoException
Sets the SQL connection with which to access data for the GUI. This property is bound and constrained. Note that the data in the GUI will not change until a load() is done.
Parameters:
connection - The SQL connection.
Throws:
java.beans.PropertyVetoException - If the change is vetoed.

setTables

public void setTables(java.lang.String[] tables)
               throws java.beans.PropertyVetoException
Sets the table names for the query. This property is bound and constrained. Note that the data in the GUI will not change until a load() is done.
Parameters:
tables - The names of the tables used in the query. Tables should be in the form of schema.table.
Throws:
java.beans.PropertyVetoException - If the change is vetoed.

setTableSchemas

public void setTableSchemas(java.lang.String[] tableSchemas)
                     throws java.beans.PropertyVetoException
Sets the schemas for which the tables will be listed for inclusion in the query. The default is no schemas, so no tables will be listed. This property is bound and constrained.
Parameters:
schemas - The schemas for which tables will be listed.
Throws:
java.beans.PropertyVetoException - If the change is vetoed.

setUserSelectTables

public void setUserSelectTables(boolean flag)
                         throws java.beans.PropertyVetoException
Sets whether the user will be able to select and change the tables that are included in the query. This property controls when the table page is enabled or disabled. The default value is true. This property is bound and constrained.
Parameters:
flag - true if the user is allowed to change the tables in the query; false otherwise.
Throws:
java.beans.PropertyVetoException - If the change is vetoed.

setUserSelectTableSchemas

public void setUserSelectTableSchemas(boolean flag)
                               throws java.beans.PropertyVetoException
Sets whether the user will be able to select and change the schemas for which tables are shown. This property controls whether the list of tables on the table page is changeable. The default value is true. This property is bound and constrained.
Parameters:
flag - true if the user is allowed to change the schemas whose tables are shown; false otherwise.
Throws:
java.beans.PropertyVetoException - If the change is vetoed.