Package com.tubeonfire.controller

Source Code of com.tubeonfire.controller.PlaylistController

package com.tubeonfire.controller;

import java.io.IOException;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;

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

import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
import com.google.appengine.api.datastore.Text;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import com.tubeonfire.entity.Playlist;
import com.tubeonfire.entity.Tube;
import com.tubeonfire.model.PlaylistModel;
import com.tubeonfire.model.TubeModel;
import com.tubeonfire.util.StringHelper;

public class PlaylistController extends HttpServlet {
  private static final long serialVersionUID = 1L;
  private BlobstoreService blobstoreService = BlobstoreServiceFactory
      .getBlobstoreService();

  protected void doGet(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    String path = ((HttpServletRequest) request).getRequestURI();
    String action = "";
    String[] splittedURI = path.split("/");
    // if length = 3, this is for action request.
    if (splittedURI.length == 3) {
      action = splittedURI[splittedURI.length - 1];
      System.out.println("Do action : " + action);
      // create new playlist, return create page.
      if (action.equalsIgnoreCase("create")) {
        if (user != null) {
          request.getRequestDispatcher("/playlist_create.jsp")
              .forward(request, response);
        } else {
          response.getWriter().println("User's not login.");
        }
      }
      // return playlist manager page.
      else if (action.equalsIgnoreCase("manager")) {
        if (user != null) {
          List<Playlist> result = PlaylistModel.getByUserId(user
              .getUserId());
          if (result.size() > 0) {
            request.setAttribute("result", result);
            request.getRequestDispatcher("/playlist_manager.jsp")
                .forward(request, response);
          } else {
            response.getWriter().println("User have no playlist.");
          }
        } else {
          response.getWriter().println("User's not login.");
        }
      }
      // delete playlist, return manager page.
      else if (action.equalsIgnoreCase("delete")) {
        if (user != null) {
          String pid = request.getParameter("id");
          Playlist pl = PlaylistModel.getById(pid);
          if (pl.getUserFederatedId().equals(user.getUserId())) {
            pl.setStatus(4);
            PlaylistModel.update(pl);
            PlaylistModel.closePM();
            response.sendRedirect("/playlist/manager");
          } else {
            response.getWriter().println(
                "You don't have permission to do this action.");
          }
        } else {
          response.getWriter().println("User's not login.");
        }

      }
      // add video to playlist.
      else if (action.equalsIgnoreCase("add")) {
        if (request.getParameter("playlist_id") != null
            && request.getParameter("video_id") != null) {
          Playlist plToAdd = PlaylistModel.getById(request
              .getParameter("playlist_id"));
          Tube tub = TubeModel.getByTubeId(request
              .getParameter("video_id"));
          if (tub != null && plToAdd != null) {
            List<Text> listTube = new ArrayList<Text>();
            if (plToAdd.getListTubes().size() > 0) {
              listTube = plToAdd.getListTubes();
            }
            Text tmpText = new Text(tub.toString());
            for (int i = 0; i < listTube.size(); i++) {
              if (listTube.get(i).equals(tmpText)) {
                listTube.remove(i);
                break;
              }
            }
            listTube.add(new Text(tub.toString()));
            plToAdd.setListTubes(listTube);
            PlaylistModel.update(plToAdd);
            PlaylistModel.closePM();
            System.out.println("Ok, video added to playlist");
          } else {
            response.getWriter().println(
                "Cannot add video to playlist.");
          }
        } else {
          response.getWriter().println(
              "Cannot add video to playlist.");
        }
      }
      // edit playlist.
      else if (action.equalsIgnoreCase("edit")) {
        if (user != null) {
          String pid = request.getParameter("id");
          Playlist pl = PlaylistModel.getById(pid);
          if (pl.getUserFederatedId().equals(user.getUserId())) {
            request.setAttribute("result", pl);
            request.getRequestDispatcher("/playlist_edit.jsp")
                .forward(request, response);
          } else {
            response.getWriter()
                .println(
                    "You don't have permission to delete this playlist.");
          }
        } else {
          response.getWriter().println("User's not login.");
        }
      }
      // edit videos in playlist.
      else if (action.equalsIgnoreCase("edit_videos")) {
        if (user != null) {
          String pid = request.getParameter("id");
          Playlist pl = PlaylistModel.getById(pid);
          if (pl.getUserFederatedId().equals(user.getUserId())) {
            request.setAttribute("result", pl);
            request.getRequestDispatcher(
                "/playlist_edit_videos.jsp").forward(request,
                response);
          } else {
            response.getWriter()
                .println(
                    "You don't have permission to delete this playlist.");
          }
        } else {
          response.getWriter().println("User's not login.");
        }
      }
      // remove clip from a playlist.
      else if (action.equalsIgnoreCase("remove_clip")) {
        if (user != null) {
          String id = request.getParameter("id");
          String pId = request.getParameter("pId");
          System.out.println(id);
          System.out.println(pId);
          Tube tub = TubeModel.getByTubeId(id);
          Playlist pl = PlaylistModel.getById(pId);
          if (pl != null && tub != null
              && pl.getUserFederatedId().equals(user.getUserId())) {
            List<Text> newVideos = pl.getListTubes();
            for (int i = 0; i < newVideos.size(); i++) {
              Tube exitTub = new Tube();
              exitTub.transformString(newVideos.get(i).getValue());
              if (tub.getTubeId().equalsIgnoreCase(
                  exitTub.getTubeId())) {
                newVideos.remove(i);
                break;
              }
            }
            pl.setListTubes(newVideos);
            PlaylistModel.update(pl);
            PlaylistModel.closePM();
            response.sendRedirect("/playlist/edit_videos?id="
                + pl.getId());
          } else {
            response.getWriter()
                .println(
                    "You don't have permission to delete this playlist.");
          }
        } else {
          response.getWriter().println("User's not login.");
        }
      }
    }
    // if length = 4, this is view detail playlist request.
    else if (splittedURI.length == 4) {
      if (user != null) {
        List<Playlist> pls = PlaylistModel
            .getByUserId(user.getUserId());
        Playlist pl = null;
        if (pls.size() > 0) {
          for (Playlist playlist : pls) {
            if (playlist.getId().equalsIgnoreCase(splittedURI[2])) {
              pl = playlist;
              break;
            }
          }
        }
        if (pl != null && pl.getListTubes().size() > 0) {
          request.setAttribute("result", pl);
          request.setAttribute("listPl", pls);
          request.getRequestDispatcher("/playlist_show.jsp").forward(
              request, response);
        } else {

        }
      } else {
        Playlist pl = PlaylistModel.getById(splittedURI[2]);
        if (pl != null && pl.getListTubes().size() > 0) {
          request.setAttribute("result", pl);
          request.getRequestDispatcher("/playlist_show.jsp").forward(
              request, response);
        } else {

        }
      }
    }
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    if (user != null) {
      String action = req.getParameter("action");
      if (action.equalsIgnoreCase("create")) {
        Playlist pl = new Playlist();
        if (req.getParameter("title") != null) {
          pl.setTitle(new Text(req.getParameter("title")));
        }
        if (req.getParameter("description") != null) {
          pl.setDescription(new Text(req.getParameter("description")));
        }
        Map<String, List<BlobKey>> blobs = blobstoreService
            .getUploads(req);
        List<BlobKey> blobKeys = blobs.get("myFile");
        if (blobKeys != null && blobKeys.size() > 0) {
          pl.setPictureBlobKey(new Text(blobKeys.get(0)
              .getKeyString()));
        }
        SecureRandom random = null;
        for (int i = 0; i < 10; i++) {
          random = new SecureRandom();
          String id = new BigInteger(130, random).toString(32)
              .substring(0, 11);
          if (!PlaylistModel.isExits(id)) {
            pl.setId(id);
            break;
          }
          pl.setId(null);
        }
        pl.setUserFederatedId(user.getUserId());
        pl.setDoc(Calendar.getInstance().getTime());
        pl.setUpdate(Calendar.getInstance().getTime());
        pl.setAlias(new Text(StringHelper.getAliasByLanguage(pl
            .getTitle().getValue())));
        pl.setStatus(1);
        if (pl.isOk()) {
          PlaylistModel.add(pl);
          System.out.println("Add playlist ok.");
          resp.sendRedirect("/playlist/manager");
        } else {
          System.out.println("Playlist is invalid.");
          resp.sendRedirect("/playlist/create");
        }
      } else if (action.equalsIgnoreCase("edit")) {
        String id = req.getParameter("playlist_id");
        Playlist pl = PlaylistModel.getById(id);
        if (pl != null) {
          if (req.getParameter("title") != null) {
            pl.setTitle(new Text(req.getParameter("title")));
          }
          if (req.getParameter("description") != null) {
            pl.setDescription(new Text(req
                .getParameter("description")));
          }
          Map<String, List<BlobKey>> blobs = blobstoreService
              .getUploads(req);
          List<BlobKey> blobKeys = blobs.get("myFile");
          if (blobKeys != null && blobKeys.size() > 0) {
            pl.setPictureBlobKey(new Text(blobKeys.get(0)
                .getKeyString()));
          }
          pl.setUpdate(Calendar.getInstance().getTime());
          if (pl.isOk()) {
            PlaylistModel.update(pl);
            PlaylistModel.closePM();
            System.out.println("Save playlist ok.");
            resp.sendRedirect("/playlist/manager");
          } else {
            System.out.println("Playlist is invalid.");
            resp.sendRedirect("/playlist/create");
          }
        } else {
          System.out.println("Playlist is not avaiable !");
        }
      } else {

      }

    } else {
      System.out.println("User is not login.");
      resp.sendRedirect("/login");
    }
  }
}
TOP

Related Classes of com.tubeonfire.controller.PlaylistController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.