2 * Copyright (C) 2001, 2002 The Mir-coders group
4 * This file is part of Mir.
6 * Mir is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * Mir is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with Mir; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 * In addition, as a special exception, The Mir-coders gives permission to link
21 * the code of this program with any library licensed under the Apache Software License,
22 * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
23 * (or with modified versions of the above that use the same license as the above),
24 * and distribute linked combinations including the two. You must obey the
25 * GNU General Public License in all respects for all of the code used other than
26 * the above mentioned libraries. If you modify this file, you may extend this
27 * exception to your version of the file, but you are not obligated to do so.
28 * If you do not wish to do so, delete this exception statement from your version.
31 package mircoders.localizer;
33 import mir.entity.adapter.EntityAdapterModel;
34 import mir.generator.Generator;
35 import mir.generator.WriterEngine;
38 * This was used to prevent localizers from being created
42 public class LocalizerCache implements MirLocalizer {
43 private MirLocalizer localizer;
44 private MirProducerLocalizer producerLocalizer;
45 private MirGeneratorLocalizer generatorLocalizer;
46 private MirOpenPostingLocalizer openPostingsLocalizer;
47 private MirProducerAssistantLocalizer producerAssistantLocalizer;
48 private MirDataModelLocalizer dataModelLocalizer;
49 private MirAdminInterfaceLocalizer adminInterfaceLocalizer;
50 private MirMediaLocalizer mediaLocalizer;
52 public LocalizerCache(MirLocalizer aLocalizer) {
53 localizer = aLocalizer;
56 public MirProducerLocalizer producers() throws MirLocalizerFailure {
57 if (producerLocalizer==null) {
58 producerLocalizer = localizer.producers();
61 return producerLocalizer;
64 public MirGeneratorLocalizer generators() throws MirLocalizerFailure {
65 if (generatorLocalizer==null) {
66 generatorLocalizer = new MirCachingGeneratorLocalizer(localizer.generators());
69 return generatorLocalizer;
72 public MirOpenPostingLocalizer openPostings() throws MirLocalizerFailure {
73 if (openPostingsLocalizer==null) {
74 openPostingsLocalizer = localizer.openPostings();
77 return openPostingsLocalizer;
80 public MirProducerAssistantLocalizer producerAssistant() throws MirLocalizerFailure {
81 if (producerAssistantLocalizer==null) {
82 producerAssistantLocalizer = localizer.producerAssistant();
85 return producerAssistantLocalizer;
88 public MirDataModelLocalizer dataModel() throws MirLocalizerFailure {
89 if (dataModelLocalizer==null) {
90 dataModelLocalizer = new MirCachingDatamodelLocalizer(localizer.dataModel());
93 return dataModelLocalizer;
96 public MirAdminInterfaceLocalizer adminInterface() throws MirLocalizerFailure {
97 if (adminInterfaceLocalizer==null) {
98 adminInterfaceLocalizer = localizer.adminInterface();
101 return adminInterfaceLocalizer;
104 public MirMediaLocalizer media() throws MirLocalizerFailure {
105 if (mediaLocalizer==null) {
106 mediaLocalizer = localizer.media();
109 return mediaLocalizer;
112 private static class MirCachingDatamodelLocalizer implements MirDataModelLocalizer {
113 private MirDataModelLocalizer master;
114 private EntityAdapterModel adapterModel;
116 public MirCachingDatamodelLocalizer(MirDataModelLocalizer aMaster) {
121 public EntityAdapterModel adapterModel() throws MirLocalizerExc, MirLocalizerFailure {
122 if (adapterModel==null) {
123 adapterModel = master.adapterModel();
131 private static class MirCachingGeneratorLocalizer implements MirGeneratorLocalizer {
132 private MirGeneratorLocalizer master;
133 private WriterEngine writerEngine;
134 private Generator.Library producerGeneratorLibrary;
135 private Generator.Library adminGeneratorLibrary;
136 private Generator.Library openPostingGeneratorLibrary;
138 public MirCachingGeneratorLocalizer(MirGeneratorLocalizer aMaster) {
142 public WriterEngine makeWriterEngine() throws MirLocalizerExc, MirLocalizerFailure {
143 if (writerEngine==null) {
144 writerEngine = master.makeWriterEngine();
150 public Generator.Library makeProducerGeneratorLibrary() throws MirLocalizerExc, MirLocalizerFailure {
151 if (producerGeneratorLibrary==null) {
152 producerGeneratorLibrary = master.makeProducerGeneratorLibrary();
155 return producerGeneratorLibrary;
158 public Generator.Library makeAdminGeneratorLibrary() throws MirLocalizerExc, MirLocalizerFailure {
159 if (adminGeneratorLibrary==null) {
160 adminGeneratorLibrary = master.makeAdminGeneratorLibrary();
163 return adminGeneratorLibrary;
166 public Generator.Library makeOpenPostingGeneratorLibrary() throws MirLocalizerExc, MirLocalizerFailure {
167 if (openPostingGeneratorLibrary==null) {
168 openPostingGeneratorLibrary = master.makeOpenPostingGeneratorLibrary();
171 return openPostingGeneratorLibrary;