OSDN Git Service

コメント中間ファイル生成メソッドが失敗した場合は例外で戻す
authoryukihane <yukihane.feather@gmail.com>
Mon, 22 Aug 2011 23:23:08 +0000 (08:23 +0900)
committeryukihane <yukihane.feather@gmail.com>
Mon, 22 Aug 2011 23:23:08 +0000 (08:23 +0900)
frontend/src/saccubus/conv/ConvertToVideoHook.java
frontend/src/saccubus/worker/Convert.java

index c0c3038..4991c29 100644 (file)
@@ -1,8 +1,6 @@
 package saccubus.conv;
 
 import java.io.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import org.xml.sax.*;
 import javax.xml.parsers.*;
 
@@ -26,41 +24,28 @@ import javax.xml.parsers.*;
  * @author 未入力
  * @version 1.0
  */
-public class ConvertToVideoHook {
+public final class ConvertToVideoHook {
 
-    private static final Logger logger = Logger.getLogger(ConvertToVideoHook.class.getName());
+    private ConvertToVideoHook() {
+    }
 
-       public static boolean convert(File file, File out, String ng_id,
-                       String ng_word) {
-               try {
-                       Packet packet = new Packet();
-                       // SAXパーサーファクトリを生成
-                       SAXParserFactory spfactory = SAXParserFactory.newInstance();
-                       // SAXパーサーを生成
-                       SAXParser parser = spfactory.newSAXParser();
-                       // XMLファイルを指定されたデフォルトハンドラーで処理します
-                       NicoXMLReader nico_reader = null;
-                       try {
-                               nico_reader = new NicoXMLReader(packet, ng_id, ng_word);
-                       } catch (java.util.regex.PatternSyntaxException e) {
-                               logger.log(Level.SEVERE, null, e);
-                               return false;
-                       }
-                       if (nico_reader != null) {
-                               parser.parse(file, nico_reader);
-                       }
-                       // 変換結果の書き込み
-                       FileOutputStream fos = new FileOutputStream(out);
-                       packet.write(fos);
-                       fos.close();
-                       return true;
-               } catch (IOException ex) {
-                       logger.log(Level.SEVERE, null, ex);
-               } catch (SAXException ex) {
-                       logger.log(Level.SEVERE, null, ex);
-               } catch (ParserConfigurationException ex) {
-                       logger.log(Level.SEVERE, null, ex);
-               }
-               return false;
+    public static void convert(File file, File out, String ng_id, String ng_word) throws IOException {
+        try {
+            final Packet packet = new Packet();
+            // SAXパーサーファクトリを生成
+            final SAXParserFactory spfactory = SAXParserFactory.newInstance();
+            // SAXパーサーを生成
+            final SAXParser parser = spfactory.newSAXParser();
+            // XMLファイルを指定されたデフォルトハンドラーで処理します
+            final NicoXMLReader nico_reader = new NicoXMLReader(packet, ng_id, ng_word);
+
+            parser.parse(file, nico_reader);
+
+            try (final FileOutputStream fos = new FileOutputStream(out)) {
+                packet.write(fos);
+            }
+        } catch (IOException | SAXException | ParserConfigurationException ex) {
+            throw new IOException("コメント変換に失敗。ファイル名に使用できない文字が含まれているか正規表現の間違い?", ex);
+        }
        }
 }
index 2cd23b1..a89090b 100644 (file)
@@ -75,7 +75,7 @@ public class Convert extends SwingWorker<ConvertResult, ConvertProgress> {
                 transformedComment = File.createTempFile("vhk", ".tmp", profile.getTempDir());
                 final HideCondition hide = profile.getNgSetting();
                 publish(new ConvertProgress("コメントの中間ファイルへの変換中"));
-                final boolean conv = ConvertToVideoHook.convert(commentFile, transformedComment, hide.getId(), hide.
+                ConvertToVideoHook.convert(commentFile, transformedComment, hide.getId(), hide.
                         getWord());
                 if (!conv) {
                     throw new IOException("コメント変換に失敗。ファイル名に使用できない文字が含まれているか正規表現の間違い?");