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.CharacterDataXMLReader;
\r
20 * 埋め込みリソースを生成するためのビルド時のヘルパ.<br>
\r
24 public class MakeEmbeddedResource {
\r
26 public static void main(String[] args) throws Exception {
\r
28 String[] fileNames = {
\r
29 "resources/schema/character.xml.ser",
\r
30 "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
51 public static void createResourceList(String fileName) throws Exception {
\r
52 File outiFile = new File(fileName);
\r
53 ArrayList<String> resourceList = new ArrayList<String>();
\r
55 resourceList.add("_HOW_TO_LOCALIZE.txt");
\r
57 File resourceDir = new File("resources");
\r
58 for (String dirName : new String[]{"appinfo", "languages", "menu"}) {
\r
59 File dir = new File(resourceDir, dirName);
\r
60 for (File file : dir.listFiles()) {
\r
61 if (!file.isFile()) {
\r
64 String resourceName = dirName + "/" + file.getName();
\r
65 resourceList.add(resourceName);
\r
70 FileOutputStream fos = new FileOutputStream(outiFile);
\r
72 Writer wr = new OutputStreamWriter(fos, Charset.forName("UTF-8"));
\r
74 wr.write("# localized resources" + br);
\r
75 for (String resource : resourceList) {
\r
76 wr.write(resource + br);
\r
85 System.out.println("make embedded resource : succeeded. file="
\r
90 * デフォルトのキャラクター定義の事前シリアライズバージョン作成
\r
97 public static void createDefaultCharacterSer(String fileName)
\r
99 File outiFile = new File(fileName);
\r
101 // 読み込む言語データ(ENは標準)
\r
102 Locale[] locales = new Locale[]{Locale.ENGLISH, // デフォルト
\r
103 Locale.JAPANESE, // 日本語固有、(現状、2つしか定義さてれいない)
\r
106 // 各言語ごとのデフォルトキャラクターデータを読み込む
\r
107 HashMap<String, CharacterData> characterDataMap = new HashMap<String, CharacterData>();
\r
108 for (Locale locale : locales) {
\r
109 String lang = locale.getLanguage();
\r
110 if (characterDataMap.containsKey(lang)) {
\r
111 continue; // すでに読み込み済みなのでスキップする.
\r
113 CharacterData cd = loadDefaultCharacterData(locale);
\r
114 characterDataMap.put(lang, cd);
\r
118 FileOutputStream fos = new FileOutputStream(outiFile);
\r
120 ObjectOutputStream oos = new ObjectOutputStream(fos);
\r
122 oos.writeObject(characterDataMap);
\r
129 System.out.println("make embedded resource : succeeded. file="
\r
133 protected static CharacterData loadDefaultCharacterData(Locale locale)
\r
135 // 埋め込みリソースからデフォルトキャラクターデータを構築する.
\r
137 URL defaultCharacter = getEmbeddedResourceURL(CharacterDataPersistent.DEFAULT_CHARACTER_XML);
\r
138 InputStream is = defaultCharacter.openStream();
\r
140 CharacterDataXMLReader xmlReader = new CharacterDataXMLReader();
\r
141 cd = xmlReader.loadCharacterDataFromXML(is, null, locale);
\r
149 protected static URL getEmbeddedResourceURL(String schemaName) {
\r
150 return CharacterDataPersistent.class.getResource(schemaName);
\r