uk.org.ogsadai.client.databrowser.sql
Class DBResultSetView

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Window
                    |
                    +--java.awt.Frame
                          |
                          +--javax.swing.JFrame
                                |
                                +--uk.org.ogsadai.client.databrowser.sql.DBResultSetView
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.util.Observer, ResultView, javax.swing.RootPaneContainer, java.io.Serializable, javax.swing.WindowConstants

public class DBResultSetView
extends javax.swing.JFrame
implements ResultView

GUI displaying ResultSet data from the results of a query. View in MVC pattern, observes the model and displays the query results when updated. A new instance should be created for every new query. Once a query is completed it removes itself from observing the model so that it is not affected by future queries. Allows the data to be saved.

Version:
$Revision: 1.6 $
Author:
Paul J Graham, EPCC
See Also:
Serialized Form

Field Summary
private static java.lang.String COPYRIGHT_NOTICE
          Copyright statement
private static int HEADER_HEIGHT
           
private static int HEIGHT
           
private static int MAXHEIGHT
           
private static int MAXWIDTH
           
private  boolean mDataHasBeenSaved
           
private  java.util.Observable mObservable
           
private  javax.swing.JTable mTable
           
private static java.awt.Dimension SCREENSIZE
           
private static java.lang.String TITLE
           
private static int WIDTH
           
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Window
 
Fields inherited from class java.awt.Container
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, PROPERTIES, SOMEBITS
 
Constructor Summary
DBResultSetView(java.util.Observable model, javax.swing.JFrame parent)
          Constructs a GUI to display the results of a query in table format.
 
Method Summary
 boolean dataHasBeenSaved()
           
private  void displayResults(java.sql.ResultSet rs)
          Parse the query results into rows.
protected  void displayResults(java.util.Vector rows, java.util.Vector columnHeads)
          Display the results of the query in a table in the GUI
 void exit()
          Close this window (queries the user if data has not been saved).
private  java.util.Vector getNextRow(java.sql.ResultSet rs, java.sql.ResultSetMetaData rsmd)
          Extract an appropriately formatted row of data from the result set
 void saveAsCSV()
          Save the data in comma separated value format.
 void stopObserving()
          Stops this view observing the model.
 void update(java.util.Observable observable, java.lang.Object updatedObject)
           
private  void writeToFileAsCSV(java.io.File file)
          Writes the data to a file in comma separated value format
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setIconImage, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationRelativeTo, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

COPYRIGHT_NOTICE

private static final java.lang.String COPYRIGHT_NOTICE
Copyright statement

See Also:
Constant Field Values

SCREENSIZE

private static final java.awt.Dimension SCREENSIZE

WIDTH

private static final int WIDTH
See Also:
Constant Field Values

HEADER_HEIGHT

private static final int HEADER_HEIGHT
See Also:
Constant Field Values

HEIGHT

private static final int HEIGHT
See Also:
Constant Field Values

MAXWIDTH

private static final int MAXWIDTH

MAXHEIGHT

private static final int MAXHEIGHT

TITLE

private static final java.lang.String TITLE
See Also:
Constant Field Values

mTable

private javax.swing.JTable mTable

mObservable

private java.util.Observable mObservable

mDataHasBeenSaved

private boolean mDataHasBeenSaved
Constructor Detail

DBResultSetView

public DBResultSetView(java.util.Observable model,
                       javax.swing.JFrame parent)
Constructs a GUI to display the results of a query in table format.

Parameters:
model - The data model to observe
parent - The parent window of this frame
Method Detail

update

public void update(java.util.Observable observable,
                   java.lang.Object updatedObject)
Specified by:
update in interface java.util.Observer

displayResults

private void displayResults(java.sql.ResultSet rs)
Parse the query results into rows. Run as a GUIThread so the GUI remains responsive (for the progress monitor).

Parameters:
rs - The result set containing the query results

stopObserving

public void stopObserving()
Stops this view observing the model. Useful if there is an error elsewhere and we don't want this view to continue monitoring.

Specified by:
stopObserving in interface ResultView

displayResults

protected void displayResults(java.util.Vector rows,
                              java.util.Vector columnHeads)
Display the results of the query in a table in the GUI

Parameters:
rows - The rows of the table
columnHeads - The column heads (ie the names of the columns)

getNextRow

private java.util.Vector getNextRow(java.sql.ResultSet rs,
                                    java.sql.ResultSetMetaData rsmd)
                             throws java.sql.SQLException
Extract an appropriately formatted row of data from the result set

Parameters:
rs - Result set from the query
rsmd - Metadata about the result set
Returns:
The row of data
Throws:
java.sql.SQLException

saveAsCSV

public void saveAsCSV()
Save the data in comma separated value format.


writeToFileAsCSV

private void writeToFileAsCSV(java.io.File file)
Writes the data to a file in comma separated value format

Parameters:
file - The data will be written into this file

exit

public void exit()
Close this window (queries the user if data has not been saved).


dataHasBeenSaved

public boolean dataHasBeenSaved()
Returns:
true if the data has been saved