亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? doclet.java

?? 非常棒的java數據庫
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (license2)
 * Initial Developer: H2 Group
 */
package org.h2.tools.doclet;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;

import org.h2.util.StringUtils;

import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.FieldDoc;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.ParamTag;
import com.sun.javadoc.Parameter;
import com.sun.javadoc.RootDoc;
import com.sun.javadoc.Tag;
import com.sun.javadoc.ThrowsTag;
import com.sun.javadoc.Type;

/**
 * This class is a custom doclet implementation to generate the
 * Javadoc for this product.
 */
public class Doclet {

    private static final boolean INTERFACES_ONLY = Boolean.getBoolean("h2.interfacesOnly");
    private int errorCount;
    private HashSet errors = new HashSet();

    public static boolean start(RootDoc root) throws IOException {
        return new Doclet().startDoc(root);
    }
    
    public boolean startDoc(RootDoc root) throws IOException {
        ClassDoc[] classes = root.classes();
        String[][] options = root.options();
        String destDir = System.getProperty("h2.destDir", "docs/javadoc");
        for (int i = 0; i < options.length; i++) {
            if (options[i][0].equals("destdir")) {
                destDir = options[i][1];
            }
        }
        for (int i = 0; i < classes.length; ++i) {
            ClassDoc clazz = classes[i];
            processClass(destDir, clazz);
        }
        if (errorCount > 0) {
            throw new IOException("FAILED: " + errorCount + " errors found");
        }
        return true;
    }

    private static String getClass(String name) {
        if (name.startsWith("Jdbc")) {
            return name.substring(4);
        }
        return name;
    }

    private void processClass(String destDir, ClassDoc clazz) throws IOException {
        String packageName = clazz.containingPackage().name();
        String dir = destDir + "/" + packageName.replace('.', '/');
        (new File(dir)).mkdirs();
        String fileName = dir + "/" + clazz.name() + ".html";
        String className = getClass(clazz.name());
        FileWriter out = new FileWriter(fileName);
        PrintWriter writer = new PrintWriter(new BufferedWriter(out));
        writer.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" " + 
                "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
        String language = "en";
        writer.println("<html xmlns=\"http://www.w3.org/1999/xhtml\" " +
                "lang=\"" + language + "\" xml:lang=\"" + language + "\">");
        writer.println("<head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" /><title>");
        writer.println(className);
        writer.println("</title><link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" /></head><body>");
        writer.println("<table class=\"content\"><tr class=\"content\"><td class=\"content\"><div class=\"contentDiv\">");
        writer.println("<h1>" + className + "</h1>");
        writer.println(formatText(clazz.commentText()) + "<br /><br />");

        // method overview
        MethodDoc[] methods = clazz.methods();
        Arrays.sort(methods, new Comparator() {
            public int compare(Object a, Object b) {
                return ((MethodDoc) a).name().compareTo(((MethodDoc) b).name());
            }
        });
        boolean hasMethods = false;
        for (int i = 0; i < methods.length; i++) {
            MethodDoc method = methods[i];
            String name = method.name();
            if (skipMethod(method)) {
                continue;
            }
            if (!hasMethods) {
                writer.println("<table><tr><th colspan=\"2\">Methods</th></tr>");
                hasMethods = true;
            }
            String type = getTypeName(method.isStatic(), method.returnType());
            writer.println("<tr><td class=\"return\">" + type + "</td><td class=\"method\">");
            Parameter[] params = method.parameters();
            StringBuffer buff = new StringBuffer();
            buff.append('(');
            for (int j = 0; j < params.length; j++) {
                if (j > 0) {
                    buff.append(", ");
                }
                buff.append(getTypeName(false, params[j].type()));
                buff.append(' ');
                buff.append(params[j].name());
            }
            buff.append(')');
            if (isDeprecated(method)) {
                name = "<span class=\"deprecated\">" + name + "</span>";
            }
            writer.println("<a href=\"#r" + i + "\">" + name + "</a>" + buff.toString());
            String firstSentence = getFirstSentence(method.firstSentenceTags());
            if (firstSentence != null) {
                writer.println("<div class=\"methodText\">" + formatText(firstSentence) + "</div>");
            }
            writer.println("</td></tr>");
        }
        if (hasMethods) {
            writer.println("</table>");
        }

        // field overview
        FieldDoc[] fields = clazz.fields();
        if (clazz.interfaces().length > 0) {
            fields = clazz.interfaces()[0].fields();
        }
        Arrays.sort(fields, new Comparator() {
            public int compare(Object a, Object b) {
                return ((FieldDoc) a).name().compareTo(((FieldDoc) b).name());
            }
        });
        int fieldId = 0;
        for (int i = 0; i < fields.length; i++) {
            FieldDoc field = fields[i];
            if (skipField(clazz, field)) {
                continue;
            }
            String name = field.name();
            String text = field.commentText();
            if (text == null || text.trim().length() == 0) {
                addError("Undocumented field (" + clazz.name() + ".java:" + field.position().line() + ") " + name);
            }
            if (text.startsWith("INTERNAL")) {
                continue;
            }
            if (fieldId == 0) {
                writer.println("<br /><table><tr><th colspan=\"2\">Fields</th></tr>");
            }
            String type = getTypeName(true, field.type());
            writer.println("<tr><td class=\"return\">" + type + "</td><td class=\"method\">");
            String constant = field.constantValueExpression();

            // add a link (a name) if there is a <code> tag
            String link = getFieldLink(text, constant, clazz, name);
            writer.print("<a href=\"#" + link + "\">" + name + "</a>");
            if (constant == null) {
                writer.println();
            } else {
                writer.println(" = " + constant);
            }
            writer.println("</td></tr>");
            fieldId++;
        }
        if (fieldId > 0) {
            writer.println("</table>");
        }

        // message details
        for (int i = 0; i < methods.length; i++) {
            MethodDoc method = methods[i];
            String name = method.name();
            if (skipMethod(method)) {
                continue;
            }
            String type = getTypeName(method.isStatic(), method.returnType());
            writer.println("<a name=\"r" + i + "\"></a>");
            Parameter[] params = method.parameters();
            StringBuffer buff = new StringBuffer();
            buff.append('(');
            for (int j = 0; j < params.length; j++) {
                if (j > 0) {
                    buff.append(", ");
                }
                buff.append(getTypeName(false, params[j].type()));
                buff.append(' ');
                buff.append(params[j].name());
            }
            buff.append(')');
            ClassDoc[] exceptions = method.thrownExceptions();
            if (exceptions.length > 0) {
                buff.append(" throws ");
                for (int k = 0; k < exceptions.length; k++) {
                    if (k > 0) {
                        buff.append(", ");
                    }
                    buff.append(exceptions[k].typeName());
                }
            }
            if (isDeprecated(method)) {
                name = "<span class=\"deprecated\">" + name + "</span>";
            }
            writer.println("<h4>" + type + " <span class=\"methodName\">" + name + "</span>" + buff.toString()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区福利在线| 亚洲国产一区二区三区青草影视| 欧美伦理电影网| 91视频免费观看| 97久久超碰国产精品| 不卡一区二区三区四区| 99热99精品| 欧美日韩一二三区| 91精品国产免费久久综合| 欧美美女激情18p| 日韩欧美一级特黄在线播放| 日韩一区二区三区电影在线观看 | 中文字幕在线不卡| 国产精品免费视频观看| 日韩一区在线免费观看| 亚洲影院免费观看| 日本成人中文字幕在线视频| 精品一二三四在线| eeuss鲁片一区二区三区在线看| 色域天天综合网| 欧美一区三区四区| 国产日产欧美一区| 亚洲综合色成人| 久久国产成人午夜av影院| 国产精品一区免费在线观看| av在线不卡电影| 欧美麻豆精品久久久久久| 久久只精品国产| 亚洲精品中文在线观看| 蜜臀久久久99精品久久久久久| 国产乱码精品一区二区三区忘忧草| 成人精品鲁一区一区二区| 精品视频色一区| 久久精品人人做人人综合| 亚洲男同性视频| 精品一区二区三区不卡| 色诱视频网站一区| 久久影院午夜片一区| 一区二区三区91| 国产老肥熟一区二区三区| 日本丶国产丶欧美色综合| 精品免费视频一区二区| 亚洲中国最大av网站| 国产高清不卡二三区| 欧美巨大另类极品videosbest | 国产一区二区精品久久99| 一本大道久久a久久综合婷婷| 51精品秘密在线观看| 亚洲欧洲精品成人久久奇米网 | www成人在线观看| 亚洲人精品午夜| 国产一区二区三区观看| 正在播放亚洲一区| 一区二区三区在线播| 国产.精品.日韩.另类.中文.在线.播放| 欧美日韩一二三| 亚洲精品乱码久久久久久久久| 国产麻豆欧美日韩一区| 日韩亚洲电影在线| 五月天亚洲婷婷| 91麻豆国产福利精品| 国产精品视频yy9299一区| 麻豆精品在线播放| 欧美久久高跟鞋激| 亚洲一区二区三区中文字幕| 91美女在线观看| 成人免费视频在线观看| 国产91丝袜在线播放0| 久久蜜桃香蕉精品一区二区三区| 男男gaygay亚洲| 91精品国产品国语在线不卡| 亚洲国产成人高清精品| 欧美日韩美女一区二区| 亚洲国产精品嫩草影院| 欧美人妖巨大在线| 香蕉乱码成人久久天堂爱免费| 欧美色男人天堂| 亚欧色一区w666天堂| 欧美日韩精品一区二区天天拍小说 | 欧美精品一区二区三区在线| 蜜桃视频第一区免费观看| 日韩一区二区三区精品视频| 久久99久国产精品黄毛片色诱| 日韩欧美成人午夜| 韩国在线一区二区| 国产日产精品一区| av动漫一区二区| 亚洲在线观看免费| 91精品国产入口| 国产一区高清在线| 中文字幕日韩av资源站| 欧美亚洲高清一区| 日韩—二三区免费观看av| 欧美大肚乱孕交hd孕妇| 国产精品99久久久久| 国产精品美女一区二区在线观看| 91亚洲国产成人精品一区二三| 一区二区三区四区不卡视频| 91精品国产色综合久久不卡电影 | 免费日韩伦理电影| 国产日韩精品视频一区| 色噜噜狠狠一区二区三区果冻| 亚洲伊人伊色伊影伊综合网| 7777精品伊人久久久大香线蕉经典版下载| 奇米综合一区二区三区精品视频| 国产日韩欧美高清在线| 欧美性色欧美a在线播放| 日本不卡在线视频| 中文字幕亚洲一区二区va在线| 欧洲激情一区二区| 精品一区二区三区视频| 亚洲人成伊人成综合网小说| 日韩欧美国产成人一区二区| caoporn国产精品| 蜜臀av性久久久久av蜜臀妖精| 亚洲国产精品成人久久综合一区| 欧美日韩三级视频| 国产suv一区二区三区88区| 亚洲午夜久久久久中文字幕久| 精品精品国产高清a毛片牛牛| 色综合天天性综合| 精品一区二区成人精品| 亚洲综合一区在线| 国产午夜亚洲精品羞羞网站| 欧美性猛交xxxx乱大交退制版 | 日本一区二区三区高清不卡| 欧美精品久久天天躁| 97久久人人超碰| 国产在线麻豆精品观看| 日韩成人一区二区| 亚洲综合男人的天堂| 国产精品丝袜一区| 久久影院电视剧免费观看| 欧美情侣在线播放| 欧美在线free| 寂寞少妇一区二区三区| 亚洲午夜视频在线| 亚洲乱码中文字幕| 国产精品高潮呻吟| 欧美韩日一区二区三区四区| 精品久久99ma| xnxx国产精品| 久久综合久久综合久久综合| 91精品在线一区二区| 欧美日本在线播放| 欧美性欧美巨大黑白大战| 一本到三区不卡视频| 91美女福利视频| 91碰在线视频| 色综合天天综合狠狠| 色综合视频在线观看| 97久久精品人人做人人爽| 99精品视频一区二区三区| 成人av手机在线观看| 波多野结衣在线一区| 成人福利视频在线看| aaa欧美大片| 色婷婷亚洲精品| 在线观看日韩一区| 欧美三级韩国三级日本一级| 欧美日韩精品是欧美日韩精品| 欧美在线free| 欧美一级久久久久久久大片| 日韩精品一区二区三区蜜臀| 欧美精品一区二区三区很污很色的| 欧美精品一区二区三区四区| 国产欧美日韩中文久久| 中文字幕高清不卡| 亚洲人成网站在线| 日精品一区二区| 精品综合久久久久久8888| 激情图区综合网| av在线综合网| 欧美视频在线播放| www激情久久| 成人欧美一区二区三区1314| 伊人色综合久久天天| 五月天中文字幕一区二区| 久久99国产乱子伦精品免费| 国产成人av网站| 欧美在线影院一区二区| 欧美成人伊人久久综合网| 日本一区二区三区四区在线视频| 樱花影视一区二区| 蜜臀精品久久久久久蜜臀| 成人99免费视频| 91精品国产综合久久香蕉麻豆| 久久久久久99久久久精品网站| 亚洲欧洲一区二区在线播放| 午夜精品福利在线| 国产1区2区3区精品美女| 欧美性感一类影片在线播放| 久久久久国产精品免费免费搜索| 亚洲手机成人高清视频| 久久99国产精品免费| 一本到高清视频免费精品| 久久先锋影音av| 午夜精品免费在线| 99热这里都是精品| 精品久久久久久久久久久久包黑料 |