package myapp; import java.io.IOException; import java.text.ParseException; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.appengine.api.users.UserService; import com.google.appengine.api.users.UserServiceFactory; public class RenewServlet extends HttpServlet { /** * */ private static final long serialVersionUID = -330119396067396L; @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); // check if we are only rechecking a single card String card_filter = req.getParameter("card_number"); String email = req.getParameter("email"); String vacationEndsString = req.getParameter("vacation_ends"); Date vacationEnds = null; if(vacationEndsString != null) { try { vacationEnds = Util.simpleDate.parse(vacationEndsString); } catch (ParseException e) { System.out.printf("ParseException: %s", e.toString()); e.printStackTrace(); } } UserService userService = UserServiceFactory.getUserService(); User user = null; List<LibraryCard> cards = null; if(userService.isUserLoggedIn()) { if(!userService.isUserAdmin() || email == null) { email = userService.getCurrentUser().getEmail().toLowerCase(); } user = User.find(email); if(user == null) { System.err.printf("email '%s' not found; aborting\n", email); return; } System.out.printf("Renewing items for user '%s'\n", user.email); } if(card_filter != null) { if(user != null) { cards = new ArrayList<LibraryCard>(1); LibraryCard card = user.getLibraryCard(card_filter); if(card == null) { System.err.printf("card '%s' not found for user '%s'; aborting\n", card_filter, user.email); return; } cards.add(card); } else { System.err.println("card_filter is only supported when logged in."); return; } } else { if(user != null) { cards = user.getLibraryCards(); } else { cards = LibraryCard.getAll(); } } if(cards == null || cards.isEmpty()) { resp.getWriter().printf("No library cards have been added.\n"); } else { for(LibraryCard card : cards) { System.out.printf("Renewing items for %s (%s)\n", card.user.get().email, card.card_number); resp.getWriter().printf("Renewing items for %s (%s)\n", card.user.get().email, card.card_number); LibraryRenewer.renew(card, false, vacationEnds, resp); } } } }