OSDN Git Service

キャラクターなんとか機のフォルダを変換するタイミングをプロファイル一覧取得時に変更.
authorseraphy <seraphy@5b6e9025-a2e8-4882-b233-f889982098c5>
Sat, 23 Nov 2013 06:34:41 +0000 (06:34 +0000)
committerseraphy <seraphy@5b6e9025-a2e8-4882-b233-f889982098c5>
Sat, 23 Nov 2013 06:34:41 +0000 (06:34 +0000)
(従来はディレクトリ選択時だった。)

git-svn-id: https://svn.sourceforge.jp/svnroot/charactermanaj/trunk@77 5b6e9025-a2e8-4882-b233-f889982098c5

src/charactermanaj/model/io/CharacterDataPersistent.java
src/charactermanaj/ui/SelectCharatersDirDialog.java

index 5843933..276cd1b 100644 (file)
@@ -338,6 +338,62 @@ public class CharacterDataPersistent {
        }\r
 \r
        /**\r
+        * 指定したディレクトリの下のサブフォルダに、character.iniがある場合は、\r
+        * キャラクターなんとか機のディレクトリとして、標準のcharacter.xmlを生成する.<br>\r
+        * ただし、書き込み禁止の場合は何もしない.<br>\r
+        * すでにcharacter.xmlがある場合も何もしない.<br>\r
+        * \r
+        * @param dataDir\r
+        *            キャラクターなんとか機のデータディレクトリ\r
+        */\r
+       public void convertCharacterNantokaIniToXml(File dataDir) {\r
+               if (dataDir == null || !dataDir.isDirectory() || !dataDir.canWrite()) {\r
+                       return;\r
+               }\r
+\r
+               for (File dir : dataDir.listFiles()) {\r
+                       if (!dir.isDirectory()) {\r
+                               continue;\r
+                       }\r
+                       File characterXmlFile = new File(dir,\r
+                                       CharacterDataPersistent.CONFIG_FILE);\r
+                       if (characterXmlFile.exists()) {\r
+                               // すでにキャラクター定義XMLが存在する場合はスキップする.\r
+                               continue;\r
+                       }\r
+\r
+                       File characterIniFile = new File(dir,\r
+                                       CharacterDataPersistent.COMPATIBLE_CONFIG_NAME);\r
+                       if (characterIniFile.exists() && characterIniFile.canWrite()\r
+                                       && dir.canWrite()) {\r
+                               // character.iniが存在し、書き込み可能であれば、それをcharacter.xmlに変換する.\r
+\r
+                               // eye_colorフォルダがあるか?\r
+                               File eyeColorFolder = new File(dir, "eye_color");\r
+                               boolean hasEyeColorFolder = eyeColorFolder.exists()\r
+                                               && eyeColorFolder.isDirectory();\r
+\r
+                               DefaultCharacterDataVersion version;\r
+                               if (hasEyeColorFolder) {\r
+                                       // eye_colorフォルダがあればver3形式とみなす.\r
+                                       version = DefaultCharacterDataVersion.V3;\r
+                               } else {\r
+                                       version = DefaultCharacterDataVersion.V2;\r
+                               }\r
+\r
+                               try {\r
+                                       convertFromCharacterIni(characterIniFile, characterXmlFile,\r
+                                                       version);\r
+\r
+                               } catch (Exception ex) {\r
+                                       logger.log(Level.WARNING, "character.xmlの生成に失敗しました。:"\r
+                                                       + characterXmlFile, ex);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       /**\r
         * キャラクターデータを非同期に読み込む.<br>\r
         * 読み込み完了したものが随時、コールバックに渡される.\r
         * \r
@@ -353,6 +409,9 @@ public class CharacterDataPersistent {
                DirectoryConfig dirConfig = DirectoryConfig.getInstance();\r
                File baseDir = dirConfig.getCharactersDir();\r
 \r
+               // キャラクターなんとか機のcharacter.iniがあれば、character.xmlに変換する.\r
+               convertCharacterNantokaIniToXml(baseDir);\r
+\r
                // ファイル名をノーマライズする\r
                FileNameNormalizer normalizer = FileNameNormalizer.getDefault();\r
 \r
index 5534844..219b92e 100644 (file)
@@ -38,8 +38,6 @@ import javax.swing.JRootPane;
 import javax.swing.KeyStroke;\r
 \r
 import charactermanaj.Main;\r
-import charactermanaj.model.io.CharacterDataDefaultProvider.DefaultCharacterDataVersion;\r
-import charactermanaj.model.io.CharacterDataPersistent;\r
 import charactermanaj.ui.util.FileDropTarget;\r
 import charactermanaj.util.ErrorMessageHelper;\r
 import charactermanaj.util.LocalizedResourcePropertyLoader;\r
@@ -332,62 +330,7 @@ public class SelectCharatersDirDialog extends JDialog {
                }\r
                combDir.setSelectedItem(dropFile);\r
        }\r
-       \r
-       /**\r
-        * 指定したディレクトリの下のサブフォルダに、すでにcharacter.iniがある場合は、\r
-        * キャラクターなんとか機のディレクトリとして、標準のcharacter.xmlを生成する.<br>\r
-        * ただし、書き込み禁止の場合は何もしない.\r
-        * \r
-        * @param dirs\r
-        *            対象ディレクトリ\r
-        */\r
-       protected void checkCharacterNantokaDirs(File dirs) {\r
-               if (dirs == null || !dirs.isDirectory() || !dirs.canWrite()) {\r
-                       return;\r
-               }\r
-               \r
-               CharacterDataPersistent persist = CharacterDataPersistent.getInstance();\r
 \r
-               for (File dir : dirs.listFiles()) {\r
-                       if (!dir.isDirectory()) {\r
-                               continue;\r
-                       }\r
-                       File characterXmlFile = new File(dir, CharacterDataPersistent.CONFIG_FILE);\r
-                       if (characterXmlFile.exists()) {\r
-                               // すでにキャラクター定義XMLが存在する場合はスキップする.\r
-                               continue;\r
-                       }\r
-\r
-                       File characterIniFile = new File(dir, CharacterDataPersistent.COMPATIBLE_CONFIG_NAME);\r
-                       if (characterIniFile.exists() && characterIniFile.canWrite() && dir.canWrite()) {\r
-                               // character.iniが存在し、書き込み可能であれば、それをcharacter.xmlに変換する.\r
-\r
-                               // eye_colorフォルダがあるか?\r
-                               File eyeColorFolder = new File(dir, "eye_color");\r
-                               boolean hasEyeColorFolder = eyeColorFolder.exists()\r
-                                               && eyeColorFolder.isDirectory();\r
-\r
-                               DefaultCharacterDataVersion version;\r
-                               if (hasEyeColorFolder) {\r
-                                       // eye_colorフォルダがあればver3形式とみなす.\r
-                                       version = DefaultCharacterDataVersion.V3;\r
-                               } else {\r
-                                       version = DefaultCharacterDataVersion.V2;\r
-                               }\r
-\r
-                               try {\r
-                                       persist.convertFromCharacterIni(characterIniFile,\r
-                                                       characterXmlFile, version);\r
-\r
-                               } catch (Exception ex) {\r
-                                       logger.log(Level.WARNING, "character.xmlの生成に失敗しました。:"\r
-                                                       + characterXmlFile, ex);\r
-                               }\r
-                       }\r
-               }\r
-               \r
-       }\r
-       \r
        protected void onClose() {\r
                selectedCharacterDir = null;\r
                dispose();\r
@@ -407,7 +350,6 @@ public class SelectCharatersDirDialog extends JDialog {
                                        logger.log(Level.INFO, "mkdirs(" + file+ ") succeeded=" + result);\r
                                }\r
                                if (file.isDirectory()) {\r
-                                       checkCharacterNantokaDirs(file);\r
                                        logger.log(Level.CONFIG, "selectedCharactersDir=" + file);\r
                                        selectedCharacterDir = file;\r
                                        doNotAskAgain = chkDoNotAsk.isSelected();\r