OSDN Git Service

ver0.97リリース
[charactermanaj/CharacterManaJ.git] / src / charactermanaj / ui / model / WallpaperFactoryErrorRecoverHandler.java
1 package charactermanaj.ui.model;\r
2 \r
3 import java.awt.image.BufferedImage;\r
4 import java.io.File;\r
5 import java.util.logging.Level;\r
6 import java.util.logging.Logger;\r
7 \r
8 import charactermanaj.graphics.io.ImageResource;\r
9 import charactermanaj.ui.Wallpaper;\r
10 import charactermanaj.ui.model.WallpaperInfo.WallpaperResourceType;\r
11 \r
12 /**\r
13  * 壁紙オブジェクトの構築に回復しながら継続するためのハンドラ.<br> \r
14  * @author seraphy\r
15  */\r
16 public class WallpaperFactoryErrorRecoverHandler implements WallpaperFactory.ErrorHandler {\r
17         \r
18         protected static final Logger logger = Logger.getLogger(WallpaperFactoryErrorRecoverHandler.class.getName());\r
19 \r
20         private boolean errorOccured = false;\r
21         \r
22         private boolean recovered = false;\r
23         \r
24         /**\r
25          * 何らかのエラーが発生し回復できなかった場合\r
26          * @return\r
27          */\r
28         public boolean isErrorOccured() {\r
29                 return errorOccured;\r
30         }\r
31         \r
32         /**\r
33          * 何らかのエラーが発生したが回復された場合\r
34          * @return\r
35          */\r
36         public boolean isRecovered() {\r
37                 return recovered;\r
38         }\r
39         \r
40         public void setErrorOccured(boolean errorOccured) {\r
41                 this.errorOccured = errorOccured;\r
42         }\r
43         \r
44         public void setRecovered(boolean recovered) {\r
45                 this.recovered = recovered;\r
46         }\r
47 \r
48         public File missingImageFile(WallpaperInfo wallpaperInfo, File file)\r
49                         throws WallpaperFactoryException {\r
50                 if (file == null) {\r
51                         logger.log(Level.FINE, "壁紙ファイルの指定がありません.");\r
52                 } else {\r
53                         logger.log(Level.WARNING, "壁紙ファイルが存在しないか読み込みできません:" + file);\r
54                 }\r
55                 \r
56                 // ファイルは、もとより指定されていなかったものとして回復する.\r
57                 wallpaperInfo.setType(WallpaperResourceType.NONE);\r
58                 setRecovered(true);\r
59                 return null;\r
60         }\r
61 \r
62         public BufferedImage imageCreationFailed(WallpaperInfo wallpaperInfo,\r
63                         ImageResource imageResource, Throwable ex)\r
64                         throws WallpaperFactoryException {\r
65                 logger.log(Level.WARNING, "壁紙ファイルの読み込みに失敗しました。:" + imageResource, ex);\r
66 \r
67                 // ファイルは、もとより指定されていなかったものとして回復する.\r
68                 wallpaperInfo.setType(WallpaperResourceType.NONE);\r
69                 setRecovered(true);\r
70                 return null;\r
71         }\r
72         \r
73         public Wallpaper internalError(WallpaperInfo wallpaperInfo,\r
74                         Wallpaper wallpaper, Throwable ex) throws WallpaperFactoryException {\r
75                 logger.log(Level.WARNING, "壁紙の構築に失敗しました。" + wallpaperInfo, ex);\r
76                 setErrorOccured(true);\r
77                 throw new WallpaperFactoryException("internal error: " + ex, ex);\r
78         }\r
79         \r
80 }\r