568983bf32b37ee13ddf59272af5a013c21d626f
[mir.git] / source / mircoders / servlet / ServletModuleAdmin.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 package mircoders.servlet;
31
32 import java.io.IOException;
33 import java.io.Writer;
34 import java.util.Map;
35 import javax.servlet.http.HttpServletRequest;
36 import javax.servlet.http.HttpServletResponse;
37
38 import mir.entity.adapter.EntityIteratorAdapter;
39 import mir.log.LoggerWrapper;
40 import mir.servlet.ServletModule;
41 import mir.servlet.ServletModuleExc;
42 import mir.servlet.ServletModuleFailure;
43 import mir.util.CachingRewindableIterator;
44 import mir.util.URLBuilder;
45 import mircoders.global.MirGlobal;
46
47 public class ServletModuleAdmin extends ServletModule
48 {
49   private static ServletModuleAdmin instance = new ServletModuleAdmin();
50   public static ServletModule getInstance() { return instance; }
51
52   private ServletModuleAdmin() {
53     logger = new LoggerWrapper("ServletModule.Admin");
54     defaultAction = "start";
55   }
56
57   public void superusermenu(HttpServletRequest aRequest, HttpServletResponse aResponse) {
58     URLBuilder urlBuilder = new URLBuilder();
59
60     try {
61       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
62       urlBuilder.setValue("module", "Admin");
63       urlBuilder.setValue("do", "superusermenu");
64
65       responseData.put("thisurl" , urlBuilder.getQuery());
66
67       ServletHelper.generateResponse(aResponse.getWriter(), responseData, "superusermenu.template");
68     }
69     catch (Throwable e) {
70       throw new ServletModuleFailure(e);
71     }
72   }
73
74   /**
75    * Servlet handler method to reload the configuration for scripts.
76    * The output will be aimed at shell sripts.
77    */
78   public void reload(HttpServletRequest aRequest, HttpServletResponse aResponse) {
79     String result = "reload successfull";
80
81     try {
82       MirGlobal.reloadConfigurations();
83     }
84     catch (Throwable t) {
85       result = "error occurred while reloading: " +t.toString();
86     }
87
88     try {
89       Writer writer = aResponse.getWriter();
90       writer.write(result);
91     }
92     catch (IOException e) {
93       throw new ServletModuleFailure(e);
94     }
95   }
96
97   /**
98    * Servlet handler method to reload the configuration.
99    */
100   public void reloadconfiguration(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
101     try {
102       MirGlobal.reloadConfigurations();
103        ServletHelper.generateInfoMessage(aRequest, aResponse, getLocales(aRequest),
104            "bundles/admin", "etc/bundles/adminlocal", "reloadSuccessfull", "", "");
105     }
106     catch (Throwable t) {
107       ServletHelper.generateInfoMessage(aRequest, aResponse, getLocales(aRequest),
108            "bundles/admin", "etc/bundles/adminlocal", "reloadFailed", t.toString(), "");
109     }
110   }
111
112   public void start(HttpServletRequest aRequest, HttpServletResponse aResponse) {
113     String defaultStartTemplate = configuration.getString("Mir.StartTemplate");
114
115     try {
116       Map mergeData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest),
117           "bundles/admin", "etc/bundles/adminlocal");
118       mergeData.put("messages",
119                     new CachingRewindableIterator(
120           new EntityIteratorAdapter("", "webdb_create desc", 10,
121                                     MirGlobal.localizer().dataModel().adapterModel(), "internalMessage", 10, 0)));
122
123       mergeData.put("fileeditentries", ( (ServletModuleFileEdit) ServletModuleFileEdit.getInstance()).getEntries());
124       mergeData.put("administeroperations", ( (ServletModuleLocalizer) ServletModuleLocalizer.getInstance()).getAdministerOperations());
125
126       mergeData.put("searchvalue", null);
127       mergeData.put("searchfield", null);
128       mergeData.put("searchispublished", null);
129       mergeData.put("searcharticletype", null);
130       mergeData.put("searchorder", null);
131       mergeData.put("selectarticleurl", null);
132       mergeData.put("recipes", MirGlobal.localizer().producers().getRecipeNames());
133
134       String startTemplate = MirGlobal.localizer().adminInterface().getAdminPageGenerator(
135           "admin.start", mergeData,
136           ServletHelper.getUserAdapter(aRequest), defaultStartTemplate);
137
138       ServletHelper.generateResponse(aResponse.getWriter(), mergeData, startTemplate);
139     }
140     catch (Exception e) {
141       throw new ServletModuleFailure(e);
142     }
143   }
144
145 }