package control;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Pattern;
import javax.security.auth.login.AccountException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.awt.windows.ThemeReader;
import model.*;
/**
* Servlet implementation class control
*/
@WebServlet("/control")
public class control extends HttpServlet {
private static final long serialVersionUID = 1L;
MovieList movielist = new MovieList();
ShowList showlist = new ShowList();
OrderList orderlist = new OrderList();
Movie movie;
MovieCopy movie2;
User user;
Boolean user_login = false;
Boolean manager_login = false;
MovieManager moviemanager = new MovieManager();
UserManager usermanager = new UserManager();
CommentManager commentmanager = new CommentManager();
ShowManage showmanager = new ShowManage();
CinemaManage cinemamanager = new CinemaManage();
OrderManager orderManager = new OrderManager();
MailManager mailManager = new MailManager();
/**
* @see HttpServlet#HttpServlet()
*/
public control() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
if (action == null) {
movielist = moviemanager.findAll(); // return all movie in
MovieList nowShowlist = new MovieList();
nowShowlist = Tool.getNowShowing(movielist);
ArrayList<MovieCopy> comIngSoon = new ArrayList<MovieCopy>();
comIngSoon = Tool.getComingSoon(movielist);
request.getSession().setAttribute("showing", nowShowlist);
request.getSession().setAttribute("coming", comIngSoon);
RequestDispatcher view = request
.getRequestDispatcher("welcome.jsp");
view.forward(request, response);
}
else if (action.equals("fromlink")) {
String uname = request.getParameter("user_name");
user = usermanager.returnRole(uname);
request.getSession().setAttribute("user", user);
user_login = true;
manager_login = false;
RequestDispatcher view = request.getRequestDispatcher("profile.jsp");
view.forward(request, response);
}
// not logged in, go login
else if (!user_login && !manager_login) {
response.sendRedirect("login.jsp");
} else if (user_login) {
// user action
if (action.equals("userprofile")) {
request.getSession().setAttribute("user", user);
RequestDispatcher view = request
.getRequestDispatcher("profile.jsp");
view.forward(request, response);
} else if (action.equals("usersearch")) {
String keywords = request.getParameter("keywords");
movielist = moviemanager.findSpecial(keywords);
request.getSession().setAttribute("searchlist", movielist);
request.getSession().setAttribute("listsize", movielist.size());
RequestDispatcher view = request
.getRequestDispatcher("user_result.jsp");
view.forward(request, response);
} else if (action.equals("detail")) {
int pos = Integer.parseInt(request.getParameter("pos"));
movie = movielist.get(pos);
request.getSession().setAttribute("movie", movie);
Boolean released = new java.util.Date().after(movie
.getRelaseDate());
request.getSession().setAttribute("released", released);
CommentList commentlist = commentmanager
.findSpecialMovie(movie);
request.getSession().setAttribute("commentlist", commentlist);
// System.out.println(commentlist.get(0).getReviews());
request.getSession().setAttribute("commentsize",
commentlist.size());
ArrayList<String> cinemas = showmanager.findcinema(movie);
cinemas = Tool.removeDupLocation(cinemas);
request.getSession().setAttribute("cinemas", cinemas);
request.getSession()
.setAttribute("cinemassize", cinemas.size());
RequestDispatcher view = request
.getRequestDispatcher("detail.jsp");
view.forward(request, response);
}
else if (action.equals("findtime")) {
String cinema = request.getParameter("cinema");
String date = request.getParameter("date");
request.getSession().setAttribute("empty_date", false);
request.getSession().setAttribute("invalid_date", false);
if (date.equals("")) {
request.getSession().setAttribute("empty_date", true);
} else {
String date_format = "yyyy-MM-dd";
try {
SimpleDateFormat df = new SimpleDateFormat(date_format);
df.setLenient(false);
df.parse(date);
showlist = showmanager.showAllTime(date, cinema,
movie.getTitle());
request.getSession().setAttribute("showlist", showlist);
// request.getSession().setAttribute("foundlist",true);
request.getSession().setAttribute("timesize",
showlist.size());
// return true;
} catch (Exception e) {
request.getSession().setAttribute("invalid_date", true);
}
}
RequestDispatcher view = request
.getRequestDispatcher("booking.jsp");
view.forward(request, response);
} else if (action.equals("userbookings")) {
orderlist = orderManager.returnOrder(user);
System.out.println(orderlist.size());
request.getSession().setAttribute("orderlist", orderlist);
request.getSession().setAttribute("ordersize", orderlist.size());
RequestDispatcher view = request
.getRequestDispatcher("user_record.jsp");
view.forward(request, response);
}
} else if (manager_login) {
// manager action
if (action.equals("manager_search")) {
String keywords = request.getParameter("keywords");
movielist = moviemanager.findSpecialOwner(keywords);
request.getSession().setAttribute("searchlist", movielist);
request.getSession().setAttribute("listsize", movielist.size());
RequestDispatcher view = request
.getRequestDispatcher("manager_result.jsp");
view.forward(request, response);
}
else if (action.equals("addone")) {
//System.out.println("here");
int pos = Integer.parseInt(request.getParameter("pos"));
movie = movielist.get(pos);
request.getSession().setAttribute("movie", movie);
CinemaList cinemalist = cinemamanager.findall();
request.getSession().setAttribute("cinemalist", cinemalist);
RequestDispatcher view = request
.getRequestDispatcher("addtime.jsp");
view.forward(request, response);
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
// user_login = (Boolean)
// request.getSession().getAttribute("user_login");
if (action.equals("register")) {
String user_name = request.getParameter("user_name");
String password = request.getParameter("password");
String email = request.getParameter("email");
request.getSession().setAttribute("registered", true);
request.getSession().setAttribute("wrong_name", false);
request.getSession().setAttribute("duplicate_name", false);
request.getSession().setAttribute("empty_pass", false);
request.getSession().setAttribute("empty_email", false);
if (password.equals("")) {
request.getSession().setAttribute("empty_pass", true);
request.getSession().setAttribute("registered", false);
}
if (email.equals("")
|| !Pattern.matches("^.+@\\w+.[\\.\\w]+$", email)) {
request.getSession().setAttribute("empty_email", true);
request.getSession().setAttribute("registered", false);
}
if (user_name.equals("") || !Pattern.matches("^[\\w]+$", user_name)) {
request.getSession().setAttribute(