import java.awt.*; import mlsoft.mct.*; import java.util.Vector; import java.sql.*; public class MainFrame extends Frame implements MlGridListener { private GlobalResources global; private GridBagLayout layout; private GridBagConstraints layoutConstraints; private DataGrid displayGrid; private Label displayLabel; private Label searchEditLabel; private UserInterface uiPanel; private Panel buttonPanel; private Button searchButton; private Button addButton; private Button modifyButton; private Button deleteButton; private Vector gridContents; private Connection jdbcConnection; private Statement sqlStatement; public MainFrame() { global = new GlobalResources(); defineGUI(); connectToDataSource(); gridContents = new Vector(); } public void connectToDataSource() { try { Class.forName(global.getDriverClassLocation()); System.out.println("Connecting to: " + global.getDataSourceName()); jdbcConnection = DriverManager.getConnection(global.getDataSourceName()); sqlStatement = jdbcConnection.createStatement(); } catch(Exception e) { System.out.println("There was an error connecting to the DataSource: " + e); } } public void defineGUI() { setTitle(global.getTitleBar()); setBackground(Color.lightGray); layout = new GridBagLayout(); layoutConstraints = new GridBagConstraints(); setLayout(layout); displayLabel = new Label(" Database Display"); displayLabel.setBackground(new Color (100,0,100)); displayLabel.setFont(new Font("Helvetica", Font.BOLD, 12)); displayLabel.setForeground(Color.white); layout.setConstraints(displayLabel, global.defineLayoutConstraints(0,0,4,1,0,0,1,1, GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTH, 5,5,5,5)); add(displayLabel); displayGrid = new DataGrid(global); displayGrid.addMlGridListener(this); layout.setConstraints(displayGrid, global.defineLayoutConstraints(0,1,4,4,1,1,1,1, GridBagConstraints.BOTH, GridBagConstraints.NORTH, 5,5,5,5)); add(displayGrid); searchEditLabel = new Label(" Search/Edit Database"); searchEditLabel.setBackground(new Color (100,0,100)); searchEditLabel.setFont(new Font("Helvetica", Font.BOLD, 12)); searchEditLabel.setForeground(Color.white); layout.setConstraints(searchEditLabel, global.defineLayoutConstraints(0,5,4,1,0,0,1,1, GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTH, 5,5,5,5)); add(searchEditLabel); uiPanel = new UserInterface(global); layout.setConstraints(uiPanel, global.defineLayoutConstraints(0,6,4,1,0,0,1,1, GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER, 5,5,5,5)); add(uiPanel); buttonPanel = new Panel(); layout.setConstraints(buttonPanel, global.defineLayoutConstraints(0,7,4,1,0,0,1,1, GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER, 5,5,5,5)); add(buttonPanel); searchButton = new Button(" Search "); buttonPanel.add(searchButton); addButton = new Button (" Add "); buttonPanel.add(addButton); modifyButton = new Button(" Modify "); buttonPanel.add(modifyButton); deleteButton = new Button(" Delete "); buttonPanel.add(deleteButton); } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); } else if (evt.target == modifyButton && evt.id == Event.ACTION_EVENT) { int rowNumber = displayGrid.getSelectedRow(); String row = (String) gridContents.elementAt(rowNumber); String updateSQL = "UPDATE " + global.getTableName() + " " + uiPanel.getSetClause() + " " + uiPanel.createWhereClauseExact(row); try { System.out.println("Updating database using: " + updateSQL); sqlStatement.executeUpdate(updateSQL); } catch (Exception e) { System.out.println("Update Error: " + e); } String insertString = uiPanel.getUserInputFieldValues(); gridContents.removeElementAt(rowNumber); displayGrid.removeRows(); gridContents.addElement(insertString); displayGrid.addRow(insertString); } else if (evt.target == deleteButton && evt.id == Event.ACTION_EVENT) { int rowNumber = displayGrid.getSelectedRow(); String deleteSQL = "DELETE FROM " + global.getTableName() + " " + uiPanel.getWhereClauseExact(); try { System.out.println("Deleting from database using: " + deleteSQL); sqlStatement.executeUpdate(deleteSQL); } catch (Exception e) { System.out.println("Deletion Error: " + e); } gridContents.removeElementAt(rowNumber); displayGrid.removeRows(); } else if (evt.target == addButton && evt.id == Event.ACTION_EVENT) { String insertString = uiPanel.getUserInputFieldValues(); gridContents.addElement(insertString); displayGrid.addRow(insertString); String addSQL = "INSERT INTO " + global.getTableName() + uiPanel.getInsertFieldList() + uiPanel.getInsertValueList(); try { System.out.println("Trying to Add with: " + addSQL); sqlStatement.executeUpdate(addSQL); } catch (SQLException e) { System.out.println("Problem with SQL: " + e); } } else if (evt.target == searchButton && evt.id == Event.ACTION_EVENT) { displayGrid.removeAllRows(); gridContents.removeAllElements(); ResultSet results; String searchSQL = "SELECT * FROM " + global.getTableName() + " " + uiPanel.getWhereClause(); try { System.out.println("Executing Search Query: " + searchSQL); results = sqlStatement.executeQuery(searchSQL); System.out.println("Got the Results for your search...now parsing the returned rows"); while (results.next()) { String insertString = ""; int counter; for (counter = 1; counter < global.getNumberOfFieldsInTable(); counter++) { insertString = insertString + results.getString(counter) + "|"; } insertString = insertString + results.getString(counter); gridContents.addElement(insertString); displayGrid.addRow(insertString); } } catch(Exception e) { System.out.println("Problem Running Search Query: " + e); } } return super.handleEvent(evt); } public void onGridEvent(MlGridEvent event) { if (event.id == MlGridEvent.SELECT_ROW) { int rowNumber = displayGrid.getSelectedRow(); String row = ""; if (rowNumber < displayGrid.getNumberOfRows()) { try { row = (String) gridContents.elementAt(rowNumber); } catch(Exception e) { System.out.println("Bad row number of " + rowNumber); } } Vector fields = global.parsePipeDelimitedLine(row); uiPanel.setUserInputFieldValues(fields); } } }