- redid part of the media handling
[mir.git] / source / mircoders / localizer / MirCachingLocalizerDecorator.java
1 /*\r
2  * Copyright (C) 2001, 2002 The Mir-coders group\r
3  *\r
4  * This file is part of Mir.\r
5  *\r
6  * Mir is free software; you can redistribute it and/or modify\r
7  * it under the terms of the GNU General Public License as published by\r
8  * the Free Software Foundation; either version 2 of the License, or\r
9  * (at your option) any later version.\r
10  *\r
11  * Mir is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14  * GNU General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU General Public License\r
17  * along with Mir; if not, write to the Free Software\r
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
19  *\r
20  * In addition, as a special exception, The Mir-coders gives permission to link\r
21  * the code of this program with  any library licensed under the Apache Software License,\r
22  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library\r
23  * (or with modified versions of the above that use the same license as the above),\r
24  * and distribute linked combinations including the two.  You must obey the\r
25  * GNU General Public License in all respects for all of the code used other than\r
26  * the above mentioned libraries.  If you modify this file, you may extend this\r
27  * exception to your version of the file, but you are not obligated to do so.\r
28  * If you do not wish to do so, delete this exception statement from your version.\r
29  */\r
30 \r
31 package mircoders.localizer;\r
32 \r
33 import mir.entity.adapter.EntityAdapterModel;\r
34 import mir.generator.Generator;\r
35 import mir.generator.WriterEngine;\r
36 \r
37 public class MirCachingLocalizerDecorator implements MirLocalizer {\r
38   private MirLocalizer localizer;\r
39   private MirProducerLocalizer producerLocalizer;\r
40   private MirGeneratorLocalizer generatorLocalizer;\r
41   private MirOpenPostingLocalizer openPostingsLocalizer;\r
42   private MirProducerAssistantLocalizer producerAssistantLocalizer;\r
43   private MirDataModelLocalizer dataModelLocalizer;\r
44   private MirAdminInterfaceLocalizer adminInterfaceLocalizer;\r
45   private MirMediaLocalizer mediaLocalizer;\r
46 \r
47   public MirCachingLocalizerDecorator(MirLocalizer aLocalizer) {\r
48     localizer = aLocalizer;\r
49   }\r
50 \r
51   public MirProducerLocalizer producers() throws MirLocalizerFailure, MirLocalizerExc {\r
52     if (producerLocalizer==null) {\r
53       producerLocalizer = localizer.producers();\r
54     }\r
55 \r
56     return producerLocalizer;\r
57   }\r
58 \r
59   public MirGeneratorLocalizer generators() throws MirLocalizerFailure, MirLocalizerExc {\r
60     if (generatorLocalizer==null) {\r
61       generatorLocalizer = new MirCachingGeneratorLocalizer(localizer.generators());\r
62     }\r
63 \r
64     return generatorLocalizer;\r
65   }\r
66 \r
67   public MirOpenPostingLocalizer openPostings() throws MirLocalizerFailure, MirLocalizerExc {\r
68     if (openPostingsLocalizer==null) {\r
69       openPostingsLocalizer = localizer.openPostings();\r
70     }\r
71 \r
72     return openPostingsLocalizer;\r
73   }\r
74 \r
75   public MirProducerAssistantLocalizer producerAssistant() throws MirLocalizerFailure, MirLocalizerExc {\r
76     if (producerAssistantLocalizer==null) {\r
77       producerAssistantLocalizer = localizer.producerAssistant();\r
78     }\r
79 \r
80     return producerAssistantLocalizer;\r
81   }\r
82 \r
83   public MirDataModelLocalizer dataModel() throws MirLocalizerFailure, MirLocalizerExc {\r
84     if (dataModelLocalizer==null) {\r
85       dataModelLocalizer = new MirCachingDatamodelLocalizer(localizer.dataModel());\r
86     }\r
87 \r
88     return dataModelLocalizer;\r
89   }\r
90 \r
91   public MirAdminInterfaceLocalizer adminInterface() throws MirLocalizerFailure, MirLocalizerExc {\r
92     if (adminInterfaceLocalizer==null) {\r
93       adminInterfaceLocalizer = localizer.adminInterface();\r
94     }\r
95 \r
96     return adminInterfaceLocalizer;\r
97   };\r
98 \r
99   public MirMediaLocalizer media() throws MirLocalizerFailure, MirLocalizerExc {\r
100     if (mediaLocalizer==null) {\r
101       mediaLocalizer = localizer.media();\r
102     }\r
103 \r
104     return mediaLocalizer;\r
105   }\r
106 \r
107   private static class MirCachingDatamodelLocalizer implements MirDataModelLocalizer {\r
108     private MirDataModelLocalizer master;\r
109     private EntityAdapterModel adapterModel;\r
110 \r
111     public MirCachingDatamodelLocalizer(MirDataModelLocalizer aMaster) {\r
112       master = aMaster;\r
113       adapterModel = null;\r
114     }\r
115 \r
116     public EntityAdapterModel adapterModel() throws MirLocalizerExc, MirLocalizerFailure {\r
117       if (adapterModel==null) {\r
118         adapterModel = master.adapterModel();\r
119       }\r
120 \r
121       return adapterModel;\r
122     };\r
123 \r
124   }\r
125 \r
126   private static class MirCachingGeneratorLocalizer implements MirGeneratorLocalizer {\r
127     private MirGeneratorLocalizer master;\r
128     private WriterEngine writerEngine;\r
129     private Generator.GeneratorLibrary producerGeneratorLibrary;\r
130     private Generator.GeneratorLibrary adminGeneratorLibrary;\r
131     private Generator.GeneratorLibrary openPostingGeneratorLibrary;\r
132 \r
133     public MirCachingGeneratorLocalizer(MirGeneratorLocalizer aMaster) {\r
134       master = aMaster;\r
135     }\r
136 \r
137     public WriterEngine makeWriterEngine() throws MirLocalizerExc, MirLocalizerFailure {\r
138       if (writerEngine==null) {\r
139         writerEngine = master.makeWriterEngine();\r
140       }\r
141 \r
142       return writerEngine;\r
143     };\r
144 \r
145     public Generator.GeneratorLibrary makeProducerGeneratorLibrary() throws MirLocalizerExc, MirLocalizerFailure {\r
146       if (producerGeneratorLibrary==null) {\r
147         producerGeneratorLibrary = master.makeProducerGeneratorLibrary();\r
148       }\r
149 \r
150       return producerGeneratorLibrary;\r
151     };\r
152 \r
153     public Generator.GeneratorLibrary makeAdminGeneratorLibrary() throws MirLocalizerExc, MirLocalizerFailure {\r
154       if (adminGeneratorLibrary==null) {\r
155         adminGeneratorLibrary = master.makeAdminGeneratorLibrary();\r
156       }\r
157 \r
158       return adminGeneratorLibrary;\r
159     };\r
160 \r
161     public Generator.GeneratorLibrary makeOpenPostingGeneratorLibrary() throws MirLocalizerExc, MirLocalizerFailure {\r
162       if (openPostingGeneratorLibrary==null) {\r
163         openPostingGeneratorLibrary = master.makeOpenPostingGeneratorLibrary();\r
164       }\r
165 \r
166       return openPostingGeneratorLibrary;\r
167     };\r
168   }\r
169 \r
170 }