freemarker should not just be for servlets, but any context where the
[mir.git] / source / mir / generator / GeneratorHelper.java
1 /*
2  * Copyright (C) 2001, 2002 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
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.
10  *
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.
15  *
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
19  *
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.
29  */
30
31 package mir.generator;
32
33 import java.util.HashMap;
34 import java.util.Locale;
35 import java.util.Map;
36
37 import org.apache.struts.util.MessageResources;
38
39
40 import mir.config.MirPropertiesConfiguration;
41 import mir.entity.adapter.*;
42 import mir.generator.GeneratorExc;
43 import mir.util.CachingRewindableIterator;
44 import mir.util.ResourceBundleGeneratorFunction;
45
46 import mircoders.global.MirGlobal;
47
48
49
50 public class GeneratorHelper {
51   /**
52    * Method to initialize the basic generation values for templates.  Does nothing which assumes a servlet context.
53    */
54
55   public static Map makeBasicGenerationData(Locale[] aLocales, String aBundle, String aDefaultBundle) throws GeneratorExc{
56     try{
57     MirPropertiesConfiguration configuration = MirPropertiesConfiguration.instance();
58     return makeBasicGenerationData(aLocales, aBundle, aDefaultBundle,configuration);
59     }
60     catch (Throwable t){
61       throw new GeneratorExc(t.getMessage());
62     }
63     
64   }
65   
66   /**
67    * Method to initialize the basic generation values for templates.  Does nothing which assumes a servlet context.
68    */
69
70   public static Map makeBasicGenerationData(Locale[] aLocales, String aBundle, String aDefaultBundle,MirPropertiesConfiguration configuration) throws GeneratorExc{
71     try{
72     Map result = new HashMap();
73     MirGlobal.localizer().producerAssistant().initializeGenerationValueSet(result);
74     
75     if (configuration.getString("Mir.Admin.ShowLoggedinUsers").equals("1")) {
76       result.put("loggedinusers", MirGlobal.getLoggedInUsers());
77     }
78     else
79       result.put("loggedinusers", null);
80     
81     Object languages =
82       new CachingRewindableIterator(
83         new EntityIteratorAdapter( "", "id", 30,
84           MirGlobal.localizer().dataModel().adapterModel(), "language"));
85
86       Object topics =
87         new CachingRewindableIterator(
88           new EntityIteratorAdapter("", "id", 30,
89             MirGlobal.localizer().dataModel().adapterModel(), "topic"));
90
91       Object articleTypes =
92         new CachingRewindableIterator(
93           new EntityIteratorAdapter( "", "id", 30,
94             MirGlobal.localizer().dataModel().adapterModel(), "articleType"));
95
96       Object commentStatuses =
97         new CachingRewindableIterator(
98           new EntityIteratorAdapter( "", "id", 30,
99             MirGlobal.localizer().dataModel().adapterModel(), "commentStatus"));
100
101       result.put("commentstatuses", commentStatuses);
102       result.put("articletypes", articleTypes);
103       result.put("languages", languages);
104       result.put("topics", topics);
105       
106       result.put( "lang",
107                   new ResourceBundleGeneratorFunction( aLocales,
108                     new MessageResources[] { MessageResources.getMessageResources(aBundle),
109                       MessageResources.getMessageResources(aDefaultBundle)}));
110
111
112
113     return result;
114     }
115     catch (Throwable t){
116       throw new GeneratorExc(t.getMessage());
117     }
118   }
119 }