/* * MapInsert.java * * Created on September 17, 2004, 10:14 AM */ /** * * @Rick Watson */ import java.sql.*; import java.awt.Dimension; public class MapInsert extends javax.swing.JFrame { // Database objects private Connection dbConnect; private Statement dbStatement; private ResultSet dbResultSet; private ResultSetMetaData dbResultSetMetaData; /** Creates new form mapInsert */ public MapInsert() { String driver = "com.mysql.jdbc.Driver"; String jdbc = "jdbc:mysql:"; String dbname = "//mistsql.terry.uga.edu:3306/MapCollection"; String username = "student"; String password = "student"; loadDriver(driver); connectDatabase(jdbc + dbname,username,password); autoCommit(false); initComponents(); } /** * Load the driver class */ public void loadDriver(String driver) { try { Class.forName(driver); } catch (ClassNotFoundException error) { System.out.println("Could not load driver "); System.exit(1); } } /** * Make a connection to a database */ public void connectDatabase(String db, String user, String password) { try { dbConnect = DriverManager.getConnection(db, user, password); } catch(SQLException error) { System.err.println("Error connecting to database: " + error.toString()); System.exit(2); } } /** * Setting autocommit to false */ public void autoCommit(boolean commit){ try { dbConnect.setAutoCommit(false); } catch (SQLException error){ System.out.println("Could not turn off autocommit"); System.exit(1); } } /** * Handling a rollback */ public void dbRollback(){ try { dbConnect.rollback(); System.out.println("Transaction rollback"); } catch (SQLException error){ System.out.println("Could not rollback"); System.exit(1); } } /** * Handling a commit */ public void dbCommit(){ try { dbConnect.commit(); System.out.println("Transaction commit"); } catch (SQLException error){ System.out.println("Could not commit"); System.exit(1); } } /** This method is called from within the constructor to * initialize the form. */ private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); jPanel4 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); mapList = new javax.swing.JList(); jLabel4 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); nationList = new javax.swing.JList(); jPanel3 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); getContentPane().setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); setTitle("Map data entry"); setBackground(new java.awt.Color(255, 255, 204)); setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR)); setFont(new java.awt.Font("Trebuchet MS", 0, 12)); setLocationRelativeTo(null); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); getAccessibleContext().setAccessibleDescription(""); jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel1.setBackground(new java.awt.Color(255, 255, 204)); jPanel1.setToolTipText("Enter a unique identifier"); jPanel1.setFont(new java.awt.Font("Trebuchet MS", 1, 12)); jPanel1.setMinimumSize(new java.awt.Dimension(31, 10)); jPanel1.setAutoscrolls(true); jLabel3.setText("Map identifier:"); jPanel1.add(jLabel3); jTextField2.setColumns(10); jTextField2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField2ActionPerformed(evt); } }); jPanel1.add(jTextField2); jLabel6.setForeground(new java.awt.Color(255, 255, 255)); jLabel6.setToolTipText("Must be an integer"); jPanel1.add(jLabel6); getContentPane().add(jPanel1); jPanel4.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel4.setBackground(new java.awt.Color(255, 255, 204)); jPanel4.setMinimumSize(new java.awt.Dimension(196, 16)); jLabel5.setText("Map scale:"); jPanel4.add(jLabel5); jTextField1.setHorizontalAlignment(javax.swing.JTextField.LEFT); jTextField1.setPreferredSize(new java.awt.Dimension(200, 22)); jTextField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField1ActionPerformed(evt); } }); jPanel4.add(jTextField1); jLabel1.setText("(e.g., enter 1:1000 as 1000)"); jPanel4.add(jLabel1); getContentPane().add(jPanel4); jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel2.setBackground(new java.awt.Color(255, 255, 204)); jLabel2.setText("Type:"); jLabel2.setVerticalAlignment(javax.swing.SwingConstants.TOP); jLabel2.setMinimumSize(new java.awt.Dimension(34, 8)); jPanel2.add(jLabel2); jScrollPane1.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jScrollPane1.setPreferredSize(new java.awt.Dimension(65, 60)); mapList.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); mapList.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Canal", "Rail", "Road" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); mapList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); mapList.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { mapListMouseClicked(evt); } }); jScrollPane1.setViewportView(mapList); jPanel2.add(jScrollPane1); jLabel4.setText("Country:"); jLabel4.setVerticalAlignment(javax.swing.SwingConstants.TOP); jPanel2.add(jLabel4); jScrollPane2.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jScrollPane2.setPreferredSize(new java.awt.Dimension(100, 110)); jScrollPane2.setAutoscrolls(true); nationList.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); nationList.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Austria", "Belgium", "France", "Germany", "Netherlands", "Switzerland" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); nationList.setPreferredSize(new java.awt.Dimension(3, 10)); nationList.setSelectionBackground(new java.awt.Color(180, 213, 213)); nationList.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { nationListMouseClicked(evt); } }); jScrollPane2.setViewportView(nationList); jPanel2.add(jScrollPane2); getContentPane().add(jPanel2); jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel3.setBackground(new java.awt.Color(255, 255, 204)); getContentPane().add(jPanel3); jButton1.setBackground(new java.awt.Color(255, 255, 204)); jButton1.setText("Add map"); jButton1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton1MouseClicked(evt); } }); getContentPane().add(jButton1); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-500)/2, (screenSize.height-250)/2, 500, 250); } private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { int mapId, mapScale; int[] selectedIndices; String sql, mapType, natCode; String nationCode[] = {"at","be","fr","de","nl","sh"}; /* nationCode in error for Switzerland to show referential integrity check */ boolean transOK, dataOK; mapId = 0; // initialize mapScale = 0; // initialize transOK = true; // initialize dataOK = true; // initialize // check mapId is integer try { mapId = Integer.parseInt(jTextField2.getText()); } catch(NumberFormatException error) { System.err.println("Map identifier not an integer"); dataOK = false; } // check mapScale is integer try { mapScale = Integer.parseInt(jTextField1.getText()); } catch(NumberFormatException error) { System.err.println("Map scale not an integer"); dataOK = false; } // errors for mapId or mapScale? if (! dataOK) { return; } // insert a map mapType = mapList.getSelectedValue().toString(); sql = "insert into map values (" + mapId + "," + mapScale + "," + "'" + mapType + "')"; try { dbStatement = dbConnect.createStatement(); int result = dbStatement.executeUpdate(sql); } catch(SQLException error) { System.err.println("Error inserting row: " + error.toString()); transOK = false; } // insert countries on map selectedIndices = nationList.getSelectedIndices(); int i = selectedIndices.length; for (int j = 0; j < i; j++ ){ natCode = nationCode[selectedIndices[j]]; sql = "insert into mapCountry values (" + mapId + "," + "'" + natCode + "')"; try { dbStatement = dbConnect.createStatement(); int result = dbStatement.executeUpdate(sql); } catch(SQLException error) { System.err.println("Error inserting row: " + error.toString()); transOK = false; } } // commit or rollback? if (transOK) { dbCommit();//all inserts successful } else { dbRollback(); //at least one insert failed } } private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void mapListMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: } private void nationListMouseClicked(java.awt.event.MouseEvent evt) { //System.out.println(nationList.getSelectedValues()); // TODO add your handling code here: } /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } /** * @param args the command line arguments */ public static void main(String args[]) { new MapInsert().show(); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JList mapList; private javax.swing.JList nationList; // End of variables declaration }