/**
* モデル名を返す。
+ *
* @return モデル名
*/
public I18nText getModelName(){
/**
* モデル説明文を返す。
* 改行表現には{@literal \n}が用いられる
+ *
* @return モデル説明文
*/
public I18nText getDescription(){
/**
* 頂点リストを返す。
+ *
* @return 頂点リスト。
*/
public List<Vertex> getVertexList(){
/**
* 面リストを返す。
+ *
* @return 面リスト
*/
public List<Surface> getSurfaceList(){
/**
* 素材リストを返す。
+ *
* @return 素材リスト
*/
public List<Material> getMaterialList(){
/**
* ボーンリストを返す。
+ *
* @return ボーンリスト
*/
public List<BoneInfo> getBoneList(){
/**
* ボーングループリストを返す。
+ *
* @return ボーングループリスト
*/
public List<BoneGroup> getBoneGroupList(){
/**
* IKチェーンリストを返す。
+ *
* @return IKチェーンリスト
*/
public List<IKChain> getIKChainList(){
/**
* 種類別モーフリストのマップを返す。
+ *
* @return 種類別モーフリストのマップ
*/
public Map<MorphType, List<MorphPart>> getMorphMap(){
/**
* 剛体リストを返す。
+ *
* @return 剛体リスト
*/
public List<RigidInfo> getRigidList(){
/**
* 剛体グループリストを返す。
+ *
* @return 剛体グループリスト。
*/
public List<RigidGroup> getRigidGroupList(){
/**
* 剛体間ジョイントリストを返す。
+ *
* @return 剛体間ジョイントリスト
*/
public List<JointInfo> getJointList(){
/**
* トゥーンファイルマップを返す。
+ *
* @return トゥーンファイルマップ
*/
public ToonMap getToonMap(){
/**
* トゥーンファイルマップを設定する。
* 各素材のシェーディングで参照するトゥーンファイルマップも更新される。
+ *
* @param map トゥーンファイルマップ
*/
public void setToonMap(ToonMap map){
/**
* このモデルがグローバル名を含むか判定する。
* ボーン名、ボーングループ名、モーフ名、モデル説明文が判定対象。
+ *
* @return グローバル名を持つならtrue
*/
public boolean hasGlobalText(){
/**
* 全モーフが使う全モーフ頂点の出現順リストを返す。
* モーフ種別毎に固まっている事が保証される。
+ *
* @return モーフ頂点リスト
*/
private List<MorphVertex> getAllMorphVertexList(){
/**
* 重複する頂点参照を除いたモーフ頂点リストを返す。
+ *
* @param allList モーフ頂点リスト
* @return 重複が除かれたモーフ頂点リスト
*/
* モーフで使われる全てのモーフ頂点のリストを返す。
* モーフ間で重複する頂点はマージされる。
* 頂点IDでソートされる。
- * <p>
- * 0から始まる通し番号がリナンバリングされる。
+ *
+ * <p>0から始まる通し番号がリナンバリングされる。
* 通し番号は返されるモーフ頂点リストの添え字番号と一致する。
+ *
* @return モーフに使われるモーフ頂点のリスト
*/
public List<MorphVertex> mergeMorphVertex(){
* 所属マテリアル順に再配置し、通し番号を割り振り直す。
* 所属マテリアルの無い面はリストの末端に配置される。
* 面リスト中のnullは削除され詰められる。
+ *
* @return トリミングされた面リスト
*/
private List<Surface> trimmingSurfaceList(){
* 通し番号を振り直す。
* 所属面の無い頂点はリストの末端に配置される。
* 頂点リスト中のnullは削除され詰められる。
+ *
* @return トリミングされた頂点リスト
*/
private List<Vertex> trimmingVertexList(){
/**
* 3頂点を設定する。
+ *
* @param vtx1 頂点1
* @param vtx2 頂点2
* @param vtx3 頂点3
/**
* 3頂点を返す。
+ *
* @param store 頂点格納用配列。nullもしくは3要素に満たない場合は無視され、
- * 新規に格納用配列が生成される。
+ * 新規に格納用配列が生成される。
* @return 先頭3要素に3頂点が収められた配列。未設定要素にはnullが入る。
- * 引数が長さ3以上の配列であれば引数と同じ配列が返る。
+ * 引数が長さ3以上の配列であれば引数と同じ配列が返る。
*/
public Vertex[] getTriangle(Vertex[] store){
Vertex[] result;
/**
* 頂点その1を返す。
+ *
* @return 頂点その1
*/
public Vertex getVertex1(){
/**
* 頂点その2を返す。
+ *
* @return 頂点その2
*/
public Vertex getVertex2(){
/**
* 頂点その3を返す。
+ *
* @return 頂点その3
*/
public Vertex getVertex3(){
* {@inheritDoc}
* 頂点を返す反復子を生成する。
* 反復子がnullを返す可能性もありうる。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 3頂点全てが設定されているか判定する。
+ *
* @return 3頂点とも非nullが設定されていればtrue
*/
public boolean isCompleted(){
/**
* {@inheritDoc}
+ *
* @param num {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 頂点位置座標を返す。
+ *
* @return 頂点の位置座標
*/
public MkPos3D getPosition(){
/**
* 法線ベクトルを返す。
+ *
* @return 法線ベクトル
*/
public MkVec3D getNormal(){
/**
* UVマップ座標を返す。
+ *
* @return UVマップ情報
*/
public MkPos2D getUVPosition(){
/**
* 頂点の属するボーンを設定する。
+ *
* @param boneAArg ボーンA
* @param boneBArg ボーンB
* @throws NullPointerException 引数がnull
/**
* ボーンAを返す。
+ *
* @return ボーンA
*/
public BoneInfo getBoneA(){
/**
* ボーンBを返す。
+ *
* @return ボーンB
*/
public BoneInfo getBoneB(){
/**
* ボーンAのウェイト値を設定する。
+ *
* @param weight ウェイト値。0(影響小)-100(影響大)
* @throws IllegalArgumentException ウェイト値が範囲外
*/
public void setWeightA(int weight) throws IllegalArgumentException{
- if( weight < MIN_WEIGHT
- || MAX_WEIGHT < weight ){
+ if( weight < MIN_WEIGHT
+ || MAX_WEIGHT < weight ){
throw new IllegalArgumentException();
}
this.boneWeight = weight;
/**
* ボーンBのウェイト値を設定する。
+ *
* @param weight ウェイト値。0(影響小)-100(影響大)
* @throws IllegalArgumentException ウェイト値が範囲外
*/
/**
* ボーンAのウェイト値を返す。
+ *
* @return ウェイト値
*/
public int getWeightA(){
/**
* ボーンBのウェイト値を返す。
+ *
* @return ウェイト値
*/
public int getWeightB(){
/**
* ボーンAのウェイト率を返す。
+ *
* @return ウェイト率。0.0(影響小)-1.0(影響大)
*/
public float getWeightRatioA(){
/**
* ボーンBのウェイト率を返す。
+ *
* @return ウェイト率。0.0(影響小)-1.0(影響大)
*/
public float getWeightRatioB(){
/**
* エッジを表示するか設定する。
* マテリアル材質単位の設定より優先度は高い。
+ *
* @param show 表示するならtrue
*/
public void setEdgeAppearance(boolean show){
/**
* エッジを表示するか判定する。
* マテリアル材質単位の設定より優先度は高い。
+ *
* @return 表示するならtrue
*/
public boolean getEdgeAppearance(){
/**
* {@inheritDoc}
+ *
* @param num {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
+ *
* @return {@inheritDoc}
*/
@Override
/**
* PMDファイルのエクスポーター(拡張無し基本フォーマット)。
- * <p>
- * 英名対応以降のPMDファイルフォーマットを
+ *
+ * <p>英名対応以降のPMDファイルフォーマットを
* 使いたくない場合はこのエクスポーターを用いて出力せよ。
*/
public class PmdExporterBase extends BinaryExporter{
/**
* コンストラクタ。
+ *
* @param stream 出力ストリーム
* @throws NullPointerException 引数がnull
*/
/**
* 改行文字の正規化を行う。
* CR(0x0d)およびCRLF(0x0d0a)がLF(0x0a)へと正規化される。
+ *
* @param text 文字列
* @return 正規化の行われた文字列。
*/
* 文字列の改行記号はLF(0x0a)に正規化される。
* エンコード結果がバイト長に満たない場合は
* 1つの0x00及びそれに続く複数の0xfdがパディングされる。
+ *
* @param text 文字列
* @param maxByteLength バイト長指定
* @throws IOException 出力エラー
* @throws IllegalTextExportException エンコード結果が
- * 指定バイト長をはみ出した。
+ * 指定バイト長をはみ出した。
*/
protected void dumpText(String text, int maxByteLength)
throws IOException, IllegalTextExportException{
/**
* モデルデータをPMDファイル形式で出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalPmdDataException モデルデータに不備が発見された
/**
* モデル基本情報を出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException モデル名もしくは説明が長すぎる
/**
* 頂点リストを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
*/
/**
* 個別の頂点データを出力する。
+ *
* @param vertex 頂点
* @throws IOException 出力エラー
*/
/**
* 面リストを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
*/
/**
* マテリアル素材リストを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException シェーディングファイル情報が長すぎる
/**
* フォンシェーディングの色情報を出力する。
+ *
* @param material マテリアル情報
* @throws IOException 出力エラー
*/
/**
* シェーディング情報を出力する。
+ *
* @param material マテリアル情報
* @throws IOException 出力エラー
* @throws IllegalTextExportException ファイル名が長すぎる
/**
* シェーディングファイル情報を出力する。
+ *
* @param shade シェーディング情報
* @throws IOException 出力エラー
* @throws IllegalTextExportException ファイル名が長すぎる
/**
* ボーンリストを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException ボーン名が長すぎる
/**
* 個別のボーン情報を出力する。
+ *
* @param bone ボーン情報
* @throws IOException 出力エラー
* @throws IllegalTextExportException ボーン名が長すぎる
/**
* IKチェーンリストを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
*/
/**
* IKチェーンを出力する。
+ *
* @param chain IKチェーン
* @throws IOException 出力エラー
*/
/**
* モーフリストを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException モーフ名が長すぎる
/**
* BASEモーフを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException モーフ名が長すぎる
/**
* モーフグループを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
*/
/**
* ボーングループリストを出力する。
* デフォルトボーングループ内訳は出力されない。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException ボーングループ名が長すぎる
/**
* 各種通し番号をshort値で出力する。
* short値に収まらない上位ビットは捨てられる。
+ *
* @param obj 番号づけられたオブジェクト
* @throws IOException 出力エラー
*/
/**
* 2次元位置情報を出力する。
+ *
* @param position 2次元位置情報
* @throws IOException 出力エラー
*/
/**
* 3次元位置情報を出力する。
+ *
* @param position 3次元位置情報
* @throws IOException 出力エラー
*/
/**
* 3次元ベクトル情報を出力する。
+ *
* @param vector 3次元ベクトル
* @throws IOException 出力エラー
*/
/**
* PMDファイルのエクスポーター(拡張1:英名対応)。
- * <p>
- * 任意のトゥーンファイル名対応以降のPMDファイルフォーマットを
+ *
+ * <p>任意のトゥーンファイル名対応以降のPMDファイルフォーマットを
* 使いたくない場合はこのエクスポーターを用いて出力せよ。
*/
public class PmdExporterExt1 extends PmdExporterBase{
/**
* コンストラクタ。
+ *
* @param stream 出力ストリーム
* @throws NullPointerException 引数がnull
*/
/**
* {@inheritDoc}
+ *
* @param model {@inheritDoc}
* @throws IOException {@inheritDoc}
* @throws IllegalPmdDataException {@inheritDoc}
/**
* 英語名情報を出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalPmdDataException 文字列が長すぎる。
/**
* モデル基本情報を英語で出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException 文字列が長すぎる。
/**
* ボーン英語名情報を出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException 文字列が長すぎる。
/**
* モーフ英語名情報を出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException 文字列が長すぎる。
/**
* ボーングループ英語名情報を出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException 文字列が長すぎる
/**
* PMDファイルのエクスポーター(拡張2:任意のトゥーンファイル名対応)。
- * <p>
- * 物理演算対応以降のPMDファイルフォーマットを
+ *
+ * <p>物理演算対応以降のPMDファイルフォーマットを
* 使いたくない場合はこのエクスポーターを用いて出力せよ。
*/
public class PmdExporterExt2 extends PmdExporterExt1{
/**
* コンストラクタ。
+ *
* @param stream 出力ストリーム
* @throws NullPointerException 引数がnull
*/
/**
* {@inheritDoc}
+ *
* @param model {@inheritDoc}
* @throws IOException {@inheritDoc}
* @throws IllegalPmdDataException {@inheritDoc}
/**
* 独自トゥーンファイルテーブルを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException トゥーンファイル名が長すぎる
/**
* PMDファイルのエクスポーター(拡張3:物理演算対応)。
- * <p>
- * 物理演算対応のPMDファイルフォーマットを
+ *
+ * <p>物理演算対応のPMDファイルフォーマットを
* 使いたい場合はこのエクスポーターを用いて出力せよ。
*/
public class PmdExporterExt3 extends PmdExporterExt2{
/**
* コンストラクタ。
+ *
* @param stream 出力ストリーム
* @throws NullPointerException 引数がnull
*/
/**
* {@inheritDoc}
+ *
* @param model {@inheritDoc}
* @throws IOException {@inheritDoc}
* @throws IllegalPmdDataException {@inheritDoc}
/**
* 剛体リストを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException 長すぎる剛体名
/**
* 個別の剛体情報を出力する。
+ *
* @param rigid 剛体
* @throws IOException 出力エラー
* @throws IllegalTextExportException 長すぎる剛体名
/**
* 剛体形状を出力する。
+ *
* @param shape 剛体形状
* @throws IOException 出力エラー
*/
/**
* 力学設定を出力する。
+ *
* @param dynamics 力学設定
* @throws IOException 出力エラー
*/
/**
* ジョイントリストを出力する。
+ *
* @param model モデルデータ
* @throws IOException 出力エラー
* @throws IllegalTextExportException 長すぎるジョイント名
/**
* 個別のジョイント情報を出力する。
+ *
* @param joint ジョイント
* @throws IOException 出力エラー
* @throws IllegalTextExportException 長すぎるジョイント名
/**
* 3次元範囲制約を出力する。
+ *
* @param range 3次元範囲制約
* @throws IOException 出力エラー
*/
/**
* ラジアンによる3次元姿勢情報を出力する。
+ *
* @param rad 3次元姿勢情報
* @throws IOException 出力エラー
*/
/**
* 度数法による3次元姿勢情報を出力する。
+ *
* @param deg 3次元姿勢情報
* @throws IOException 出力エラー
*/
/**
* 正常パース時に読み残したデータがあったか判定する。
+ *
* <p>MMDでの仕様拡張による
* PMDファイルフォーマットの拡張が行われた場合を想定。
+ *
* @return 読み残したデータがあればtrue
* @throws IllegalStateException まだパースを試みていない。
*/
/**
* PMDファイルの読み込みを行いモデル情報を返す。
* 1インスタンスにつき一度しかロードできない。
+ *
* @param source PMDファイル入力ソース
* @return モデル情報
* @throws IOException 入力エラー
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface CloseXmlMark {
- /** タグ指定。 */
+
+ /**
+ * タグ指定。
+ *
+ * @return tag
+ */
PmdTag value();
+
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface OpenXmlMark {
- /** タグ指定。 */
+
+ /**
+ * タグ指定。
+ *
+ * @return tag
+ */
PmdTag value();
+
}
public static final String LOCAL_SCHEMA_PMDXML =
"resources/pmdxml-101009.xsd";
+ /** schema URI. */
public static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML);
+ /** local resource URI. */
public static final URI RES_SCHEMA_PMDXML;
private static final Class<?> THISCLASS = Schema101009.class;
public static final String LOCAL_SCHEMA_PMDXML =
"resources/pmdxml-130128.xsd";
+ /** schema URI. */
public static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML);
+ /** local resource URI. */
public static final URI RES_SCHEMA_PMDXML;
private static final Class<?> THISCLASS = Schema130128.class;
/**
* XMLモデルファイルパース用SAXハンドラ。
+ *
* <p>下位リスナに各種通知が振り分けられる。
*/
class XmlHandler implements ContentHandler{
/**
* ビルド対象のモデルを返す。
+ *
* @return ビルド対象のモデル。ビルド前ならnull
*/
PmdModel getPmdModel(){
/**
* {@inheritDoc}
+ *
* @throws SAXException {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
+ *
* @throws SAXException {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
+ *
* @param prefix {@inheritDoc}
* @param uri {@inheritDoc}
* @throws SAXException {@inheritDoc}
@Override
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
- if( Schema101009.NS_PMDXML.equals(uri)
- || Schema130128.NS_PMDXML.equals(uri) ){
+ if( Schema101009.NS_PMDXML.equals(uri)
+ || Schema130128.NS_PMDXML.equals(uri) ){
this.nspfx = prefix;
this.nsuri = uri;
}
/**
* {@inheritDoc}
+ *
* @param prefix {@inheritDoc}
* @throws SAXException {@inheritDoc}
*/
/**
* {@inheritDoc}
+ *
* @param uri {@inheritDoc}
* @param localName {@inheritDoc}
* @param qName {@inheritDoc}
/**
* タグ出現に従い通知リスナを切り替える。
+ *
* @param tag タグ種別
*/
private void switchListener(PmdTag tag){
/**
* {@inheritDoc}
+ *
* @param uri {@inheritDoc}
* @param localName {@inheritDoc}
* @param qName {@inheritDoc}
/**
* {@inheritDoc}
+ *
* @param locator {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
+ *
* @param target {@inheritDoc}
* @param data {@inheritDoc}
* @throws SAXException {@inheritDoc}
/**
* {@inheritDoc}
+ *
* @param ch {@inheritDoc}
* @param start {@inheritDoc}
* @param length {@inheritDoc}
/**
* {@inheritDoc}
+ *
* @param ch {@inheritDoc}
* @param start {@inheritDoc}
* @param length {@inheritDoc}
/**
* {@inheritDoc}
+ *
* @param name {@inheritDoc}
* @throws SAXException {@inheritDoc}
*/
/**
* XMLファイル。
- * <p>読み込み時のスキーマ判別は自動。
- * 出力時のスキーマ種別は最新。
+ *
+ * <p>読み込み時のスキーマ判別は自動。出力時のスキーマ種別は最新。
*/
XML_AUTO,
/**
* コンストラクタ。
+ *
* <p>XMLリーダは名前空間をサポートしていなければならない。
+ *
* @param reader XMLリーダ
* @throws NullPointerException 引数がnull
* @throws SAXException 機能不足のXMLリーダが渡された
/**
* XMLのパースを開始する。
+ *
* @param source XML入力
* @return モデルデータ
* @throws SAXException 構文エラー
/**
* コマンドライン解析を行う。
+ *
* @param args コマンドライン
* @return 解析されたコマンドライン並び
*/
/**
* コマンドライン解析を行う。
+ *
* @param argList コマンドライン
* @return 解析されたコマンドライン並び
*/
/**
* オプション識別子を返す。
+ *
* @return オプション識別子。
- * オプションを伴わない単純なコマンドライン引数の場合はnullを返す。
+ * オプションを伴わない単純なコマンドライン引数の場合はnullを返す。
*/
OptSwitch getOptSwitch() {
return this.opt;
/**
* オプションに付随する引数群を返す。
+ *
* @return オプションに付随する引数群。
- * 先頭要素はオプション識別子。
- * 単純なコマンドライン引数の場合は自身が1要素のみを占める。
+ * 先頭要素はオプション識別子。
+ * 単純なコマンドライン引数の場合は自身が1要素のみを占める。
*/
List<String> getOptArgs() {
return this.optArgs;
/**
* XMLファイル。
+ *
* <p>読み込み時のスキーマ判別は自動。
+ *
* <p>書き込み時のスキーマは最新。
*/
XML_AUTO,
/**
* ファイル種別をXMLファイル種別に変換する。
+ *
* <p>未定義の場合はXML_AUTOを返す。
+ *
* @return XMLファイル種別
*/
public XmlModelFileType toXmlType(){
/**
* ファイル種別がXMLか判定する。
+ *
* @return XMLならtrue
*/
public boolean isXml(){
/**
* ファイル種別がPMDか判定する。
+ *
* @return PMDならtrue
*/
public boolean isPmd(){
/**
* フォーマット種別指定子をデコードする。
+ *
* @param arg 文字列
* @return デコード結果。
* @throws CmdLineException 不正なフォーマット種別
/**
* 改行文字指定子をデコードする。
+ *
* @param arg 文字列
* @return デコード結果。
* @throws CmdLineException 不正なフォーマット種別
/**
* ブール指定子をデコードする。
+ *
* @param arg 文字列
* @return デコード結果。
* @throws CmdLineException 不正なフォーマット種別
throws CmdLineException{
boolean result;
- if( "on" .equals(arg)
- || "true".equals(arg)
- || "yes" .equals(arg) ){
+ if( "on" .equals(arg)
+ || "true".equals(arg)
+ || "yes" .equals(arg) ){
result = true;
}else if( "off" .equals(arg)
|| "false".equals(arg)
/**
* ファイル名からファイル種別を類推する。
+ *
* <p>拡張子が「pmd」ならPMDファイル、「xml」ならXMLファイル。
+ *
* @param fileName ファイル名
* @return ファイル種別
*/
/**
* コマンドラインを解析する。
+ *
* @param args コマンドライン
* @return オプション情報
* @throws CmdLineException 不正なコマンドライン
/**
* 単純なコマンドラインエラーを検出する。
+ *
* <p>検出項目は未知のオプションおよび不正な引数の個数
+ *
* @param cmdLines コマンドライン
* @throws CmdLineException 異常系
*/
/**
* ファイルフォーマット情報の推測を行う。
+ *
* @param result オプション情報
*/
private static void fixFormat(OptInfo result){
/**
* オプション整合性の事後検査。
+ *
* @param result オプション情報
* @throws CmdLineException 不正なオプション設定
*/
/**
* ヘルプ表示が必要か否か判定する。
+ *
* @return 必要ならtrue
*/
boolean needHelp(){
/**
* 入力ファイル種別を返す。
+ *
* @return 入力ファイル種別
*/
ModelFileType getInFileType(){
/**
* 出力ファイル種別を返す。
+ *
* @return 出力ファイル種別
*/
ModelFileType getOutFileType(){
/**
* 入力ファイル名を返す。
+ *
* @return 入力ファイル名
*/
String getInFilename(){
/**
* 出力ファイル名を返す。
+ *
* @return 出力ファイル名
*/
String getOutFilename(){
/**
* 上書きモードか否か返す。
+ *
* @return 上書きモードならtrue
*/
boolean overwriteMode(){
/**
* XML改行文字を返す。
+ *
* @return 改行文字
*/
String getNewline(){
/**
* ジェネレータ名を返す。
+ *
* @return ジェネレータ名。表示したくない時はnull
*/
String getGenerator(){
*/
enum OptSwitch {
- OPT_HELP (0, "-h", "-help", "-?"),
- OPT_INFILE (1, "-i"),
- OPT_OUTFILE (1, "-o"),
- OPT_FORCE (0, "-f"),
- OPT_NEWLINE (1, "-nl"),
- OPT_GENOUT (1, "-genout"),
- OPT_IFORM (1, "-iform"),
- OPT_OFORM (1, "-oform"),
+ OPT_HELP( 0, "-h", "-help", "-?"),
+ OPT_INFILE( 1, "-i"),
+ OPT_OUTFILE( 1, "-o"),
+ OPT_FORCE( 0, "-f"),
+ OPT_NEWLINE( 1, "-nl"),
+ OPT_GENOUT( 1, "-genout"),
+ OPT_IFORM( 1, "-iform"),
+ OPT_OFORM( 1, "-oform"),
;
private static final String HELP_CONSOLE =
/**
* コンストラクタ。
+ *
* @param argnum 必要な引数の数
* @param cmdopts オプションスイッチパターン群
*/
/**
* コンソール提示用ヘルプ出力文字列を返す。
+ *
* @return オプションヘルプ文字列
*/
static String getConsoleHelp(){
/**
* 文字列に合致するオプションを返す。
+ *
* <p>一つのオプションが複数の表記に合致する場合がある。
+ *
* @param cmd 文字列
* @return オプション種別。合致する物が見つからなければnull
*/
/**
* 各オプションに後続する引数の数を返す。
+ *
* <p>引数をとらないオプションは0を返す。
+ *
* @return 引数の数
*/
int getExArgNum(){
/**
* VMを終了させる。
+ *
* @param code 終了コード
* @see java.lang.System#exit(int)
*/
/**
* 共通エラーメッセージを出力する。
+ *
* @param text 個別メッセージ
*/
private static void errMsg(String text){
/**
* 標準エラー出力へ例外情報出力。
+ *
* @param ex 例外
* @param dumpStack スタックトレースを出力するならtrue
*/
/**
* 標準エラー出力へ例外情報出力。
+ *
* @param ex 例外
*/
private static void thPrintln(Throwable ex){
/**
* 入出力エラー処理。
* 例外を出力してVM終了する。
+ *
* @param ex 例外
*/
private static void ioError(IOException ex){
/**
* XML構文エラー処理。
* 例外を出力してVM終了する。
+ *
* @param ex 例外
*/
private static void xmlError(Throwable ex){
/**
* PMDファイルフォーマットエラー処理。
* 例外を出力してVM終了する。
+ *
* @param ex 例外
*/
private static void pmdError(MmdFormatException ex){
/**
* 内部エラー処理。
* 例外を出力してVM終了する。
+ *
* @param ex 例外
*/
private static void internalError(Throwable ex){
/**
* ファイルサイズを0に切り詰める。
+ *
* <p>ファイルが存在しなければなにもしない。
+ *
* <p>通常ファイルでなければなにもしない。
+ *
* @param file ファイル
* @throws IOException 入出力エラー
*/
/**
* 入力ソースを準備する。
+ *
* <p>入力ファイルが通常ファイルとして存在しなければエラー終了。
+ *
* @param optInfo オプション情報
* @return 入力ソース
*/
/**
* 出力ストリームを準備する。
+ *
* <p>出力ファイルが通常ファイルでない場合はエラー終了。
+ *
* <p>既存の出力ファイルに上書き指示が伴っていなければエラー終了。
+ *
* @param optInfo オプション情報
* @return 出力ストリーム
*/
/**
* オプション情報に従いコンバータを生成する。
+ *
* @param optInfo オプション情報
* @return コンバータ
*/
private static Pmd2XmlConv buildConverter(OptInfo optInfo){
Pmd2XmlConv converter = new Pmd2XmlConv();
- converter.setInType (optInfo.getInFileType());
+ converter.setInType( optInfo.getInFileType());
converter.setOutType(optInfo.getOutFileType());
converter.setNewline(optInfo.getNewline());
/**
* 実際のコンバート作業と異常系処理を行う。
+ *
* <p>異常系が起きた場合、このメソッドは制御を戻さない。
+ *
* @param converter コンバータ
* @param source 入力ソース
* @param ostream 出力ストリーム
/**
* コマンドライン文字列をオプション情報としてパースする。
+ *
* <p>異常系が起きた場合、このメソッドは制御を戻さない。
+ *
* @param args コマンドライン文字列群
* @return オプション情報
*/
/**
* Mainエントリ。
+ *
* @param args コマンドパラメータ
*/
public static void main(String[] args){
/**
* 入力ファイル種別を設定する。
+ *
* @param type ファイル種別
* @throws NullPointerException 引数がnull
* @throws IllegalArgumentException 具体的な種別を渡さなかった
/**
* 入力ファイル種別を返す。
+ *
* @return ファイル種別
*/
public ModelFileType getInTypes(){
/**
* 出力ファイル種別を設定する。
+ *
* @param type ファイル種別
* @throws NullPointerException 引数がnull
* @throws IllegalArgumentException 具体的な種別を渡さなかった
/**
* 出力ファイル種別を返す。
+ *
* @return ファイル種別
*/
public ModelFileType getOutTypes(){
/**
* XML出力用改行文字列を設定する。
+ *
* @param newline 改行文字
*/
public void setNewline(String newline){
/**
* XML出力用改行文字列を返す。
+ *
* @return 改行文字
*/
public String getNewline(){
/**
* ジェネレータ名を設定する。
+ *
* @param generator ジェネレータ名。表示したくない場合はnull
*/
public void setGenerator(String generator){
/**
* ジェネレータ名を返す。
+ *
* @return ジェネレータ名。非表示の場合はnullを返す。
*/
public String getGenerator(){
/**
* ファイル変換を行う。
+ *
* <p>XML入力の場合は{@link #convert(InputSource, OutputStream)}を
* 推奨する。
+ *
* @param is 入力ストリーム
* @param os 出力ストリーム
* @throws IOException 入力エラー
/**
* ファイル変換を行う。
+ *
* <p>PMD入力の場合は{@link InputStream}に
* バイトストリームが直接設定されていなければならない。
+ *
* <p>XML入力の場合は{@link InputStream}に
* URL(systemId)のみの設定を推奨する。
+ *
* @param source 入力ソース
* @param os 出力ストリーム
* @throws IOException 入力エラー
/**
* モデルファイルを読み込む。
+ *
* <p>XML読み込みの場合は、
* こちらより{@link #readModel(InputSource)}版を推奨する。
+ *
* @param is 入力ストリーム
* @return モデルデータ
* @throws IOException 入力エラー
/**
* モデルファイルを読み込む。
+ *
* @param source 入力ソース
* @return モデルデータ
* @throws IOException 入力エラー
/**
* モデルファイルを出力する。
+ *
* @param model モデルデータ
* @param os 出力ストリーム
* @throws IOException 出力エラー
/**
* PMDファイルからモデルデータを読み込む。
+ *
* @param is 入力ストリーム
* @return モデルデータ
* @throws IOException 入力エラー
/**
* XMLファイルからモデルデータを読み込む。
+ *
* @param source 入力ソース
* @return モデルデータ
* @throws IOException 入力エラー
/**
* モデルデータをPMDファイルに出力する。
+ *
* @param model モデルデータ
* @param ostream 出力ストリーム
* @throws IOException 出力エラー
/**
* モデルデータをXMLファイルに出力する。
+ *
* @param model モデルデータ
* @param ostream 出力ストリーム
* @throws IOException 出力エラー
/**
* 実在ファイルからXML入力ソースを得る。
+ *
* @param file 実在ファイル
* @return XML入力ソース
*/
/**
* InputSourceからInputStreamを得る。
+ *
* <p>入力ソースには、少なくともバイトストリームか
* URL文字列(SystemId)のいずれかが設定されていなければならない。
+ *
* @param source 入力ソース
* @return 入力バイトストリーム
* @throws IllegalArgumentException 入力ソースの設定が足りない。
/**
* SAXパーサファクトリを生成する。
+ *
* <ul>
* <li>XML名前空間機能は有効になる。
* <li>DTDによる形式検証は無効となる。
* <li>XIncludeによる差し込み機能は無効となる。
* </ul>
+ *
* @param schema スキーマ
* @return ファクトリ
*/
factory.setFeature(F_LOAD_EXTERNAL_DTD, false);
}catch( ParserConfigurationException
| SAXNotRecognizedException
- | SAXNotSupportedException e
- ){
+ | SAXNotSupportedException e ){
assert false;
throw new AssertionError(e);
}
/**
* SAXパーサを生成する。
+ *
* @param schema スキーマ
* @return SAXパーサ
*/
/**
* スキーマを生成する。
- * @param resolver リゾルバ
+ *
* @param xmlInType 入力XML種別
* @return スキーマ
*/
/**
* XMLリーダを生成する。
+ *
* <p>エラーハンドラには{@link BotherHandler}が指定される。
+ *
* @param xmlInType 入力XML種別
* @return XMLリーダ
*/