public void doReturnDVD(StaffData staff_data, CustomerData customer_data, DVDData DVD_data) {
    if (staff_data.getID() == 0 || customer_data.getID() == 0 || DVD_data.getID() == 0) {
      setMessage("Enter staff, customer and DVD IDs first");
      return;
    }

    try {
      // populate objects...
      staff_data = getStaffManager().findStaff(staff_data.getID());
      customer_data = getCustomerManager().findCustomer(customer_data.getID());
      DVD_data = getDVDManager().findDVD(DVD_data.getID());

      // has customer rented this DVD?
      RentalData rental_data =
          getRentalManager().findRental(customer_data.getID(), DVD_data.getID(), null);
      if (rental_data == null || !rental_data.getReturned().equals("null"))
        setMessage("This DVD not rented by this customer!");
      else {
        try {
          // begin transaction...
          DVDStoreFactory.getInstance().begin();

          rental_data.setReturned(DVDStoreFactory.getTodayDate());
          getRentalManager().returnDVD(rental_data);
          DVD_data.setNumCopies(DVD_data.getNumCopies() + 1);
          getDVDManager().updateDVD(DVD_data);

          // need to commit transaction...

          DVDStoreFactory.getInstance().commit();

          setMessage("Returned DVD");

        } catch (Exception e) {
          setMessage("Couldn't return DVD: exception " + e);
          try {
            // need to rollback transaction
            DVDStoreFactory.getInstance().rollback();
          } catch (Exception e2) {
            setMessage("Couldn't rollback transaction: exception " + e);
          }
        }
      }
    } catch (Exception e) {
      setMessage("couldn't check DVD record: " + e);
    }
  }
  public void doRentDVD(StaffData staff_data, CustomerData customer_data, DVDData DVD_data) {
    if (staff_data.getID() == 0 || customer_data.getID() == 0 || DVD_data.getID() == 0) {
      setMessage("Enter staff, customer and DVD IDs first");
      return;
    }

    try {
      // populate objects
      staff_data = getStaffManager().findStaff(staff_data.getID());
      customer_data = getCustomerManager().findCustomer(customer_data.getID());
      DVD_data = getDVDManager().findDVD(DVD_data.getID());

      // has customer asked for this DVD??
      RentalData rental =
          getRentalManager().findRental(customer_data.getID(), DVD_data.getID(), null);
      if (rental != null) {
        if (rental.getDispatched() != null && !rental.getDispatched().equals("null")) {
          setMessage("Already dispatched to customer on " + rental.getDispatched());
          return;
        }

        try {

          // need to do begin transaction...
          DVDStoreFactory.getInstance().begin();

          // indicate sent to customer & by whom
          rental.setStaffID(staff_data.getID());
          rental.setDispatched(DVDStoreFactory.getTodayDate());
          getRentalManager().dispatchDVD(rental);

          // indicate number of copies available now reduced by 1 - should change to do on REQUEST
          // !!!

          DVD_data.setNumCopies(DVD_data.getNumCopies() - 1);
          getDVDManager().updateDVD(DVD_data);

          // need to do commit transaction...
          DVDStoreFactory.getInstance().commit();

          setMessage("Rented DVD");

        } catch (Exception e) {
          setMessage("Couldn't rent DVD: exception: " + e);
          try {
            // need to do rollback of transaction...
            DVDStoreFactory.getInstance().rollback();

          } catch (Exception e2) {
            setMessage("*** Couldn't roll back transaction: " + e);
          }
        }
      } else setMessage("This DVD not requested by customer!");
    } catch (Exception e) {
      setMessage("Couldn't check DVD: exception:" + e);
    }
  }