OSDN Git Service

XML出力実体のインスタンス化
[jindolf/JinArchiver.git] / src / main / java / jp / sourceforge / jindolf / archiver / DumpXmlTask.java
1 /*
2  * XML-dump task
3  *
4  * License : The MIT License
5  * Copyright(c) 2016 olyutorskii
6  */
7
8 package jp.sourceforge.jindolf.archiver;
9
10 import java.io.IOException;
11 import java.io.Writer;
12 import java.util.concurrent.Callable;
13
14 /**
15  * XML出力タスク。
16  */
17 public class DumpXmlTask implements Callable<Void> {
18
19     private static final String ERR_IO    = "出力エラーが発生しました";
20     private static final String ERR_ABORT = "XML出力が中断されました";
21
22
23     private final VillageData villageData;
24     private final XmlOut writer;
25
26
27     /**
28      * コンストラクタ。
29      * @param villageData 村情報
30      * @param writer 出力先
31      */
32     public DumpXmlTask(VillageData villageData, Writer writer){
33         super();
34         this.villageData = villageData;
35         this.writer = new XmlOut(writer);
36         return;
37     }
38
39
40     /**
41      * 例外に応じたエラー説明を返す。
42      * @param cause 例外
43      * @return エラー説明
44      */
45     public static String getErrDescription(Throwable cause){
46         String desc;
47         if(cause instanceof IOException) desc = ERR_IO;
48         else                             desc = ERR_ABORT;
49         return desc;
50     }
51
52
53     /**
54      * {@inheritDoc}
55      * @return null
56      * @throws IOException 出力エラー
57      */
58     @Override
59     public Void call() throws IOException{
60         try{
61             this.writer.dumpVillageData(this.villageData);
62         }finally{
63             this.writer.close();
64         }
65
66         return null;
67     }
68
69 }