FileDocCategorySizeDatePackage
MoviesServlet.javaAPI DocExample6542Sun Jul 07 09:53:00 BST 2002javajaxb

MoviesServlet.java

package javajaxb;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

// Servlet imports
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// Movie database generated classes
import javajaxb.generated.movies.*;

public class MoviesServlet extends HttpServlet {

    /** The Movies database object */
    private Movies movies = null;

    /** Any error that occurred. */
    private String errorMessage = null;

    /** The XML document storing the movie database */
    private static final String MOVIES_XML_DOCUMENT =
        "/dev/javajaxb/ch04/src/xml/movies.xml";

    public void init(ServletConfig config) throws ServletException {
        super.init(config);

        // Load the database using JAXB
        try {
            // Load the XML
            File xmlFile = new File(MOVIES_XML_DOCUMENT);
            FileInputStream inputStream = new FileInputStream(xmlFile);

            // Unmarshal
            movies = Movies.unmarshal(inputStream);
        } catch (Exception e) {
            errorMessage = e.getMessage();
        }
    }

    public void doGet(HttpServletRequest req, HttpServletResponse res)
        throws IOException, ServletException {

        // Handle any error conditions that might have occurred.
        if (movies == null) {
            error(res);
        }

        // Get output stream
        PrintWriter out = res.getWriter();
        res.setContentType("text/html");

        // Write out movie database
        out.println("<HTML><HEAD><TITLE>Movie Database</TITLE></HEAD>");
        out.println("<BODY>");
        out.println("<H2 ALIGN='center'>Movie Database</H2>");
 
        List movieList = movies.getMovie();
        for (Iterator i = movieList.iterator(); i.hasNext(); ) {
            Movie movie = (Movie)i.next();

            // Title
            out.print("<B><FONT SIZE='+1'>");
            out.print(movie.getTitle());
            out.println("</FONT></B><BR />");

            // Director
            String director = movie.getDirector();
            if (director != null) {
                out.print("Director: ");
                out.print(director);
                out.println("<BR />");
            }

            // Producer
            out.println("Producers:<BR /><UL>");
            List producerList = movie.getProducer();
            for (Iterator j = producerList.iterator(); j.hasNext(); ) {
                out.print("<LI>");
                out.print((String)j.next());
                out.println("</LI>");
            }
            out.println("</UL>");

            // Cast
            out.println("Starring:<BR /><UL>");
            Cast cast = movie.getCast();
            List actorList = cast.getActor();
            for (Iterator j = actorList.iterator(); j.hasNext(); ) {
                Actor actor = (Actor)j.next();
                out.print("<LI>");
                out.print(actor.getContent());
                if (actor.getHeadliner().equalsIgnoreCase("true")) {
                    out.print(" (Headliner)");
                }
                out.println("</LI>");
            }
            out.println("</UL>");

            out.println("<HR WIDTH='80%' />");
        }

        out.println("</BODY></HTML>");
        
        out.close();
    }

    public void doPost(HttpServletRequest req, HttpServletResponse res)
        throws IOException, ServletException {

        // Get action paramater; default is "list"
        String[] actionValues = req.getParameterValues("action");
        String action = null;
        if ((actionValues == null) || (actionValues[0] == null)) {
            action = "list";
        } else {
            action = actionValues[0];
        }

        // Handle different actions
        PrintWriter out = res.getWriter();
        res.setContentType("text/plain");

        /* **** List current movies **** */        
        if (action.equalsIgnoreCase("list")) {

            out.write(" ***** Movies Database *****\n\n");

            // Print out each movie
            List movieList = movies.getMovie();
            for (Iterator i = movieList.iterator(); i.hasNext(); ) {
                Movie movie = (Movie)i.next();

                // Title
                out.print(" Movie: ");
                out.println(movie.getTitle());

                // Director
                String director = movie.getDirector();
                if (director != null) {
                    out.print("   Director: ");
                    out.println(director);
                    out.println();
                }

                // Producer
                out.println("   Producers:");
                List producerList = movie.getProducer();
                for (Iterator j = producerList.iterator(); j.hasNext(); ) {
                    out.print("     * ");
                    out.print((String)j.next());
                    out.println();
                }
                out.println();

                // Cast
                out.println("   Starring:");
                Cast cast = movie.getCast();
                List actorList = cast.getActor();
                for (Iterator j = actorList.iterator(); j.hasNext(); ) {
                    Actor actor = (Actor)j.next();
                    out.print("     * ");
                    out.print(actor.getContent());
                    if (actor.getHeadliner().equalsIgnoreCase("true")) {
                        out.print(" (Headliner)");
                    }
                    out.println();
                }

                out.println(" -------------------------------- ");
            }
        } else {
            out.write("The action supplied, '");
            out.write(action);
            out.write("', is not currently supported.\n");
        }
        out.close();
    }

    private void error(HttpServletResponse res) throws IOException {
        PrintWriter out = res.getWriter();
        res.setContentType("text/plain");

        out.write(" ************* ERROR OCCURRED ***************\n\n");
        out.write("Error: " + errorMessage + "\n");
        out.close();
    }
}