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 the com.oreilly.servlet library, any library
22 * licensed under the Apache Software License, The Sun (tm) Java Advanced
23 * Imaging library (JAI), The Sun JIMI library (or with modified versions of
24 * the above that use the same license as the above), and distribute linked
25 * combinations including the two. You must obey the GNU General Public
26 * License in all respects for all of the code used other than the above
27 * mentioned libraries. If you modify this file, you may extend this exception
28 * to your version of the file, but you are not obligated to do so. If you do
29 * not wish to do so, delete this exception statement from your version.
32 package mircoders.localizer.basic;
34 import java.util.GregorianCalendar;
35 import java.util.HashMap;
36 import java.util.Iterator;
39 import mir.config.MirPropertiesConfiguration;
40 import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
41 import mir.entity.EntityList;
42 import mir.entity.adapter.EntityAdapter;
43 import mir.entity.adapter.EntityIteratorAdapter;
44 import mir.log.LoggerWrapper;
45 import mir.misc.StringUtil;
46 import mir.util.DateToMapAdapter;
47 import mir.util.GeneratorHTMLFunctions;
48 import mir.util.GeneratorIntegerFunctions;
49 import mir.util.GeneratorListFunctions;
50 import mir.util.GeneratorStringFunctions;
51 import mircoders.global.MirGlobal;
52 import mircoders.localizer.MirProducerAssistantLocalizer;
53 import mircoders.module.ModuleLanguage;
54 import mircoders.module.ModuleTopics;
55 import mircoders.storage.DatabaseLanguage;
56 import mircoders.storage.DatabaseTopics;
58 public class MirBasicProducerAssistantLocalizer implements MirProducerAssistantLocalizer {
59 protected LoggerWrapper logger;
61 public void initializeGenerationValueSet(Map aValueSet) {
64 Map configMap = new HashMap();
65 Map utilityMap = new HashMap();
67 logger = new LoggerWrapper("Localizer.ProducerAssistant");
70 configMap.put("producerDocRoot", MirGlobal.getConfigProperty("Producer.DocRoot"));
71 configMap.put("storageRoot", MirGlobal.getConfigProperty("Producer.StorageRoot"));
72 configMap.put("productionHost", MirGlobal.getConfigProperty("Producer.ProductionHost"));
73 configMap.put("openAction", MirGlobal.getConfigProperty("Producer.OpenAction"));
74 configMap.put("docRoot", MirGlobal.getConfigProperty("RootUri"));
75 configMap.put("actionRoot", MirGlobal.getConfigProperty("RootUri")+"/servlet/Mir");
76 configMap.put("now", new DateToMapAdapter((new GregorianCalendar()).getTime()));
77 configMap.put("videoHost", MirGlobal.getConfigProperty("Producer.Video.Host"));
78 configMap.put("audioHost", MirGlobal.getConfigProperty("Producer.Audio.Host"));
79 configMap.put("imageHost", MirGlobal.getConfigProperty("Producer.Image.Host"));
80 configMap.put("imagePath", MirGlobal.getConfigProperty("Producer.Image.Path"));
81 configMap.put("mirVersion", MirGlobal.getConfigProperty("Mir.Version"));
82 configMap.put("defEncoding", MirGlobal.getConfigProperty("Mir.DefaultEncoding"));
86 configMap.putAll( MirPropertiesConfiguration.instance().allSettings() );
88 catch (PropertiesConfigExc e) {
89 throw new RuntimeException("Can't get configuration: " + e.getMessage());
92 utilityMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
93 utilityMap.put("encodeHTML", new GeneratorHTMLFunctions.encodeHTMLGeneratorFunction());
94 utilityMap.put("encodeXML", new GeneratorHTMLFunctions.encodeXMLGeneratorFunction());
95 utilityMap.put("encodeURI", new GeneratorHTMLFunctions.encodeURIGeneratorFunction());
96 utilityMap.put("subString", new GeneratorStringFunctions.subStringFunction());
97 utilityMap.put("subList", new GeneratorListFunctions.subListFunction());
98 utilityMap.put("isOdd", new GeneratorIntegerFunctions.isOddFunction());
99 utilityMap.put("increment", new GeneratorIntegerFunctions.incrementFunction());
102 aValueSet.put("config", configMap);
103 aValueSet.put("utility", utilityMap);
106 EntityList topicList=null;
107 EntityList entityList=null;
108 EntityList languageList=null;
111 ModuleTopics topicsModule = new ModuleTopics(DatabaseTopics.getInstance());
112 ModuleLanguage languageModule = new ModuleLanguage(DatabaseLanguage.getInstance());
114 topicList = topicsModule.getTopicsList();
115 languageList = languageModule.getByWhereClause("", "id", -1);
118 catch (Throwable t) {
119 logger.error("initializeGenerationValueSet: Exception "+t.getMessage());
122 aValueSet.put("topics", topicList);
123 aValueSet.put("imclist", entityList);
125 Map articleTypeMap = new HashMap();
126 articleTypeMap.put("openposting", "0");
127 articleTypeMap.put("newswire", "1");
128 articleTypeMap.put("feature", "2");
129 articleTypeMap.put("topicspecial", "3");
130 articleTypeMap.put("startspecial", "4");
133 i = new EntityIteratorAdapter( "", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "articleType" );
135 while (i.hasNext()) {
136 EntityAdapter articleType = (EntityAdapter) i.next();
138 articleTypeMap.put(articleType.get("name"), articleType.get("id"));
141 catch (Throwable t) {
142 logger.error("initializeGenerationValueSet: Exception while collecting article types "+t.getMessage());
144 aValueSet.put("articletype", articleTypeMap);
146 Map commentStatusMap = new HashMap();
148 i = new EntityIteratorAdapter( "", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "commentStatus" );
150 while (i.hasNext()) {
151 EntityAdapter commentStatus = (EntityAdapter) i.next();
153 commentStatusMap.put(commentStatus.get("name"), commentStatus.get("id"));
156 catch (Throwable t) {
157 logger.error("initializeGenerationValueSet: Exception while collecting comment statuses"+t.getMessage());
159 aValueSet.put("commentstatus", commentStatusMap);
163 public String filterText(String aText) {
164 return StringUtil.createHTML(
165 StringUtil.deleteForbiddenTags(aText),
166 MirGlobal.getConfigProperty("Producer.ImageRoot"),
167 MirGlobal.getConfigProperty("Producer.MailLinkName"),
168 MirGlobal.getConfigProperty("Producer.ExtLinkName"),
169 MirGlobal.getConfigProperty("Producer.IntLinkName")