OSDN Git Service

mavenによるビルドに変更
[charactermanaj/CharacterManaJ.git] / src / main / java / charactermanaj / graphics / io / EmbeddedImageResource.java
1 package charactermanaj.graphics.io;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.InputStream;\r
5 import java.io.Serializable;\r
6 import java.net.URI;\r
7 import java.net.URISyntaxException;\r
8 import java.net.URL;\r
9 import java.util.logging.Level;\r
10 import java.util.logging.Logger;\r
11 \r
12 import charactermanaj.util.ResourceLoader;\r
13 \r
14 \r
15 /**\r
16  * クラスローダからリソースを読み込むイメージリソース.<br>\r
17  * @author seraphy\r
18  */\r
19 public class EmbeddedImageResource extends ResourceLoader implements ImageResource, Serializable {\r
20         \r
21         /**\r
22          * シリアライズバージョン\r
23          */\r
24         private static final long serialVersionUID = 703707046457343373L;\r
25 \r
26         /**\r
27          * ロガー\r
28          */\r
29         private static final Logger logger = Logger.getLogger(EmbeddedImageResource.class.getName());\r
30 \r
31         /**\r
32          * ファイル\r
33          */\r
34         private String resourceName;\r
35         \r
36         \r
37         public EmbeddedImageResource(String resourceName) {\r
38                 if (resourceName == null) {\r
39                         throw new IllegalArgumentException();\r
40                 }\r
41                 this.resourceName = resourceName;\r
42         }\r
43         \r
44         public int compareTo(ImageResource o) {\r
45                 return getFullName().compareTo(o.getFullName());\r
46         }\r
47         \r
48         @Override\r
49         public int hashCode() {\r
50                 return getFullName().hashCode();\r
51         }\r
52 \r
53         @Override\r
54         public boolean equals(Object obj) {\r
55                 if (obj == this) {\r
56                         return true;\r
57                 }\r
58                 if (obj instanceof ImageResource) {\r
59                         ImageResource o = (ImageResource) obj;\r
60                         return getFullName().equals(o.getFullName());\r
61                 }\r
62                 return false;\r
63         }\r
64         \r
65         public String getFullName() {\r
66                 return resourceName;\r
67         }\r
68         \r
69         public URI getURI() {\r
70                 URL url = getResource(resourceName);\r
71                 if (url != null) {\r
72                         try {\r
73                                 return url.toURI();\r
74 \r
75                         } catch(URISyntaxException ex) {\r
76                                 logger.log(Level.WARNING, "resource name is invalid. " + resourceName, ex);\r
77                                 // 何もしない.\r
78                         }\r
79                 }\r
80                 return null;\r
81         }\r
82         \r
83         /**\r
84          * リソースが実在すれば日付は常に1を返す.<br>\r
85          * リソースが存在しなければ0を返す.<br>\r
86          */\r
87         public long lastModified() {\r
88                 URL url = getResource(resourceName);\r
89                 if (url == null) {\r
90                         return 1;\r
91                 }\r
92                 return 0;\r
93         }\r
94         \r
95         public InputStream openStream() throws IOException {\r
96                 URL url = getResource(resourceName);\r
97                 if (url == null) {\r
98                         return null;\r
99                 }\r
100                 return url.openStream();\r
101         }\r
102         \r
103         @Override\r
104         public String toString() {\r
105                 return getFullName();\r
106         }\r
107 }\r