@Override
    public void deleteGuest(Guest guest) {
        if(guest == null) {
            throw new IllegalArgumentException("Guest is null");
        }
        if(guest.getId() == null) {
            throw new IllegalArgumentException("Id of guest is null");
        }
        if(guest.getId() <= 0) {
            throw new IllegalArgumentException("Id of guest must be positive");
        }
        
        try {
            getGuestById(guest.getId());
        } catch(IllegalArgumentException ex) {
            throw new IllegalArgumentException("Guest does not exist");
        }
        
        Connection conn = null;
        PreparedStatement st = null;
        try {
            conn = dataSource.getConnection();
                //set AutoComit to off and closeQuietly se it on on
            conn.setAutoCommit(false);
            st = conn.prepareStatement("DELETE FROM guest WHERE id = ?");
            st.setLong(1, guest.getId());
            int delteRow = st.executeUpdate();
            
            if(delteRow != 1 ){
                throw new ServiceFailureException("Internal Error: More rows( deletedRows:"+ delteRow + ") "
                        + "deleted when trying to delete guest " + guest);
            }
            
            conn.commit();
        } catch(SQLException ex) {
            String msg = "Errow when deleting guest";
            logger.log(Level.SEVERE, msg, ex);
            throw new ServiceFailureException(msg, ex);
        } finally {
            DBUtils.doRollbackQuietly(conn);
            DBUtils.closeQuietly(conn, st);
        }
    }