📄 midpservice.java
字号:
serverError(rev); } } } } // Parameters: username, password void loginUser(DataOutputStream out, StringTokenizer params) throws MIDPException { try { String username = params.nextToken(); String password = params.nextToken(); Customer c = findCustomerEJB(username); CustomerInformation ci = c.getInformation(); if (!password.equals(ci.getPassword())) { throw new MIDPException(PASSWORD_INCORRECT_ERROR); } customerInfo = ci; out.writeUTF(sessionURL); } catch (FinderException fe) { throw new MIDPException(USER_NOT_FOUND_ERROR); } catch (Exception e) { serverError(e); } } // Parameters: <none> void displayMovies(DataOutputStream out, StringTokenizer params) throws MIDPException { try { List movies = movieInfo.getMovies(customerInfo.getZipCode()); out.writeInt(movies.size()); for (int i = 0; i < movies.size(); i++) { Movie movie = (Movie) movies.get(i); out.writeInt(movie.getID()); out.writeUTF(movie.getTitle()); out.writeUTF(movie.getRating()); out.writeUTF(movie.getPosterURL()); } } catch (Exception e) { serverError(e); } } // Parameters: movieID void displayLocations(DataOutputStream out, StringTokenizer params) throws MIDPException { try { int movieID = Integer.parseInt(params.nextToken()); List locations = movieInfo.getLocations(customerInfo.getZipCode(), movieID); out.writeInt(locations.size()); for (int i = 0; i < locations.size(); i++) { Location location = (Location) locations.get(i); out.writeInt(location.getID()); out.writeUTF(location.getLocation()); } } catch (Exception e) { serverError(e); } } // Parameters: movieID, locationID void displayShowtimes(DataOutputStream out, StringTokenizer params) throws MIDPException { try { int movieID = Integer.parseInt(params.nextToken()); int locationID = Integer.parseInt(params.nextToken()); List showtimes = movieInfo.getShowtimes(movieID, locationID); out.writeInt(showtimes.size()); for (int i = 0; i < showtimes.size(); i++) { Showtime showtime = (Showtime) showtimes.get(i); out.writeInt(showtime.getID()); out.writeUTF(showtime.getShowtime()); } } catch (Exception e) { serverError(e); } } // Parameters: showID void displaySeatingPlan(DataOutputStream out, StringTokenizer params) throws MIDPException { try { int showID = Integer.parseInt(params.nextToken()); if (ticketSales != null) { ticketSales.cancelSeats(); } ticketSales = createTicketSalesEJB(customerInfo.getUsername(), showID); SeatingPlan sp = ticketSales.getSeatingPlan(); out.write((byte)sp.getRowCount()); out.write((byte)sp.getRowLength()); byte[] seats = sp.getSeatData(); out.write(seats); } catch (Exception e) { serverError(e); } } // Parameters: showID, row1, seat1, ..., rowN, seatN void reserveSeats(DataOutputStream out, StringTokenizer params) throws MIDPException { try { Set seats = new HashSet(); while (params.hasMoreTokens()) { seats.add(new Seat(Integer.parseInt(params.nextToken()), Integer.parseInt(params.nextToken()))); } ticketSales.reserveSeats(seats); } catch (UnavailableSeatsException use) { throw new MIDPException(UNAVAILABLE_SEATS_ERROR); } catch (Exception e) { serverError(e); } } // Parameters: creditCard void confirmSeats(DataOutputStream out, StringTokenizer params) throws MIDPException { int creditCard = Integer.parseInt(params.nextToken()); try { ticketSales.confirmSeats(); } catch (Exception e) { serverError(e); } finally { if (ticketSales != null) { try { ticketSales.remove(); ticketSales = null; } catch (RemoteException rem) { serverError(rem); } catch (RemoveException rev) { serverError(rev); } } } } // Parameters: <none> void cancelSeats(DataOutputStream out, StringTokenizer params) throws MIDPException { try { ticketSales.cancelSeats(); } catch (Exception e) { serverError(e); } finally { if (ticketSales != null) { try { ticketSales.remove(); ticketSales = null; } catch (RemoteException rem) { serverError(rem); } catch (RemoveException rev) { serverError(rev); } } } } // EJB helper methods /* * Helper method to instantiate a MovieInfoEJB. */ MovieInfo createMovieInfoEJB() throws CreateException, NamingException, RemoteException { MovieInfoHome home = (MovieInfoHome) PortableRemoteObject .narrow(new InitialContext() .lookup("java:comp/env/ejb/MovieInfo"), MovieInfoHome.class); return (MovieInfo) home.create(); } /* * Helper method to instantiate a LocaleInfoEJB. */ LocaleInfo createLocaleInfoEJB() throws CreateException, NamingException, RemoteException { LocaleInfoHome home = (LocaleInfoHome) PortableRemoteObject .narrow(new InitialContext() .lookup("java:comp/env/ejb/LocaleInfo"), LocaleInfoHome.class); return (LocaleInfo) home.create(); } /* * Helper method to find TicketSales for the given show. */ TicketSales createTicketSalesEJB(String customerID, int showID) throws CreateException, NamingException, RemoteException { TicketSalesHome home = (TicketSalesHome) PortableRemoteObject .narrow(new InitialContext() .lookup("java:comp/env/ejb/TicketSales"), TicketSalesHome.class); return (TicketSales) home.create(customerID, showID); } /* * Helper method to create a new Customer. */ Customer createCustomerEJB(String username, String password, String zipCode, String creditCard) throws CreateException, DuplicateKeyException, NamingException, RemoteException { CustomerHome home = (CustomerHome) PortableRemoteObject .narrow(new InitialContext() .lookup("java:comp/env/ejb/Customer"), CustomerHome.class); return (Customer) home.create(username, password, zipCode, creditCard); } /* * Helper method to find a Customer by his or her username. */ Customer findCustomerEJB(String username) throws FinderException, NamingException, RemoteException { CustomerHome home = (CustomerHome) PortableRemoteObject .narrow(new InitialContext() .lookup("java:comp/env/ejb/Customer"), CustomerHome.class); return (Customer) home.findByPrimaryKey(username); } /* * Some unexpected server error has occurred. */ private void serverError(Exception e) throws MIDPException { System.err.println("[TRACE]: Server error: " + e); e.printStackTrace(); throw new MIDPException(SERVER_ERROR); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -