Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package servlets;
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- import com.jaunt.ResponseException;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.util.ArrayList;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.MultipartConfig;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.Part;
- import javax.xml.parsers.ParserConfigurationException;
- import org.xml.sax.SAXException;
- import utilityClasses.ScanItunesSongs;
- import utilityClasses.Song;
- import utilityClasses.SongNotFoundException;
- /**
- * Servlet to receive the XML file that the user will upload that contains
- * his/her music library.
- *
- * @author Tim
- */
- @MultipartConfig
- @WebServlet(urlPatterns = {"/GetItunesLibrary"})
- public class GetItunesLibrary extends HttpServlet {
- private final static Logger LOGGER = Logger.getLogger(GetItunesLibrary.class.getCanonicalName());
- /**
- * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
- * methods.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurs
- * @throws IOException if an I/O error occurs
- */
- protected void processRequest(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException, ParserConfigurationException, SAXException, ResponseException {
- response.setContentType("text/html;charset=UTF-8");
- //Create path components to save the file
- final Part filePart = request.getPart("XMLFile"); // Retrieves <input type="file" name="XMLFile">
- final String path = "/home/uploads/";
- final String fileName = getFileName(filePart);
- OutputStream outStream = null;
- InputStream fileContent = null;
- final PrintWriter out = response.getWriter();
- out.println("File name: " + fileName);
- try {
- File xmlFile = new File(path + fileName);
- //File xmlFile = new File(fileName);
- outStream = new FileOutputStream(xmlFile);
- fileContent = filePart.getInputStream();
- int read = 0;
- final byte[] bytes = new byte[1024];
- while ((read = fileContent.read(bytes)) != -1) {
- outStream.write(bytes, 0, read);
- }
- //File is now saved to the server
- ScanItunesSongs scanItunes = new ScanItunesSongs(xmlFile.getAbsolutePath());
- scanItunes.scan();
- ArrayList<Song> songs = scanItunes.getSongs();
- out.println("<!DOCTYPE html>");
- out.println("<html>");
- out.println("<head>");
- out.println("<link href=\"http://s3.amazonaws.com/codecademy-content/courses/ltp/css/bootstrap.css\" rel=\"stylesheet\">\n"
- + " <link href=\"C:\\Users\\Tim\\Documents\\IsThisSongClean\\css.css\" rel=\"stylesheet\">\n"
- + " <style type=\"text/css\">\n"
- + " .jumbotron {\n"
- + " height:100%;\n"
- + " background-color: rgb(160, 232, 153);\n"
- + " border-style: inset;\n"
- + " }\n"
- + " .wrapper {\n"
- + " text-align: center;\n"
- + " }\n"
- + "\n"
- + " .jumbotron h1, h5 {\n"
- + " text-align: center;\n"
- + "\n"
- + " }\n"
- + "\n"
- + " .jumbotron input {\n"
- + " text-align: center;\n"
- + " }\n"
- + "\n"
- + " input[type=\"text\"] {\n"
- + " display: block;\n"
- + " margin : 0 auto;\n"
- + " }\n"
- + "\n"
- + " .results span {\n"
- + " text-align: center;\n"
- + " }\n"
- + "\n"
- + " input, div {\n"
- + " border-style: inline;\n"
- + " border-color: rgb(102, 163, 96);\n"
- + " padding: 0;\n"
- + " margin: 0;\n"
- + " font: 13px sans-serif;\n"
- + " }\n"
- + " </style>");
- out.println("<title>Servlet GetSongAndArtist</title>");
- out.println("</head>");
- out.println("<body>");
- out.println("<div class=\"jumbotron\"");
- out.println("<p> All of your songs are completely clean except for the following:</p>");
- for (Song song : songs) {
- String s;
- try {
- boolean isClean = song.isClean();
- if (isClean) {
- } else {
- out.println("<p>" + song.getSong() + " by artist " + song.getArtist() + "</p>");
- }
- } catch (SongNotFoundException snfe) {
- out.println("<p> The song " + song.getSong() + " by artist " + song.getArtist() + " could not be found. </p>");
- }
- }
- out.println("<a href=\"index.jsp\">Search another song</a>");
- out.println("<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>\n"
- + " <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>");
- out.println("</div>");
- out.println("</body>");
- out.println("</html>");
- LOGGER.log(Level.INFO, "File{0}being uploaded to {1}", new Object[]{fileName, path});
- } catch (FileNotFoundException fnfe) {
- out.println("You either did not specify a file to upload or are "
- + "trying to upload a file to a protected or nonexistent "
- + "location.");
- out.println("<br/> ERROR: " + fnfe.getMessage() + "<br>" + fnfe.getLocalizedMessage());
- LOGGER.log(Level.SEVERE, "Problems during file upload. Error: {0}",
- new Object[]{fnfe.getMessage()});
- }
- }
- // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
- /**
- * Handles the HTTP <code>GET</code> method.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurs
- * @throws IOException if an I/O error occurs
- */
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- try {
- processRequest(request, response);
- } catch (ParserConfigurationException | SAXException | ResponseException ex) {
- Logger.getLogger(GetItunesLibrary.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- /**
- * Handles the HTTP <code>POST</code> method.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurs
- * @throws IOException if an I/O error occurs
- */
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- try {
- processRequest(request, response);
- } catch (ParserConfigurationException ex) {
- Logger.getLogger(GetItunesLibrary.class.getName()).log(Level.SEVERE, null, ex);
- } catch (SAXException ex) {
- Logger.getLogger(GetItunesLibrary.class.getName()).log(Level.SEVERE, null, ex);
- } catch (ResponseException ex) {
- Logger.getLogger(GetItunesLibrary.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- /**
- * Returns a short description of the servlet.
- *
- * @return a String containing servlet description
- */
- @Override
- public String getServletInfo() {
- return "Short description";
- }// </editor-fold>
- private String getFileName(final Part part) {
- final String partHeader = part.getHeader("content-disposition");
- LOGGER.log(Level.INFO, "Part Header = {0}", partHeader);
- for (String content : part.getHeader("content-disposition").split(";")) {
- if (content.trim().startsWith("filename")) {
- return content.substring(
- content.indexOf('=') + 1).trim().replace("\"", "");
- }
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement