OSDN Git Service

Merge release/v1.203.2
[mikutoga/Pmd2XML.git] / src / main / java / jp / sfjp / mikutoga / pmd / model / binio / 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.sfjp.mikutoga.pmd.model.binio;
9
10 import java.io.IOException;
11 import java.io.OutputStream;
12 import jp.sfjp.mikutoga.bin.export.IllegalTextExportException;
13 import jp.sfjp.mikutoga.pmd.IllegalPmdDataException;
14 import jp.sfjp.mikutoga.pmd.PmdConst;
15 import jp.sfjp.mikutoga.pmd.model.PmdModel;
16 import jp.sfjp.mikutoga.pmd.model.ToonMap;
17
18 /**
19  * PMDファイルのエクスポーター(拡張2:任意のトゥーンファイル名対応)。
20  *
21  * <p>物理演算対応以降のPMDファイルフォーマットを
22  * 使いたくない場合はこのエクスポーターを用いて出力せよ。
23  */
24 public class PmdExporterExt2 extends PmdExporterExt1{
25
26     /**
27      * コンストラクタ。
28      *
29      * @param stream 出力ストリーム
30      * @throws NullPointerException 引数がnull
31      */
32     public PmdExporterExt2(OutputStream stream)
33             throws NullPointerException{
34         super(stream);
35         return;
36     }
37
38     /**
39      * {@inheritDoc}
40      *
41      * @param model {@inheritDoc}
42      * @throws IOException {@inheritDoc}
43      * @throws IllegalPmdDataException {@inheritDoc}
44      */
45     @Override
46     public void dumpPmdModel(PmdModel model)
47             throws IOException, IllegalPmdDataException{
48         super.dumpPmdModel(model);
49
50         try{
51             dumpToonMap(model);
52         }catch(IllegalTextExportException e){
53             throw new IllegalPmdDataException(e);
54         }
55
56         return;
57     }
58
59     /**
60      * 独自トゥーンファイルテーブルを出力する。
61      *
62      * @param model モデルデータ
63      * @throws IOException 出力エラー
64      * @throws IllegalTextExportException トゥーンファイル名が長すぎる
65      */
66     private void dumpToonMap(PmdModel model)
67             throws IOException, IllegalTextExportException{
68         ToonMap map = model.getToonMap();
69
70         for(int idx = 0; idx < PmdConst.TOON_FIXEDNUM; idx++){
71             String toonName = map.getIndexedToon(idx);
72             if(toonName == null) toonName = "";
73             dumpText(toonName, PmdConst.MAXBYTES_TOONFILENAME);
74         }
75
76         flush();
77
78         return;
79     }
80
81 }