1 package charactermanaj.model.util;
\r
4 import java.io.FileOutputStream;
\r
5 import java.io.InputStream;
\r
6 import java.io.ObjectOutputStream;
\r
7 import java.io.OutputStreamWriter;
\r
8 import java.io.Writer;
\r
10 import java.nio.charset.Charset;
\r
11 import java.util.ArrayList;
\r
12 import java.util.HashMap;
\r
13 import java.util.Locale;
\r
15 import charactermanaj.model.CharacterData;
\r
16 import charactermanaj.model.io.CharacterDataPersistent;
\r
17 import charactermanaj.model.io.CharacterDataPersistent.DocInfo;
\r
20 * 埋め込みリソースを生成するためのビルド時のヘルパ.<br>
\r
23 public class MakeEmbeddedResource {
\r
25 public static void main(String[] args) throws Exception {
\r
27 String[] fileNames = {
\r
28 "resources/schema/character.xml.ser",
\r
29 "resources/resource_list.txt"
\r
32 for (int idx = 0; idx < Math.min(args.length, fileNames.length); idx++) {
\r
33 fileNames[idx] = args[idx];
\r
36 // デフォルトのキャラクター定義の事前シリアライズバージョン作成
\r
37 createDefaultCharacterSer(fileNames[0]);
\r
40 createResourceList(fileNames[1]);
\r
45 * @param fileName ファィル名
\r
46 * @throws Exception 失敗
\r
48 public static void createResourceList(String fileName) throws Exception {
\r
49 File outiFile = new File(fileName);
\r
50 ArrayList<String> resourceList = new ArrayList<String>();
\r
52 resourceList.add("_HOW_TO_LOCALIZE.txt");
\r
54 File resourceDir = new File("resources");
\r
55 for (String dirName : new String[] {"appinfo", "languages", "menu"}) {
\r
56 File dir = new File(resourceDir, dirName);
\r
57 for (File file : dir.listFiles()) {
\r
58 if ( !file.isFile()) {
\r
61 String resourceName = dirName + "/" + file.getName();
\r
62 resourceList.add(resourceName);
\r
67 FileOutputStream fos = new FileOutputStream(outiFile);
\r
69 Writer wr = new OutputStreamWriter(fos, Charset.forName("UTF-8"));
\r
71 wr.write("# localized resources" + br);
\r
72 for (String resource : resourceList) {
\r
73 wr.write(resource + br);
\r
82 System.out.println("make embedded resource : succeeded. file=" + outiFile);
\r
86 * デフォルトのキャラクター定義の事前シリアライズバージョン作成
\r
87 * @param fileName ファィル名
\r
88 * @throws Exception 失敗
\r
90 public static void createDefaultCharacterSer(String fileName) throws Exception {
\r
91 File outiFile = new File(fileName);
\r
94 Locale[] locales = new Locale[] {
\r
95 Locale.ENGLISH, // デフォルト
\r
96 Locale.JAPANESE, // 日本語固有、(現状、2つしか定義さてれいない)
\r
99 // 各言語ごとのデフォルトキャラクターデータを読み込む
\r
100 HashMap<String, CharacterData> characterDataMap = new HashMap<String, CharacterData>();
\r
101 for (Locale locale : locales) {
\r
102 String lang = locale.getLanguage();
\r
103 if (characterDataMap.containsKey(lang)) {
\r
104 continue; // すでに読み込み済みなのでスキップする.
\r
106 CharacterData cd = loadDefaultCharacterData(locale);
\r
107 characterDataMap.put(lang, cd);
\r
111 FileOutputStream fos = new FileOutputStream(outiFile);
\r
113 ObjectOutputStream oos = new ObjectOutputStream(fos);
\r
115 oos.writeObject(characterDataMap);
\r
122 System.out.println("make embedded resource : succeeded. file=" + outiFile);
\r
125 protected static CharacterData loadDefaultCharacterData(Locale locale) throws Exception {
\r
126 // 埋め込みリソースからデフォルトキャラクターデータを構築する.
\r
128 URL defaultCharacter = getEmbeddedResourceURL(CharacterDataPersistent.DEFAULT_CHARACTER_XML);
\r
129 InputStream is = defaultCharacter.openStream();
\r
131 DocInfo docInfo = new DocInfo();
\r
132 docInfo.setFirstElementName("character");
\r
133 docInfo.setNamespace(CharacterDataPersistent.NS);
\r
134 docInfo.setVersion("1.0");
\r
136 CharacterDataPersistent persist = CharacterDataPersistent.getInstance();
\r
137 cd = persist.loadCharacterDataFromXML(is, null, docInfo, locale);
\r
145 protected static URL getEmbeddedResourceURL(String schemaName) {
\r
146 return CharacterDataPersistent.class.getResource(schemaName);
\r