*/
package org.opengion.fukurou.taglet; // 7.4.4.0 (2021/06/30) openGionV8事前準備(taglet2→taglet)
-import jdk.javadoc.doclet.DocletEnvironment ;
-// import jdk.javadoc.doclet.Doclet ;
-// import jdk.javadoc.doclet.Reporter ;
-// import javax.lang.model.element.Element ;
-import javax.lang.model.element.Modifier ;
+import jdk.javadoc.doclet.DocletEnvironment;
+// import jdk.javadoc.doclet.Doclet;
+// import jdk.javadoc.doclet.Reporter;
+// import javax.lang.model.element.Element;
+import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
-// import javax.lang.model.element.ElementKind ;
+// import javax.lang.model.element.ElementKind;
// import javax.lang.model.element.VariableElement;
-// import javax.lang.model.SourceVersion ;
+// import javax.lang.model.SourceVersion;
import javax.lang.model.type.TypeMirror;
// import javax.lang.model.type.PrimitiveType;
-import javax.lang.model.util.ElementFilter ;
-import javax.lang.model.util.Elements ;
-// import javax.lang.model.util.Types ;
-import javax.tools.Diagnostic.Kind ;
-import com.sun.source.doctree.DocCommentTree ;
-import com.sun.source.util.DocTrees ;
-// import com.sun.source.doctree.DocTree ;
-
-// import java.util.Locale ;
+import javax.lang.model.util.ElementFilter;
+import javax.lang.model.util.Elements;
+// import javax.lang.model.util.Types;
+import javax.tools.Diagnostic.Kind;
+import com.sun.source.doctree.DocCommentTree;
+import com.sun.source.util.DocTrees;
+// import com.sun.source.doctree.DocTree;
+
+// import java.util.Locale;
import java.util.Set;
import java.util.List;
import java.util.HashSet;
// import org.opengion.fukurou.util.StringUtil;
/**
- * ソースコメントから、パラメータ情報を取り出す Doclet クラスです。
- * og.paramLevel タグと og.cryptography タグを切り出します。
- * これらは、システムパラメータとしてGE12テーブルに設定される値をクラスより抽出する
- * のに使用します。
+ * ソースコメントから、パラメータ情報を取り出す Doclet クラスです。
+ * og.paramLevel タグと og.cryptography タグを切り出します。
+ * これらは、システムパラメータとしてGE12テーブルに設定される値をクラスより抽出する
+ * のに使用します。
*
- * @version 7.3
+ * @version 7.3
* @author Kazuhiko Hasegawa
- * @since JDK11.0,
+ * @since JDK11.0,
*/
public class DocTreePlugin extends AbstractDocTree {
- private static final String OG_FOR_SMPL = "og.formSample";
+ private static final String OG_FOR_SMPL = "og.formSample";
- /** 6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。 */
- // 6.4.3.3 (2016/03/04) 匿名クラスとインスタンス初期化子による、Mapの初期化処理。
- /** staticイニシャライザ後、読み取り専用にするので、ConcurrentHashMap を使用しません。 */
+ /** 6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。 */
+ // 6.4.3.3 (2016/03/04) 匿名クラスとインスタンス初期化子による、Mapの初期化処理。
+ /** staticイニシャライザ後、読み取り専用にするので、ConcurrentHashMap を使用しません。 */
private static final Map<String,AttKeySet> ATT_KEY_MAP = new HashMap<>();
static {
int no = 0; // 7.2.2.0 (2020/03/27) 連番の自動生成
- ATT_KEY_MAP.put( "org.opengion.hayabusa.db.Query" , new AttKeySet( "Query" ,no++, "queryType" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.db.CellRenderer" , new AttKeySet( "Renderer" ,no++, "renderer" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.db.CellEditor" , new AttKeySet( "Editor" ,no++, "editor" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.db.DBType" , new AttKeySet( "DBType" ,no++, "dbType" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.db.TableFilter" , new AttKeySet( "TableFilter" ,no++, "tableFilter" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.db.Selection" , new AttKeySet( "Selection" ,no++, "selection" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.db.DBConstValue" , new AttKeySet( "DBConstValue" ,no++, "cnstVal" )); // 5.6.3.3 (2013/04/19)
- ATT_KEY_MAP.put( "org.opengion.hayabusa.html.ViewForm" , new AttKeySet( "ViewForm" ,no++, "viewFormType" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.io.TableWriter" , new AttKeySet( "TableWriter" ,no++, "writerClass" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.io.TableReader" , new AttKeySet( "TableReader" ,no++, "readerClass" ));
-// ATT_KEY_MAP.put( "org.opengion.hayabusa.report.DBTableReport" , new AttKeySet( "DBTableReport" ,no++, "tableReport" )); // 7.0.1.5 (2018/12/10) 削除
- ATT_KEY_MAP.put( "org.opengion.hayabusa.resource.CalendarQuery" , new AttKeySet( "CalendarQuery" ,no++, "calDB" ));
- ATT_KEY_MAP.put( "org.opengion.hayabusa.resource.CalendarData" , new AttKeySet( "CalendarData" ,no++, "calData" )); // 5.6.3.3 (2013/04/19)
- ATT_KEY_MAP.put( "org.opengion.fukurou.process.HybsProcess" , new AttKeySet( "Process" ,no++, "process" ));
-// ATT_KEY_MAP.put( "org.opengion.fukurou.transfer.TransferExec" , new AttKeySet( "TransferExec" ,no++, "kbExec" )); // 5.5.3.5 (2012/06/21)
-// ATT_KEY_MAP.put( "org.opengion.fukurou.transfer.TransferRead" , new AttKeySet( "TransferRead" ,no++, "kbRead" )); // 5.5.3.5 (2012/06/21)
- ATT_KEY_MAP.put( "org.opengion.fukurou.util.HybsTimerTask" , new AttKeySet( "Daemon" ,no++, "daemon" )); // 4.3.4.4 (2009/01/01)
- ATT_KEY_MAP.put( "org.opengion.fukurou.util.ConnectIF " , new AttKeySet( "ConnectIF" ,no++, "connIF" )); // 5.6.3.3 (2013/04/19)
- ATT_KEY_MAP.put( "org.opengion.fukurou.xml.JspParserFilter" , new AttKeySet( "JspCreate" ,no++, "jspParser" )); // 5.6.3.3 (2013/04/19)
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.db.Query" , new AttKeySet( "Query" ,no++, "queryType" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.db.CellRenderer" , new AttKeySet( "Renderer" ,no++, "renderer" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.db.CellEditor" , new AttKeySet( "Editor" ,no++, "editor" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.db.DBType" , new AttKeySet( "DBType" ,no++, "dbType" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.db.TableFilter" , new AttKeySet( "TableFilter" ,no++, "tableFilter" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.db.Selection" , new AttKeySet( "Selection" ,no++, "selection" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.db.DBConstValue" , new AttKeySet( "DBConstValue" ,no++, "cnstVal" )); // 5.6.3.3 (2013/04/19)
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.html.ViewForm" , new AttKeySet( "ViewForm" ,no++, "viewFormType" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.io.TableWriter" , new AttKeySet( "TableWriter" ,no++, "writerClass" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.io.TableReader" , new AttKeySet( "TableReader" ,no++, "readerClass" ));
+// ATT_KEY_MAP.put( "org.opengion.hayabusa.report.DBTableReport" , new AttKeySet( "DBTableReport" ,no++, "tableReport" )); // 7.0.1.5 (2018/12/10) 削除
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.resource.CalendarQuery" , new AttKeySet( "CalendarQuery" ,no++, "calDB" ));
+ ATT_KEY_MAP.put( "org.opengion.hayabusa.resource.CalendarData" , new AttKeySet( "CalendarData" ,no++, "calData" )); // 5.6.3.3 (2013/04/19)
+ ATT_KEY_MAP.put( "org.opengion.fukurou.process.HybsProcess" , new AttKeySet( "Process" ,no++, "process" ));
+// ATT_KEY_MAP.put( "org.opengion.fukurou.transfer.TransferExec" , new AttKeySet( "TransferExec" ,no++, "kbExec" )); // 5.5.3.5 (2012/06/21)
+// ATT_KEY_MAP.put( "org.opengion.fukurou.transfer.TransferRead" , new AttKeySet( "TransferRead" ,no++, "kbRead" )); // 5.5.3.5 (2012/06/21)
+ ATT_KEY_MAP.put( "org.opengion.fukurou.util.HybsTimerTask" , new AttKeySet( "Daemon" ,no++, "daemon" )); // 4.3.4.4 (2009/01/01)
+// ATT_KEY_MAP.put( "org.opengion.fukurou.util.ConnectIF " , new AttKeySet( "ConnectIF" ,no++, "connIF" )); // 5.6.3.3 (2013/04/19) 8.5.2.0 (2023/07/14) Delete
+ ATT_KEY_MAP.put( "org.opengion.fukurou.xml.JspParserFilter" , new AttKeySet( "JspCreate" ,no++, "jspParser" )); // 5.6.3.3 (2013/04/19)
}
private String version ;
private String outfile ;
// private DocTrees docUtil;
-// private Elements eleUtil ;
+// private Elements eleUtil;
/**
- * Doclet のエントリポイントメソッドです(昔の startメソッド)。
+ * Doclet のエントリポイントメソッドです(昔の startメソッド)。
*
* @og.rev 7.3.0.0 (2021/01/06) 新しいJavaDoc対応
*
- * @param docEnv ドックレットを1回呼び出す操作環境
- *
- * @return 正常実行時 true
+ * @param docEnv ドックレットを1回呼び出す操作環境
+ * @return 正常実行時 true
*/
@Override
public boolean run( final DocletEnvironment docEnv ) {
try( DocTreeWriter writer = new DocTreeWriter( outfile,ENCODE ) ) {
- // 5.7.1.1 (2013/12/13) タグのインデントを止める。
+ // 5.7.1.1 (2013/12/13) タグのインデントを止める。
writer.printTag( "<?xml version=\"1.0\" encoding=\"", ENCODE, "\" ?>" );
writer.printTag( "<javadoc>" );
writer.printTag( " <version>",version,"</version>" );
}
/**
- * DocletEnvironmentよりコンテンツを作成します。
+ * DocletEnvironmentよりコンテンツを作成します。
*
* @og.rev 7.3.0.0 (2021/01/06) 新しいJavaDoc対応
- * @og.rev 8.0.2.1 (2021/12/10) コメント分割で『。』と半角の『。』の両方対応しておく。
+ * @og.rev 8.0.2.1 (2021/12/10) コメント分割で『。』と半角の『。』の両方対応しておく。
*
- * @param docEnv ドックレットの最上位
- * @param writer DocTreeWriterオブジェクト
+ * @param docEnv ドックレットの最上位
+ * @param writer DocTreeWriterオブジェクト
*/
private void writeContents( final DocletEnvironment docEnv, final DocTreeWriter writer ) {
// docUtil = docEnv.getDocTrees();
final DocTrees docUtil = docEnv.getDocTrees();
final Elements eleUtil = docEnv.getElementUtils();
- // クラス単位にループする。
+ // クラス単位にループする。
for( final TypeElement typEle : ElementFilter.typesIn(docEnv.getIncludedElements())) {
if( !typEle.getModifiers().contains( Modifier.PUBLIC ) ) { continue; }
writer.setClassName( fullName );
final AttKeySet attSet = getAttGroupName( typEle,eleUtil ) ;
- if( attSet == null ) { continue; } // map に登録されていない。
+ if( attSet == null ) { continue; } // map に登録されていない。
final int ed = fullName.lastIndexOf( '.' );
String attKey = null;
final String name = fullName.substring( ed+1 );
attKey = attSet.getAttKey( name );
}
- if( attKey == null ) { continue; } // 対象クラス名が、一致しない。
+ if( attKey == null ) { continue; } // 対象クラス名が、一致しない。
- final DocCommentTree docTree = docUtil.getDocCommentTree(typEle); // ドキュメンテーション・コメントが見つからない場合、null が返る。
+ final DocCommentTree docTree = docUtil.getDocCommentTree(typEle); // ドキュメンテーション・コメントが見つからない場合、null が返る。
// final List<? extends DocTree> desc = docTree == null ? EMPTY_LIST : docTree.getFirstSentence();
// final List<? extends DocTree> cmnt = docTree == null ? EMPTY_LIST : docTree.getFullBody();
- final String[] cmnts = getTitleCmnt( docTree ); // 8.0.2.1 (2021/12/10)
+ final String[] cmnts = getTitleCmnt( docTree ); // 8.0.2.1 (2021/12/10)
final Map<String,List<String>> blkTagMap = blockTagsMap(docTree);
final String smplTags = getBlockTag( OG_FOR_SMPL, blkTagMap, "" );
// }
// }
- // 5.7.1.1 (2013/12/13) タグのインデントを止める。
+ // 5.7.1.1 (2013/12/13) タグのインデントを止める。
writer.printTag( "<classDoc>" );
writer.printTag( " <attClass>" ,fullName ,"</attClass>" );
writer.printTag( " <seq>" ,attSet.getSeq() ,"</seq>" );
writer.printTag( " <attKey>" ,attKey ,"</attKey>" );
writer.printTag( " <valueName>" ,attSet.getValueName() ,"</valueName>" );
// writer.printTag( " <description>" ,desc ,"</description>" );
- writer.printTag( " <description>" ,cmnts[0] ,"</description>" ); // 8.0.2.1 (2021/12/10)
+ writer.printTag( " <description>" ,cmnts[0] ,"</description>" ); // 8.0.2.1 (2021/12/10)
// writer.printTag( " <contents>" ,cmnt ,"</contents>" );
- writer.printTag( " <contents>" ,cmnts[1] ,"</contents>" ); // 8.0.2.1 (2021/12/10)
+ writer.printTag( " <contents>" ,cmnts[1] ,"</contents>" ); // 8.0.2.1 (2021/12/10)
writer.printTag( " <formSample>" ,smplTags ,"</formSample>" );
writer.printTag( "</classDoc>" );
}
}
/**
- * 指定の ClassDoc が、処理する属性クラスのMapに含まれている場合、
- * その AttKeySet クラスのオブジェクトを返します。
- * 存在しない場合、null を返します。
+ * 指定の ClassDoc が、処理する属性クラスのMapに含まれている場合、
+ * その AttKeySet クラスのオブジェクトを返します。
+ * 存在しない場合、null を返します。
*
* @og.rev 7.3.0.0 (2021/01/06) 新しいJavaDoc対応
*
- * @param typEle TypeElementオブジェクト
- * @param eleUtil Elementsユーティリティ
- *
- * @return typEleに対応する AttKeySetオブジェクト
+ * @param typEle TypeElementオブジェクト
+ * @param eleUtil Elementsユーティリティ
+ * @return typEleに対応する AttKeySetオブジェクト
*/
private static AttKeySet getAttGroupName( final TypeElement typEle,final Elements eleUtil ) {
if( typEle == null ) { return null; }
if( attKey != null ) { return attKey; }
}
- final TypeMirror stype = typEle.getSuperclass(); // 親クラスタイプ
+ final TypeMirror stype = typEle.getSuperclass(); // 親クラスタイプ
if( stype != null ) {
final String suCls = String.valueOf( stype );
- attKey = ATT_KEY_MAP.get( suCls ); // 親クラス
+ attKey = ATT_KEY_MAP.get( suCls ); // 親クラス
if( attKey == null ) {
for( final TypeElement tp : eleUtil.getAllTypeElements(suCls) ) {
if( typEle.equals( tp ) ) { continue; }
}
if( attKey == null ) {
- for( final TypeMirror itype : typEle.getInterfaces() ) { // 直近インターフェース
+ for( final TypeMirror itype : typEle.getInterfaces() ) { // 直近インターフェース
final String intFce = String.valueOf( itype );
attKey = ATT_KEY_MAP.get( intFce );
if( attKey != null ) { return attKey; }
}
/**
- * 属性情報を管理する、AttKeySet クラスです。
+ * 属性情報を管理する、AttKeySet クラスです。
*
* @og.rev 7.3.0.0 (2021/01/06) 新しいJavaDoc対応
*
- * @version 4.0
- * @author Kazuhiko Hasegawa
- * @since JDK5.0,
+ * @version 4.0
+ * @author Kazuhiko Hasegawa
+ * @since JDK5.0,
*/
private static final class AttKeySet {
private final String searchKey ;
private final String valueName ;
/**
- * コンストラクター
- *
- * @param searchKey 検索キー
- * @param seq シーケンス番号
- * @param valueName 属性名
+ * コンストラクター
*
+ * @param searchKey 検索キー
+ * @param seq シーケンス番号
+ * @param valueName 属性名
*/
/* default */ AttKeySet( final String searchKey,final int seq,final String valueName ) {
- this.searchKey = searchKey ;
- this.seq = String.valueOf( seq );
- this.valueName = valueName ;
+ this.searchKey = searchKey ;
+ this.seq = String.valueOf( seq );
+ this.valueName = valueName ;
len = searchKey.length();
}
/**
- * シーケンス番号を返します。
+ * シーケンス番号を返します。
*
- * @return シーケンス番号
+ * @return シーケンス番号
*
*/
/* default */ String getSeq() {
}
/**
- * 属性名を返します。
- *
- * @return 属性名
+ * 属性名を返します。
*
+ * @return 属性名
*/
/* default */ String getValueName() {
return valueName;
}
/**
- * クラス名の先頭一致の場合の、**** 部分を返します。
- * インターフェースも扱えるように修正しましたので、先頭が _ の場合は、
- * _ を削除して返します。
+ * クラス名の先頭一致の場合の、**** 部分を返します。
+ * インターフェースも扱えるように修正しましたので、先頭が _ の場合は、
+ * _ を削除して返します。
*
- * @param name クラスの名称 (例:DBCellEditor_**** , ViewForm_****)
- * @return クラス名の**** 部分
+ * @param name クラスの名称 (例:DBCellEditor_**** , ViewForm_****)
+ * @return クラス名の**** 部分
*/
/* default */ String getAttKey( final String name ) {
// 6.1.0.0 (2014/12/26) refactoring
- String rtn = null; // 一致しなかった。
+ String rtn = null; // 一致しなかった。
- if( name.equals( searchKey ) ) { // 完全一致:インターフェース
+ if( name.equals( searchKey ) ) { // 完全一致:インターフェース
rtn = "(Interface)" + name ;
}
- else if( name.indexOf( searchKey ) == 0 ) { // 先頭一致した。
+ else if( name.indexOf( searchKey ) == 0 ) { // 先頭一致した。
rtn = name.substring( len );
if( rtn.charAt(0) == '_' ) { rtn = rtn.substring( 1 ); } // 先頭が _ の場合は、_ を削除
}
}
/**
- * サポートされているすべてのオプションを返します。
+ * サポートされているすべてのオプションを返します。
*
- * @return サポートされているすべてのオプションを含むセット、存在しない場合は空のセット
+ * @return サポートされているすべてのオプションを含むセット、存在しない場合は空のセット
*/
@Override
public Set<? extends Option> getSupportedOptions() {
new AbstractOption( "-outfile", "-version" ) {
/**
- * 必要に応じてオプションと引数を処理します。
+ * 必要に応じてオプションと引数を処理します。
*
- * @param opt オプション名
- * @param arguments 引数をカプセル化したリスト
- * @return 操作が成功した場合はtrue、そうでない場合はfalse
+ * @param opt オプション名
+ * @param arguments 引数をカプセル化したリスト
+ * @return 操作が成功した場合はtrue、そうでない場合はfalse
*/
@Override
public boolean process(final String opt, final List<String> arguments) {