else if (evt.getSource() == addNewEntryButton) { if ( con == null ) { Print("Not connected."); return; } try { boolean dataIsValid = true; java.sql.Date deadlineOfDelivery = null; // calling for invalid formats if (idField.getText().length() != 0 ) { try { Integer.parseInt(idField.getText()); } catch (NumberFormatException n) { result.append("The ID field must contain an integer.\n"); dataIsValid = false; } } if ( dataIsValid ) { if ( !vehicleType.getText().equals("g") && !vehicleType.getText().equals("c") && !vehicleType.getText().equals("d") && !vehicleType.getText().equals("v") && !vehicleType.getText().equals("l") && !vehicleType.getText().equals("a") ) { result.append("The vehicle type must be either g, c, d, v, l or a.\n"); dataIsValid = false; } } if ( dataIsValid ) { try { Integer.parseInt(quantity.getText()); } catch (NumberFormatException n) { result.append("The quantity field must contain an integer.\n"); dataIsValid = false; } } if ( dataIsValid ) { dataIsValid = ( deadline.getText().matches("[0-9]{12}") || deadline.getText().length() == 0 ); if (!dataIsValid) result.append("The input string is not using the valid date format."); } if ( dataIsValid ) { if (deadline.getText().length() != 0) { try { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmm"); formatter.setLenient(false); deadlineOfDelivery = new java.sql.Date(formatter.parse(deadline.getText()).getTime()); } catch (ParseException e) { result.append("The date format is invalid.\n"); dataIsValid = false; } } } if ( dataIsValid ) { dataIsValid = !( origin.getText().length() == 0 || destination.getText().length() == 0 || description.getText().length() == 0 ); if ( !dataIsValid ) result.append("You cannot leave neither the description, the origin nor destination fields empty.\n"); } if ( dataIsValid ) { int vehicleID = Integer.parseInt(idField.getText()); String descr = description.getText(); String typeOfVehicle = vehicleType.getText(); int quantityOfOrder = Integer.parseInt(quantity.getText()); String whereItComesFrom = origin.getText(); String whereItGoesTo = destination.getText(); String commentOnDelivery = comments.getText(); PreparedStatement insertNewEntry = con.prepareStatement("INSERT INTO orders (id, description, vehicle_type, quantity, origin, destination, " + "deadline, comments) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?)"); PreparedStatement updateOldEntry = con.prepareStatement("UPDATE orders SET description = ?, vehicle_type = ?," + "quantity = ?, origin = ?, destination = ?, deadline = ?, comments = ? WHERE id = ?"); PreparedStatement insertDefDate = con.prepareStatement("INSERT INTO orders VALUES (?, ?, ?, ?, ?, ?, default, ?)"); PreparedStatement updateDefDate = con.prepareStatement("UPDATE orders SET description = ?, vehicle_type = ?," + "quantity = ?, origin = ?, destination = ?, deadline = default, comments = ? WHERE id = ?"); if ( idField.getText().length() == 0 ) { //there was no id input, so a new id is given and the entry is made Statement maxValQuery = con.createStatement(); con.setAutoCommit(false); ResultSet rs = maxValQuery.executeQuery("SELECT MAX(id) FROM orders"); vehicleID = rs.getInt(1); insertNewEntry.setInt(1, vehicleID); insertNewEntry.setString(2, descr); insertNewEntry.setString(3, typeOfVehicle); insertNewEntry.setInt(4, quantityOfOrder); insertNewEntry.setString(5, whereItComesFrom); insertNewEntry.setString(6, whereItGoesTo); insertNewEntry.setDate(7, deadlineOfDelivery); insertNewEntry.setString(8, commentOnDelivery); insertNewEntry.execute(); con.commit(); con.setAutoCommit(true); rs.close(); maxValQuery.close(); } else { // if an ID was given, it may even update or create a row Statement searchForID = con.createStatement(); ResultSet rs = searchForID.executeQuery("SELECT * FROM orders WHERE id = " + vehicleID); if (rs.next()) { // there was a line with such id updateOldEntry.setString(1, descr); updateOldEntry.setString(2, typeOfVehicle); updateOldEntry.setInt(3, quantityOfOrder); updateOldEntry.setString(4, whereItComesFrom); updateOldEntry.setString(5, whereItGoesTo); updateOldEntry.setDate(6, deadlineOfDelivery); updateOldEntry.setString(7, commentOnDelivery); updateOldEntry.setInt(8, vehicleID); updateOldEntry.executeUpdate(); } else { // new entry insertNewEntry.setInt(1, vehicleID); insertNewEntry.setString(2, descr); insertNewEntry.setString(3, typeOfVehicle); insertNewEntry.setInt(4, quantityOfOrder); insertNewEntry.setString(5, whereItComesFrom); insertNewEntry.setString(6, whereItGoesTo); insertNewEntry.setDate(7, deadlineOfDelivery); insertNewEntry.setString(8, commentOnDelivery); insertNewEntry.execute(); } } } } catch (SQLException e) { result.append(e.toString()); } }