📄 thematicindexservlet.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/ThematicIndexServlet.java,v $// $Revision: 1.2.2.2 $ $Date: 2005/08/11 21:03:07 $ $Author: dietrick $// **********************************************************************package com.bbn.openmap.vpfservlet;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;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.Element;import com.bbn.openmap.layer.util.html.HtmlListElement;import com.bbn.openmap.layer.util.html.ListElement;import com.bbn.openmap.layer.util.html.TableHeaderElement;import com.bbn.openmap.layer.util.html.TableRowElement;import com.bbn.openmap.layer.util.html.WrapElement;import com.bbn.openmap.layer.vpf.DcwThematicIndex;/** * This servlet generates HTML for VPF files in thematic index format. */public class ThematicIndexServlet extends VPFHttpServlet { /** * A do-nothing constructor - init does all the work. */ public ThematicIndexServlet() { super(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filePath = (String) request.getAttribute(DispatchServlet.ROOTPATH_FILENAME); if (filePath == null) { String pathInfo = setPathInfo(request); filePath = contextInfo.resolvePath(pathInfo); if (!pathOkay(filePath, pathInfo, response)) { return; } } DcwThematicIndex ti; try { ti = new DcwThematicIndex(filePath, false); } catch (FormatException fe) { response.sendError(HttpServletResponse.SC_NOT_FOUND, fe.toString()); return; } String valIndex = request.getParameter("valIndex"); if (valIndex != null) { showTableIndexed(request, response, valIndex, ti); } else { showTableData(request, response, ti, filePath); } try { ti.close(); } catch (FormatException fe) { // ignore } } protected void showTableData(HttpServletRequest request, HttpServletResponse response, DcwThematicIndex ti, String filePath) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "VPF Thematic Index for " + new File(filePath).getName(); String basepath = getRootDir(request); out.println("<HEAD><TITLE>" + title + "</TITLE></HEAD>"); out.println(getStylesheetHTML(request)); out.println("<BODY><H1 CLASS=TableHeadingColor>" + title + "</H1>"); out.println("<H3 CLASS=TableSubheadingColor>General Thematic Index Information</H3>"); HtmlListElement list = new HtmlListElement(); list.addElement("Number of Codes: " + ti.getNumberOfCodes()); list.addElement("Number of Rows: " + ti.getNumberOfRows()); list.addElement("Type Of Index: " + ti.getTypeOfIndex()); list.addElement("Field Type of Index: " + ti.getFieldTypeOfIndex()); list.addElement("Number of Data Elements: " + ti.getNumberOfDataElements()); list.addElement("Data Type Specifier: " + ti.getDataTypeSpecifier()); list.addElement("Table Indexed: " + fileURL(request, response, basepath, ti.getTableIndexed())); list.addElement("Column Indexed: " + ti.getColumnIndexed()); list.addElement("Fields Sorted: " + ti.getSorted()); list.generate(out); out.println("<H3 CLASS=TableSubheadingColor>Thematic Index Data</H3>"); Object[] values = ti.getValueIndexes(); ListElement rows = null; Element table = null; TableRowElement th = new TableRowElement(); th.addElement(new TableHeaderElement("CLASS=NavBarCell2", "Index Value")); th.addElement(new TableHeaderElement("Count")); th.addElement(new TableHeaderElement("Rows...")); String valStr = "<A HREF=\"" + request.getContextPath() + request.getServletPath() + getPathInfo(request) + "?valIndex="; for (int i = 0; i < values.length; i++) { if ((i % 50) == 0) { if (table != null) { table.generate(out); } rows = new ListElement(); table = new WrapElement("table", "BORDER=1", rows); rows.addElement(th); } TableRowElement tr = new TableRowElement(); rows.addElement(tr); tr.addElement(valStr + values[i] + "\">" + values[i] + "</A>"); try { int[] intvals = ti.get(values[i]); tr.addElement(Integer.toString(intvals.length)); StringBuffer sb = new StringBuffer(); sb.append(intvals[0]); for (int j = 1; j < intvals.length; j++) { sb.append(", ").append(intvals[j]); } tr.addElement(sb.toString()); } catch (FormatException fe) { tr.addElement(fe.toString()); } } table.generate(out); } protected void showTableIndexed(HttpServletRequest request, HttpServletResponse response, String valIndex, DcwThematicIndex ti) throws IOException, ServletException { Object val = null; switch (ti.getFieldTypeOfIndex()) { case 'I': val = Integer.valueOf(valIndex); break; case 'S': val = Short.valueOf(valIndex); break; case 'T': val = valIndex; break; } try { int[] vals = ti.get(val); request.setAttribute(Data.ROWLIST_OBJECT, vals); } catch (FormatException fe) { response.sendError(HttpServletResponse.SC_NOT_FOUND, fe.toString()); } String pi = request.getPathInfo(); int lin = pi.lastIndexOf('/') + 1; RequestDispatcher rd = request.getRequestDispatcher("/UnknownType" + pi.substring(0, lin) + ti.getTableIndexed()); rd.forward(request, response); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -