generatingProducerNode now has an encoding parameter
[mir.git] / source / mircoders / localizer / basic / MirBasicProducerAssistantLocalizer.java
1 package mircoders.localizer.basic;
2
3 import java.util.*;
4 import java.io.*;
5 import freemarker.template.utility.*;
6 import mir.misc.*;
7 import mir.entity.*;
8 import mir.util.*;
9 import mircoders.module.*;
10 import mircoders.storage.*;
11 import mircoders.localizer.*;
12 import mircoders.global.*;
13
14 public class MirBasicProducerAssistantLocalizer implements MirProducerAssistantLocalizer {
15   protected static Logfile logger = Logfile.getInstance( MirGlobal.getConfigProperty("Home") + "/" + MirGlobal.getConfigProperty("Mir.Localizer.Logfile"));
16
17   public void initializeGenerationValueSet(Map aValueSet) {
18     // ML: these config settings will be included more beautifully as soon as the new config system is in place
19
20     Map configMap = new HashMap();
21     Map utilityMap = new HashMap();
22
23     configMap.put("producerDocRoot", MirGlobal.getConfigProperty("Producer.DocRoot"));
24     configMap.put("storageRoot", MirGlobal.getConfigProperty("Producer.StorageRoot"));
25     configMap.put("productionHost", MirGlobal.getConfigProperty("Producer.ProductionHost"));
26     configMap.put("openAction", MirGlobal.getConfigProperty("Producer.OpenAction"));
27     configMap.put("docRoot", MirGlobal.getConfigProperty("RootUri"));
28     configMap.put("now", new DateToMapAdapter((new GregorianCalendar()).getTime()));
29     configMap.put("videoHost", MirGlobal.getConfigProperty("Producer.Video.Host"));
30     configMap.put("audioHost", MirGlobal.getConfigProperty("Producer.Audio.Host"));
31     configMap.put("imageHost", MirGlobal.getConfigProperty("Producer.Image.Host"));
32     configMap.put("imagePath", MirGlobal.getConfigProperty("Producer.Image.Path"));
33     configMap.put("mirVersion", MirGlobal.getConfigProperty("Mir.Version"));
34     configMap.put("defEncoding", MirGlobal.getConfigProperty("Mir.DefaultEncoding"));
35
36     utilityMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
37
38     aValueSet.put("config", configMap);
39     aValueSet.put("utility", utilityMap);
40
41     EntityList topicList=null;
42     EntityList entityList=null;
43     EntityList parentList=null;
44     EntityList languageList=null;
45
46     try {
47       ModuleLinksImcs linksImcsModule = new ModuleLinksImcs(DatabaseLinksImcs.getInstance());
48       ModuleTopics topicsModule = new ModuleTopics(DatabaseTopics.getInstance());
49       ModuleLanguage languageModule = new ModuleLanguage(DatabaseLanguage.getInstance());
50
51       topicList = topicsModule.getTopicsList();
52       entityList = linksImcsModule.getByWhereClause("", "sortpriority, title", -1);
53       parentList = linksImcsModule.getByWhereClause("to_parent_id=NULL", "sortpriority, title", -1);
54       languageList = languageModule.getByWhereClause("", "id", -1);
55     }
56     catch (Throwable t) {
57       logger.printError("initializeGenerationValueSet: Exception "+t.getMessage());
58     }
59
60     aValueSet.put("topics", topicList);
61     aValueSet.put("imclist", entityList);
62     aValueSet.put("parentlist", parentList);
63
64     Map articleTypeMap = new HashMap();
65     articleTypeMap.put("openposting", "0");
66     articleTypeMap.put("newswire", "1");
67     articleTypeMap.put("feature", "2");
68     articleTypeMap.put("topicspecial", "3");
69     articleTypeMap.put("startspecial", "4");
70     aValueSet.put("articletype", articleTypeMap);
71   };
72
73   public PrintWriter openWriter(String anIdentifier, String anEncoding) throws MirLocalizerFailure {
74     String encoding;
75     File file;
76     File dir;
77
78     if (anEncoding!=null && !anEncoding.equals(""))
79       encoding = anEncoding;
80     else
81       encoding = MirGlobal.getConfigProperty("Mir.DefaultEncoding");
82
83     try {
84       file = new File( anIdentifier );
85       dir = new File(file.getParent());
86         if (dir!=null && !dir.exists()){
87           dir.mkdirs();
88       }
89
90       return new PrintWriter(
91         new OutputStreamWriter(
92           new FileOutputStream(file), anEncoding
93         )
94       );
95     }
96     catch (Throwable t) {
97       throw new MirLocalizerFailure("Failure while opening a PrintWriter",t);
98     }
99   };
100
101   public void closeWriter(PrintWriter aWriter) {
102     aWriter.close();
103   };
104
105   public String filterText(String aText) {
106     return StringUtil.createHTML(
107         StringUtil.deleteForbiddenTags(aText),
108         MirGlobal.getConfigProperty("Producer.ImageRoot"),
109         MirGlobal.getConfigProperty("Producer.MailLinkName"),
110         MirGlobal.getConfigProperty("Producer.ExtLinkName"),
111         MirGlobal.getConfigProperty("Producer.IntLinkName")
112     );
113   }
114 }