`
张玉龙
  • 浏览: 740621 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

我的xp环境配置API Index

阅读更多


package cn.inkfish.app.cmd.doclist;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import cn.inkfish.tools.xml.XPathTool;

public class DocListGener {
	private File rootdir = new File("E:\\2011.4.5\\API\\lib_doc");

	private static String[] docDirs = new String[] { "\\javadoc", "\\javadocs", "\\apidocs",
			"\\api", "\\docs", "\\doc", "\\docs\\api", "\\doc\\api", "\\docs\\apidocs",
			"\\docs\\javadocs", "\\docs\\javadoc", "\\doc\\javadocs", "\\doc\\javadoc",
			"\\site\\javadocs", "\\site\\apidocs", "\\docs\\javadoc-api" };

	private static String[] indexFiles = new String[] { "index.html", "index.htm" };

	private int colNum = 3;

	private int maxRow = 30;

	private StringBuffer sb = new StringBuffer();

	public static void main(String[] args) throws IOException {
		DocListGener gener = new DocListGener();
		File dest = new File(gener.rootdir, "index.html");
		if (dest.exists()) {
			dest.delete();
		}
		gener.generateHead();
		gener.generateLibUrl();
		gener.generateCommonUrl();
		gener.generateEnd();
		String content = gener.sb.toString();
		content = content.replaceAll("COL_WIDTH", (100 / gener.colNum) + "%");
		FileUtils.writeStringToFile(dest, content, "UTF-8");
	}

	private void generateLibUrl() {
		sb.append("\t\t\t<td width=\"COL_WIDTH\" valign=\"top\">\n");
		sb.append("\t\t\t\t<ul>\n");
		File[] dirs = rootdir.listFiles();
		Arrays.sort(dirs);
		int counter = 0;
		for (File dir : dirs) {
			// 过滤掉非文件夹
			if (!dir.isDirectory()) {
				continue;
			}
			label:
			for (int i = 0; i < docDirs.length; i++) {
				for (String indexFile : indexFiles) {
					File file = new File(new File(dir, docDirs[i]), indexFile);
					if (file.exists()) {
						counter++;
						if (counter > maxRow) {
							sb.append("\t\t\t\t</ul>\n");
							sb.append("\t\t\t</td>\n");
							sb.append("\t\t\t<td width=\"COL_WIDTH\" valign=\"top\">\n");
							sb.append("\t\t\t\t<ul>\n");
							counter = 0;
							colNum++;
						}
						sb.append("\t\t\t\t\t<li>");
						sb.append("<a target=\"_blank\" href=\"").append(file.toURI().toString())
								.append("\">");
						sb.append(FilenameUtils.getName(dir.toString()));
						sb.append("</a>");
						sb.append("</li>\n");
						break label;
					}
				}
			}
		}
		sb.append("\t\t\t\t</ul>\n");
		sb.append("\t\t\t</td>\n");
	}

	private void generateHead() {
		sb.append("<html>\n");
		sb.append("<head profile=\"http://www.w3.org/2005/10/profile\">\n");
		sb.append("\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n");
	//	sb.append("\t<meta name=\"author\" content=\"wuqiming\">\n");
	//	sb.append("\t<title>Java Docs</title>\n");
		sb.append("\t<style>ul{margin-top:5px;}</style>\n");
		sb.append("\t<!--<link rel=\"icon\" href=\"http://hi.csdn.net/attachment/201011/8/7093_128919873175yk.png\" type=\"image/png\">-->\n");
		sb.append("\t<link rel=\"icon\" href=\"./favicon.png\" type=\"image/png\">\n");
		sb.append("</head>\n");
		sb.append("<body>\n");
		//sb.append("\t<center><h2>Java Docs Collection(Wu Qiming)</h2></center>\n");
		sb.append("\t<table style=\"font-size:14px;\" width=\"90%\" align=\"center\" cellspadding=\"0\" cellspacing=\"0\" border=\"1\">\n");
		sb.append("\t\t<tr>\n");
	}

	private void generateCommonUrl() {
		Map<String, Map<String, Properties>> map = getSites();
		int counter = 0;
		for (String category : map.keySet()) {
			if (counter + 2 + map.get(category).size() >= maxRow) {
				counter = 0;
				sb.append("\t\t\t</td>\n");
			}
			if (counter == 0) {
				sb.append("\t\t\t<td width=\"COL_WIDTH\" valign=\"top\">\n");
			}
			sb.append("\t\t\t\t").append(category).append("<br />\n");
			counter += 2;
			sb.append("\t\t\t\t<ul>\n");
			Map<String, Properties> subMap = map.get(category);
			for (Entry<String, Properties> entry : subMap.entrySet()) {
				Properties prop = entry.getValue();
				if (prop.containsKey("name") && prop.containsKey("url")) {
					String[] names = StringUtils.split(prop.getProperty("name"), ' ');
					String[] urls = StringUtils.split(prop.getProperty("url"), ' ');
					String target = prop.getProperty("target", "_blank");
					sb.append("\t\t\t\t\t<li>\n");
					if (names.length == urls.length) {
						for (int i = 0; i < names.length; i++) {
							sb.append("\t\t\t\t\t\t<a target=\"").append(target).append("\" ");
							sb.append("href=\"").append(urls[i]).append("\">");
							sb.append(names[i]).append("</a>&nbsp;");
						}
					} else {
						sb.append("\t\t\t\t\t\t<a target=\"").append(target).append("\" ");
						sb.append("href=\"").append(prop.getProperty("url")).append("\">");
						sb.append(prop.getProperty("name")).append("</a>");
					}
					sb.append("\t\t\t\t\t</li>\n");
					counter++;
					System.out.println(counter + "\t" + prop.getProperty("name"));
				}
			}
			sb.append("\t\t\t\t</ul>\n");
		}
		sb.append("\t\t\t</td>\n");
		sb.append("\t\t</tr>\n");
	}

	private void generateEnd() {
		sb.append("\t\t<tr>\n");
		sb.append("\t\t\t<td colspan=\"" + colNum + "\">\n");
		sb.append("Infos here<br>");
		sb.append("\t\t\t</td>\n");
		sb.append("\t\t</tr>\n");
		sb.append("\t</table>\n");
		sb.append("</body>\n");
		sb.append("</html>");
	}

	private Map<String, Map<String, Properties>> getSites() {
		Map<String, Map<String, Properties>> map = new LinkedHashMap<String, Map<String, Properties>>();
		try {
			InputStream is = this.getClass().getResourceAsStream("sites.xml");
			XPathTool xpath = new XPathTool(is);
			IOUtils.closeQuietly(is);
			NodeList categories = xpath.getNodeSetValue("/sites/catagory/@name");
			for (int i = 0; i < categories.getLength(); i++) {
				Map<String, Properties> subMap = new LinkedHashMap<String, Properties>();
				String cateName = categories.item(i).getNodeValue();
				NodeList subSites = xpath.getNodeSetValue("/sites/catagory[@name='" + cateName
						+ "']/site");
				for (int j = 0; j < subSites.getLength(); j++) {
					Properties prop = new Properties();
					NamedNodeMap attributes = subSites.item(j).getAttributes();
					for (int k = 0; k < attributes.getLength(); k++) {
						prop.put(attributes.item(k).getNodeName(), attributes.item(k)
								.getNodeValue());
					}
					subMap.put(prop.getProperty("name"), prop);
				}
				map.put(cateName, subMap);
			}
		} catch (SAXException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		} catch (ParserConfigurationException ex) {
			ex.printStackTrace();
		} catch (XPathExpressionException ex) {
			ex.printStackTrace();
		}
		return map;
	}
}












<?xml version="1.0" encoding="UTF-8"?>
<sites>

	<catagory name="API">
		<site name="JDK_API" url="E:\API\JDK_API_1_6_中文版.CHM" />
		<site url="D:\" name="D" />
		<site url="E:\" name="E" />
		<site url="E:\API\JDK_API_1_6_中文版.CHM" name="JDK_API" />
		<site url="E:\API\[Java参考文档].J2EE1.5.chm" name="J2EE.chm" />
		<site url="E:\API\Hibernate3.2官方中文参考手册.pdf" name="Hibernate" />
		<site url="E:\Workspaces" name="Workspaces" />
		<site url="E:\API" name="API" />
		<site url="E:\API\jQueryAPI-100214.chm" name="jQueryAPI" />
		<site url="E:\API\程序员常用js.chm" name="js" />
		<site url="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps" name="Tomcat_webapps" />
		<site url="E:\我的XP环境配置" name="我的XP环境配置" />
		<site url="http://zhangyulong.iteye.com" name="ITeye" />
		<site url="http://localhost:8080" name="tomcat" />
		<site url="http://zyl1221.download.csdn.net" name="csdn" />
		<site url="http://w3school.com.cn" name="w3c" />
		<site url="http://user.qzone.qq.com/574893508" name="qzone" />
		<site url="http://www.renren.com/home" name="renren" />
		<site url="http://detail.zol.com.cn/" name="zol" />
		<site url="http://appimg2.qq.com/card/index_v3.html?qzone=1" name="card" />
	</catagory>
	
	
	
	
</sites >
	
	
	

















apache-mime4j-0.6.jar
commons-logging-1.1.1.jar
httpclient-4.0.jar
httpcore-4.0.1.jar
httpmime-4.0.jar
commons-codec-1.4.jar
jaxp.jar
oscore-2.2.1.jar
propertyset-1.3.jar
trove-2.1.0.jar
xalan.jar
xercesImpl.jar
jtidy-r918.jar
commons-io-2.0.jar
lombok.jar
commons-lang-2.5.jar
rome-1.0.jar
jdom.jar
poi-3.8-beta1-20110307.jar
poi-excelant-3.8-beta1-20110307.jar
poi-ooxml-3.8-beta1-20110307.jar
poi-ooxml-schemas-3.8-beta1-20110307.jar
poi-scratchpad-3.8-beta1-20110307.jar








分享到:
评论

相关推荐

    我的xp环境配置API Index jar

    标题中的“我的xp环境配置API Index jar”表明这个压缩包可能包含了在Windows XP操作系统环境下用于配置API索引的Java(jar)文件。API Index jar通常是一个包含API接口文档或者用于快速查找和引用API的工具,这在...

    Android开发环境搭建图解教程(XP)

    接着键入命令“javac”,如果没有任何错误提示,则表示JDK环境配置正确。 ##### 2.Eclipse的安装与汉化 **2.1 Eclipse的下载** Eclipse是常用的集成开发环境之一,用于Android应用开发。官方下载地址为:...

    Windows XP memcached的安装与PHP的调用

    通过上述步骤,您可以在 Windows XP 系统上成功安装和配置 Memcached,并使其与 PHP 环境集成。Memcached 的使用可以显著提高 Web 应用程序的性能,尤其是在处理大量并发请求时。希望本文档能帮助您顺利完成 ...

    商业编程-源码-基于MS Index Server 的全文索引实现.zip

    **MS Index Server**是微软提供的一种集成在Windows NT/2000/XP/Server 2003等操作系统中的服务,它允许开发者创建和管理全文索引,以提高应用程序的数据检索速度。通过建立索引,MS Index Server可以快速定位到包含...

    WindowsXP操作系统中FFTW的安装与使用

    本节将详细介绍如何在Windows XP环境下安装FFTW,以方便后续的开发和使用。 ##### 1. 下载FFTW预编译文件 首先,访问FFTW官方网站(http://www.fftw.org),下载最新版本的预编译文件。对于Windows XP 32位系统,推荐...

    JSP学习环境搭建完全攻略

    - **环境配置需求**:Windows 2000 + Apache 2 + Tomcat 4 + MySQL 4 + Mod_jk + Connector/J - **具体软件安装与配置**: - Java 2 SDK (J2SDK) 1.4.1 - Apache 2.0.45 - Tomcat 4.1.24 - MySQL 4.0.12 - ...

    tpframe开源框架v2.1 beta

    `phpunit.xml`是PHPUnit测试框架的配置文件,用于设定测试行为和环境。 `index.php`是入口文件,它是任何PHP Web应用的起点,负责加载框架并处理请求。`README.md`通常包含项目简介、安装指南、使用示例和贡献者...

    Android环境搭建

    本文将以Windows XP为例,详细介绍如何搭建Android开发环境,包括JDK的安装与配置、Android SDK的安装与配置、以及创建Android虚拟设备等步骤。 #### 二、安装与配置JDK 1. **下载JDK**: - 访问Oracle官方网站...

    Android开发环境搭建图解教程(完整过程详细步骤).pdf

    本文将以Windows XP系统为例,详细讲解Android开发环境的搭建过程。 **1. 安装JDK和配置Java开发环境** 由于Android应用是用Java语言编写的,因此必须先安装Java Development Kit (JDK)。JDK包含了Java运行环境JRE...

    java大学教材----完整版

    一旦环境配置完毕,开发者便可以使用集成开发环境(IDE)如Eclipse或JBuilder来编写和管理Java项目。对于简单程序,也可以使用TextPad、JEdit等文本编辑器配合命令行工具进行开发。IDE提供了代码编辑、编译、调试和...

    Android for PhoneGap 程式配置

    #### 二、开发环境配置 ##### 1. 系统环境 - **推荐系统**:Windows XP + JDK 1.7.0_17 - **所需资源**: - **Android ADT Bundle**:可通过官方网址`http://developer.android.com/sdk/index.html`获取。 - **...

    log4cpp-docs-1.0.tar.gz

    《log4cpp-docs-1.0:C++日志框架的...总结来说,log4cpp-docs-1.0提供了log4cpp的官方使用指南,无论是在Linux还是Windows XP环境下,都可以帮助开发者有效地利用这一强大的日志库,提高软件的可维护性和调试效率。

    java快速学习.pdf

    本章节详细介绍了Java开发环境的搭建过程,包括J2SDK的下载与安装、系统环境变量的配置以及API文档的使用。此外,还提供了一个简单的Java程序示例,帮助读者理解Java程序的基本结构。通过这些基础知识的学习,读者将...

    android开发环境搭建

    搭建Android开发环境是每个Android开发者必经的步骤,下面将详细介绍如何在Windows XP系统下配置Android开发环境。 首先,我们需要下载以下几个关键组件: 1. **Java JDK** - Java Development Kit(JDK)是开发...

Global site tag (gtag.js) - Google Analytics