0
点赞
收藏
分享

微信扫一扫

我的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=\"" 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> ");
						}
					} 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=" 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

举报

相关推荐

0 条评论