Package com.bbn.openmap.vpfservlet

Source Code of com.bbn.openmap.vpfservlet.DirectoryServlet

// **********************************************************************
// <copyright>
//  BBN Technologies
//  10 Moulton Street
//  Cambridge, MA 02138
//  (617) 873-8000
//
//  Copyright (C) BBNT Solutions LLC. All rights reserved.
// </copyright>
// **********************************************************************
// $Source: /cvs/distapps/openmap/src/vpfservlet/WEB-INF/src/com/bbn/openmap/vpfservlet/DirectoryServlet.java,v $
// $Revision: 1.3.2.2 $ $Date: 2005/08/11 21:03:10 $ $Author: dietrick $
// **********************************************************************
package com.bbn.openmap.vpfservlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

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

import com.bbn.openmap.layer.util.html.HtmlListElement;

/**
* This servlet lists the files in a directory of a configured VPF
* database. Directory listing can be disabled, see the
* listDirectories servlet parameter in the deployment descriptor.
* (web.xml)
*/
public class DirectoryServlet extends VPFHttpServlet {

    /**
     * A do-nothing constructor - init does all the work.
     */
    public DirectoryServlet() {
        super();
    }

    /**
     * false if this servlet should generate a "disabled by
     * administrator" method rather than a directory list.
     */
    private boolean listFiles;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String filePath = (String) request.getAttribute(DispatchServlet.ROOTPATH_FILENAME);
        if (filePath == null) {
            String path = setPathInfo(request);
            filePath = contextInfo.resolvePath(path);
            if (!pathOkay(filePath, path, response)) {
                return;
            }
        }
        File fp = new File(filePath);
        String pathInfo = getPathInfo(request);

        PrintWriter out = response.getWriter();

        String filename = fp.getName().toLowerCase();
       
        // This was never used!!!
        String end = "</BODY></HTML>";

        response.setContentType("text/html");
        out.println(HTML_DOCTYPE + "<HTML>\n<HEAD><TITLE>" + filename
                + "</TITLE></HEAD>\r\n<BODY>\r\n<H1>Directory " + filename
                + "</H1>\r\n");
        out.println(getStylesheetHTML(request));

        if (!listFiles) {
            out.println("Directory listing disabled by administrator.");
        } else if (!fp.isDirectory()) {
            out.println("Requested path is not a directory.");
        } else {
            out.println("");
            File files[] = fp.listFiles();
            ArrayList filenames = new ArrayList();
            ArrayList directories = new ArrayList();
            for (int i = 0; i < files.length; i++) {
                String name = files[i].getName();
                if (files[i].isDirectory()) {
                    directories.add(name);
                } else {
                    filenames.add(name);
                }
            }
            Collections.sort(directories);
            Collections.sort(filenames);

            if (!pathInfo.endsWith("/")) {
                pathInfo += '/';
            }

            HtmlListElement filelist = new HtmlListElement("Sub-Directories");

            for (Iterator dir = directories.iterator(); dir.hasNext();) {
                String url = fileURL(request,
                        response,
                        pathInfo,
                        (String) dir.next());
                filelist.addElement(url);
            }
            filelist.generate(out);

            filelist = new HtmlListElement("Files");
            for (Iterator file = filenames.iterator(); file.hasNext();) {
                String url = fileURL(request,
                        response,
                        pathInfo,
                        (String) file.next());
                filelist.addElement(url);
            }
            filelist.generate(out);
        }
        out.println(end);
    }

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        listFiles = Boolean.valueOf(config.getInitParameter("listDirectories"))
                .booleanValue();
    }
}
TOP

Related Classes of com.bbn.openmap.vpfservlet.DirectoryServlet

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.