12d71a9a4c51a3eed19439e09f447859b8e2158d
[mir.git] / source / mircoders / servlet / ServletHelper.java
1 package mircoders.servlet;
2
3 import java.io.PrintWriter;
4 import java.util.HashMap;
5 import java.util.Locale;
6 import java.util.Map;
7
8 import mir.entity.adapter.EntityIteratorAdapter;
9 import mir.generator.Generator;
10 import mir.servlet.ServletModuleExc;
11 import mir.servlet.ServletModuleFailure;
12 import mir.util.CachingRewindableIterator;
13 import mir.util.NullWriter;
14 import mir.util.ResourceBundleGeneratorFunction;
15 import mircoders.global.MirGlobal;
16
17 import org.apache.struts.util.MessageResources;
18
19
20
21 public class ServletHelper {
22 // ML: add logging!
23
24   static Map makeGenerationData(Locale aLocale) throws ServletModuleExc {
25     try {
26       Map result = new HashMap();
27
28       MirGlobal.localizer().producerAssistant().initializeGenerationValueSet(result);
29
30       result.put("returnurl", null);
31
32       Object languages =
33           new CachingRewindableIterator(
34             new EntityIteratorAdapter( "", "id", 30,
35                MirGlobal.localizer().dataModel().adapterModel(), "language"));
36       Object topics =
37           new CachingRewindableIterator(
38             new EntityIteratorAdapter("", "id", 30,
39                MirGlobal.localizer().dataModel().adapterModel(), "topic"));
40
41       Object articleTypes =
42           new CachingRewindableIterator(
43             new EntityIteratorAdapter( "", "id", 30,
44                MirGlobal.localizer().dataModel().adapterModel(), "articleType"));
45
46       Object commentStatuses =
47           new CachingRewindableIterator(
48             new EntityIteratorAdapter( "", "id", 30,
49                MirGlobal.localizer().dataModel().adapterModel(), "commentStatus"));
50
51       result.put("commentstatuses", commentStatuses);
52       result.put("articletypes", articleTypes);
53       result.put("languages", languages);
54       result.put("topics", topics);
55
56       result.put( "lang",
57           new ResourceBundleGeneratorFunction( aLocale,
58                   MessageResources.getMessageResources("bundles.adminlocal"),
59                   MessageResources.getMessageResources("bundles.admin")));
60
61       return result;
62     }
63     catch (Throwable t) {
64       throw new ServletModuleFailure(t);
65     }
66   }
67
68   static void generateResponse(PrintWriter aWriter, Map aGenerationData, String aGenerator) throws ServletModuleExc {
69
70     Generator generator;
71
72     try {
73       generator = MirGlobal.localizer().generators().makeAdminGeneratorLibrary().makeGenerator(aGenerator);
74
75       generator.generate(aWriter, aGenerationData, new PrintWriter(new NullWriter()));
76     }
77     catch (Throwable t) {
78       throw new ServletModuleFailure(t);
79     }
80   }
81 }