package aop.example;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import aop.example.model.AlbumList;
import aop.example.model.AnonymousUser;
import aop.example.model.Album;
import aop.example.model.User;

/**
 * Сервлет который удаляет/добавляет альбомы
 * @author Zubairov Renat
 */
public class ViewServlet extends HttpServlet {

	/**
	 * Empty constructor 
	 */
	public ViewServlet() {
		super();
	}
	
	/**
	 * Обрабатываем удаление/добавление альбомов
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
		// Получаем текущего пользователя, по умолчанию он анонимный
		AnonymousUser currentUser = (AnonymousUser) req.getSession().getAttribute(EntranceFilter.USER_KEY);
		// Получаем список доступных альбомов из сессии
		// в реальном приложении список храниться в БД
		AlbumList albums = (AlbumList)req.getSession().getAttribute("albums"); 
		// Обрабатываем удаление
		if (req.getParameter("delete") != null) {
			// Метод List.remove(Object) будет работать
			// т.к. мы переопределили операцию equals(Object) в классе Album
			albums.deleteAlbum( albums.getAlbumByTitle(req.getParameter("delete")));
		}
		// Обрабатываем добавление
		if ((req.getParameter("newAlbum") != null) && (currentUser instanceof User)) {
			// Добавляем новый альбом
			albums.addAlbum(new Album((User)currentUser, req.getParameter("newAlbum").toString()));
		}
		// Hа view.vm
		getServletContext().getRequestDispatcher("view.vm").forward(req, resp);
	}

}
