OSDN Git Service

[no commit message]
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / pmdexporter / PmdExporterExt2.java
1 /*
2  * model exporter for pmd-file(Ext2)
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package jp.sourceforge.mikutoga.pmd.pmdexporter;
9
10 import java.io.IOException;
11 import java.io.OutputStream;
12 import jp.sourceforge.mikutoga.pmd.model.PmdModel;
13 import jp.sourceforge.mikutoga.pmd.model.ToonMap;
14 import jp.sourceforge.mikutoga.pmd.parser.PmdLimits;
15
16 /**
17  * PMDファイルのエクスポーター(拡張2:任意のトゥーンファイル名対応)。
18  * <p>
19  * 物理演算対応以降のPMDファイルフォーマットを
20  * 使いたくない場合はこのエクスポーターを用いて出力せよ。
21  */
22 public class PmdExporterExt2 extends PmdExporterExt1{
23
24     /**
25      * コンストラクタ。
26      * @param stream 出力ストリーム
27      * @throws NullPointerException 引数がnull
28      */
29     public PmdExporterExt2(OutputStream stream)
30             throws NullPointerException{
31         super(stream);
32         return;
33     }
34
35     /**
36      * {@inheritDoc}
37      * @param model {@inheritDoc}
38      * @throws IOException {@inheritDoc}
39      * @throws IllegalPmdException {@inheritDoc}
40      */
41     @Override
42     public void dumpPmdModel(PmdModel model)
43             throws IOException, IllegalPmdException{
44         super.dumpPmdModel(model);
45
46         dumpToonMap(model);
47
48         return;
49     }
50
51     /**
52      * 独自トゥーンファイルテーブルを出力する。
53      * @param model モデルデータ
54      * @throws IOException 出力エラー
55      * @throws IllegalPmdTextException トゥーンファイル名が長すぎる
56      */
57     private void dumpToonMap(PmdModel model)
58             throws IOException, IllegalPmdTextException{
59         ToonMap map = model.getToonMap();
60
61         for(int idx = 0; idx < PmdLimits.TOON_FIXEDNUM; idx++){
62             String toonName = map.getIndexedToon(idx);
63             if(toonName == null) toonName = "";
64             dumpText(toonName, PmdLimits.MAXBYTES_TOONFILENAME);
65         }
66
67         flush();
68
69         return;
70     }
71
72 }