rendered paste body 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()); }
}