⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 describedbservlet.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
// **********************************************************************// <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/DescribeDBServlet.java,v $// $Revision: 1.2.2.2 $ $Date: 2005/08/11 21:03:09 $ $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.Arrays;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.TreeMap;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.bbn.openmap.io.FormatException;import com.bbn.openmap.layer.util.html.HtmlListElement;import com.bbn.openmap.layer.util.html.ListBodyElement;import com.bbn.openmap.layer.util.html.ListElement;import com.bbn.openmap.layer.util.html.WrapElement;import com.bbn.openmap.layer.vpf.CoverageAttributeTable;import com.bbn.openmap.layer.vpf.CoverageTable;import com.bbn.openmap.layer.vpf.DcwRecordFile;import com.bbn.openmap.layer.vpf.FeatureClassInfo;import com.bbn.openmap.layer.vpf.LibrarySelectionTable;/** * This class prints out a description of a VPF database, listing the * available libraries, coverage types and feature types. */public class DescribeDBServlet extends VPFHttpServlet {    /**     * Takes path arguments, and prints the DB it finds     */    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html");        PrintWriter out = response.getWriter();        out.println(HTML_DOCTYPE);        out.println(getStylesheetHTML(request));        String pathInfo = request.getPathInfo();        if (pathInfo == null) {            selectDB(request, response);            return;        }        int findex = pathInfo.indexOf('/', 1);        if (findex < 0) {            findex = pathInfo.length();        }        String libname = pathInfo.substring(1, findex);        try {            LibrarySelectionTable lst = getLST(libname);            if (lst == null) {                out.println("VPF Database not configured: " + libname);                return;            }            String dbname = lst.getDatabaseName();            out.println("<HTML>\n<HEAD><TITLE>Describe VPF Database " + dbname                    + "</TITLE></HEAD>\n<BODY>\n<H1>VPF Database " + dbname                    + "</H1>\n");            ListElement dble = new ListBodyElement();            WrapElement dblist = new WrapElement("ul", dble);            dble.addElement("Database Description: "                    + lst.getDatabaseDescription());            dble.addElement("Database Description Table: "                    + buildURL(request, response, libname, "dht"));            String[] libraries = lst.getLibraryNames();            StringBuffer libnames = new StringBuffer("Database Libraries: ");            for (int i = 0; i < libraries.length; i++) {                libnames.append("<A HREF=\"#").append(libraries[i]);                libnames.append("\">").append(libraries[i]);                libnames.append("</A>").append(" ");            }            libnames.append("(from ");            libnames.append(buildURL(request, response, libname, "lat"));            libnames.append(")");            dble.addElement(libnames.toString());            dblist.generate(out);            for (int i = 0; i < libraries.length; i++) {                //String prefix = libraries[i] + ":";                printLibrary(request,                        response,                        libname,                        lst.getCAT(libraries[i]));            }            out.println("</body></html>");        } catch (FormatException fe) {            throw new ServletException("FormatException: ", fe);        }    }    public void selectDB(HttpServletRequest request,                         HttpServletResponse response) throws IOException,            ServletException {        PrintWriter out = response.getWriter();        Set databases = contextInfo.keySet();        out.println("<HTML>\n<HEAD><TITLE>Select VPF Database"                + "</TITLE></HEAD>\n<BODY>\n<H1>Available VPF Databases"                + "</H1>\n");        HtmlListElement dblist = new HtmlListElement();        for (Iterator dbi = databases.iterator(); dbi.hasNext();) {            String db = (String) dbi.next();            String url = request.getContextPath() + "/DescribeVPF/" + db;            dblist.addElement("<A HREF=\"" + response.encodeURL(url) + "\">"                    + db + "</A>\r\n");        }        dblist.generate(out);        out.println("</BODY></HTML>\r\n");    }    public static String buildURL(HttpServletRequest request,                                  HttpServletResponse response,                                  String filepref, String filename, String tag) {        String url = request.getContextPath() + "/UnknownType/" + filepref                + "/" + filename;        return "<A HREF=\"" + response.encodeURL(url) + "\">" + tag + "</A>";    }    public static String buildURL(HttpServletRequest request,                                  HttpServletResponse response,                                  String filepref, String filename) {        return buildURL(request, response, filepref, filename, filename);    }    /**     * Prints a VPF Library.     *      * @param request the HttpServletRequest.     * @param response the HTTPServletResponse.     * @param pathPrefix lines get printed with this prefix     * @param cat the CoverageAttributeTable (Library) to print     */    public void printLibrary(HttpServletRequest request,                             HttpServletResponse response, String pathPrefix,                             CoverageAttributeTable cat)            throws ServletException, IOException {        PrintWriter out = response.getWriter();        String libName = cat.getLibraryName();        String libpath = pathPrefix + "/" + libName;        if (cat == null) {            out.println("<H2>Library " + libName + " doesn't exist</H2>");            return;        }        out.println("<H2>Library <A NAME=\"" + libName + "\"></A>"                + buildURL(request, response, pathPrefix, libName, libName)                + "</H2>");        String[] coverages = cat.getCoverageNames();        Arrays.sort(coverages);        HtmlListElement list = new HtmlListElement();        list.addElement("Library uses "                + (cat.isTiledData() ? "tiled" : "untiled") + " data");        HtmlListElement clist = new HtmlListElement("Coverage names (from "                + buildURL(request, response, libpath, "cat") + ")");        list.addElement(clist);        for (int i = 0; i < coverages.length; i++) {            clist.addElement("<A HREF=\"#" + libName + "_" + coverages[i]                    + "\">" + coverages[i] + "</A>");        }        list.addElement("Library Header Table: "                + buildURL(request, response, libpath, "lht"));        list.addElement("Geographic Reference Table: "                + buildURL(request, response, libpath, "grt"));        list.generate(out);        for (int i = 0; i < coverages.length; i++) {            printCoverage(request,                    response,                    libpath + "/" + coverages[i],                    libName,                    cat,                    coverages[i]);        }    }    /**     * Prints a VPF Coverage     *      * @param pathPrefix lines get printed with this prefix     * @param cat the CoverageAttributeTable to get the Coverage from     * @param covname the name of the coverage to print     */    public void printCoverage(HttpServletRequest request,                              HttpServletResponse response, String pathPrefix,                              String libName, CoverageAttributeTable cat,                              String covname) throws ServletException,            IOException {        PrintWriter out = response.getWriter();        out.println("<H3><A NAME=\"" + libName + "_" + covname + "\">Coverage "                + buildURL(request, response, pathPrefix, "", covname)                + " for Library <A HREF=\"#" + libName + "\">" + libName                + "</A></H3>");        HtmlListElement list = new HtmlListElement();        list.addElement("Description: " + cat.getCoverageDescription(covname));        list.addElement("Topology Level: "                + cat.getCoverageTopologyLevel(covname));        String fcsURL = buildURL(request, response, pathPrefix, "fcs?"                + Data.RowSelectParam + "=" + Data.RowSelectAll, "fcs");        list.addElement("Feature Class Schema: " + fcsURL);        CoverageTable ct = cat.getCoverageTable(covname);        // CoverageTable opens alot of files, go through and close        // them        for (Iterator i = ct.getFeatureClasses().values().iterator(); i.hasNext();) {            FeatureClassInfo fci = (FeatureClassInfo) i.next();            fci.close();        }        Map ftypeinfo = new TreeMap(ct.getFeatureTypeInfo());        if (ftypeinfo.size() == 0) {            list.addElement("No Feature Types in FCA");        } else {            HtmlListElement flist = new HtmlListElement("Feature Types (from "                    + buildURL(request, response, pathPrefix, "fca") + ")");            list.addElement(flist);            for (Iterator i = ftypeinfo.values().iterator(); i.hasNext();) {                CoverageTable.FeatureClassRec fcr = (CoverageTable.FeatureClassRec) i.next();                String name = fcr.feature_class.toLowerCase();//                char t = fcr.type;                String desc = fcr.description;                String tstring = "[unknown] ";                String suffix = "";                switch (fcr.type) {                case CoverageTable.TEXT_FEATURETYPE:                    tstring = "[text feature] ";                    suffix = ".tft";                    break;                case CoverageTable.EDGE_FEATURETYPE:                    tstring = "[edge feature] ";                    suffix = ".lft";                    break;                case CoverageTable.AREA_FEATURETYPE:                    tstring = "[area feature] ";                    suffix = ".aft";                    break;                case CoverageTable.UPOINT_FEATURETYPE:                    FeatureClassInfo fci = ct.getFeatureClassInfo(name);                    char type = (fci != null) ? fci.getFeatureType()                            : CoverageTable.SKIP_FEATURETYPE;                    if (type == CoverageTable.EPOINT_FEATURETYPE) {                        tstring = "[entity point feature] ";                    } else if (type == CoverageTable.CPOINT_FEATURETYPE) {                        tstring = "[connected point feature] ";                    } else {                        tstring = "[missing point feature] ";                    }                    suffix = ".pft";                    break;                case CoverageTable.COMPLEX_FEATURETYPE:                    tstring = "[complex feature] ";                    suffix = ".cft";                    break;                default:                    tstring = "[unknown] ";                    suffix = "";                }                String url = buildURL(request, response, pathPrefix, name                        + suffix, name);                flist.addElement(url + ": " + tstring + desc);            }        }        try {            HtmlListElement flist = new HtmlListElement("Feature Types (from "                    + fcsURL + ")");            boolean generateflist = false;            DcwRecordFile fcs = new DcwRecordFile(ct.getDataPath()                    + File.separator + "fcs" + (ct.appendDot ? "." : ""));            int featureClassColumn = fcs.whatColumn("feature_class");            int table1Column = fcs.whatColumn("table1");//            int table1_keyColumn = fcs.whatColumn("table1_key");//            int table2Column = fcs.whatColumn("table2");//            int table2_keyColumn = fcs.whatColumn("table2_key");            List fcsl = new ArrayList(fcs.getColumnCount());            while (fcs.parseRow(fcsl)) {                String featureclass = ((String) fcsl.get(featureClassColumn)).toLowerCase();                String table1 = ((String) fcsl.get(table1Column)).toLowerCase();                if (!ftypeinfo.containsKey(featureclass)) {                    ftypeinfo.put(featureclass, null);                    String type = null;                    if (table1.endsWith(".cft")) {                        type = "complex feature";                    } else if (table1.endsWith(".pft")) {                        type = "point feature";                    } else if (table1.endsWith(".lft")) {                        type = "line feature";                    } else if (table1.endsWith(".aft")) {                        type = "area feature";                    } else if (table1.endsWith(".tft")) {                        type = "text feature";                    }                    if (type != null) {                        generateflist = true;                        flist.addElement(type                                + " "                                + buildURL(request,                                        response,                                        pathPrefix,                                        table1,                                        featureclass));                    }                }            }            if (generateflist) {                list.addElement(flist);            }            fcs.close();        } catch (FormatException fe) {            list.addElement("no fcs");        }        list.generate(out);    }    public LibrarySelectionTable getLST(String libname) throws FormatException {        LibrarySelectionTable lst = contextInfo.getLST(libname);        if (lst == null) {            String lib_home = contextInfo.getPath(libname);            if (lib_home == null) {                return null;            }//            File flib_home = new File(lib_home);            lst = new LibrarySelectionTable(lib_home);            contextInfo.putLST(libname, lst);        }        return lst;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -