OSDN Git Service

b0f0d1f07a26b836a6c9a3ea351c686aef1e9eb4
[mikutoga/TogaGem.git] / src / test / java / sample / pmd / DummyMain.java
1 /*
2  * sample parser
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package sample.pmd;
9
10 import java.io.BufferedInputStream;
11 import java.io.File;
12 import java.io.FileInputStream;
13 import java.io.FileNotFoundException;
14 import java.io.IOException;
15 import java.io.InputStream;
16 import jp.sourceforge.mikutoga.parser.MmdFormatException;
17 import jp.sourceforge.mikutoga.parser.MmdInputStream;
18 import jp.sourceforge.mikutoga.pmd.parser.PmdParser;
19
20 /**
21  * パーサ利用のサンプルプログラム。
22  * これはユニットテストではない。
23  */
24 public class DummyMain {
25
26     private static final String PMDFILE;
27     private static final int BUF_SZ = 4086;
28     private static final DummyHandler handler = new DummyHandler();
29
30     static{
31         PMDFILE =
32                 "D:\\Test\\test.pmd";
33     }
34
35     /**
36      * アプリを終了する。
37      * 制御は戻らない。
38      * @param code 終了コード。
39      */
40     private static void exit(int code){
41         System.exit(code);
42         assert false;
43         return;
44     }
45
46     /**
47      * 標準エラー出力にエラー情報を出し改行する。
48      * @param text エラー情報文字列
49      */
50     private static void errprintln(Object text){
51         System.err.println(text);
52         return;
53     }
54
55     /**
56      * 入力ソースを準備する。
57      * @param fname ファイル名
58      * @return 入力ソース
59      */
60     private static MmdInputStream buildSource(String fname){
61         File file = new File(fname);
62
63         InputStream is;
64         try{
65             is = new FileInputStream(file);
66         }catch(FileNotFoundException e){
67             errprintln(e);
68             exit(1);
69             return null;
70         }
71         is = new BufferedInputStream(is, BUF_SZ);
72
73         MmdInputStream source = new MmdInputStream(is);
74
75         return source;
76     }
77
78     /**
79      * 各種ハンドラをパーサにセットアップする。
80      * @param parser パーサ
81      */
82     private static void setupHandler(PmdParser parser){
83         parser.setBasicHandler(handler);
84         parser.setShapeHandler(handler);
85         parser.setMaterialHandler(handler);
86         parser.setBoneHandler(handler);
87         parser.setMorphHandler(handler);
88         parser.setEngHandler(handler);
89         parser.setToonHandler(handler);
90         parser.setRigidHandler(handler);
91         parser.setJointHandler(handler);
92
93         return;
94     }
95
96     /**
97      * Java実行エントリ
98      * @param args 起動引数
99      */
100     public static void main(String[] args){
101         String fname;
102         if(args.length == 1) fname = args[0];
103         else                 fname = PMDFILE;
104
105         MmdInputStream source = buildSource(fname);
106
107         PmdParser parser = new PmdParser(source);
108
109         setupHandler(parser);
110
111         try{
112             parser.parsePmd();
113         }catch(IOException e){
114             errprintln(e);
115             exit(1);
116         }catch(MmdFormatException e){
117             errprintln(e);
118             exit(1);
119         }
120
121         exit(0);
122
123         return;
124     }
125
126 }