KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > frontend > LocaleApple


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.outerj.daisy.frontend;
17
18 import org.outerj.daisy.frontend.util.AbstractDaisyApple;
19 import org.outerj.daisy.repository.Repository;
20 import org.apache.cocoon.components.flow.apples.StatelessAppleController;
21 import org.apache.cocoon.components.flow.apples.AppleRequest;
22 import org.apache.cocoon.components.flow.apples.AppleResponse;
23 import org.apache.cocoon.environment.Request;
24 import org.apache.cocoon.environment.Response;
25 import org.apache.cocoon.environment.Session;
26 import org.apache.cocoon.i18n.I18nUtils;
27 import org.apache.avalon.framework.service.Serviceable;
28 import org.apache.avalon.framework.service.ServiceManager;
29 import org.apache.avalon.framework.service.ServiceException;
30 import org.apache.avalon.framework.logger.Logger;
31 import org.apache.avalon.framework.logger.LogEnabled;
32
33 import java.util.*;
34 import java.net.URLEncoder JavaDoc;
35
36 public class LocaleApple extends AbstractDaisyApple implements StatelessAppleController, Serviceable, LogEnabled {
37     private ServiceManager serviceManager;
38     private Logger logger;
39
40     public void service(ServiceManager serviceManager) throws ServiceException {
41         this.serviceManager = serviceManager;
42     }
43
44     public void enableLogging(Logger logger) {
45         this.logger = logger;
46     }
47
48     protected void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception JavaDoc {
49         Request request = appleRequest.getCocoonRequest();
50         String JavaDoc returnTo = request.getParameter("returnTo");
51         String JavaDoc localeParam = request.getParameter("locale");
52
53         if (localeParam == null) {
54             // show locale selection page
55
String JavaDoc submitPath = getMountPoint() + "/locale?";
56             if (returnTo != null)
57                 submitPath += "returnTo=" + URLEncoder.encode(returnTo, "UTF-8");
58
59             Repository repository = WikiHelper.getRepository(request, serviceManager);
60
61             Map viewData = new HashMap();
62             viewData.put("submitPath", submitPath);
63             viewData.put("pageContext", new PageContext(getMountPoint(), repository, getLayoutType(), getSkin(), SkinConfHelper.getGlobalSkinConf(serviceManager), getContext()));
64             viewData.put("locales", new AvailableLocales(serviceManager, logger).getLocales());
65             viewData.put("locale", WikiHelper.getLocale(request));
66             appleResponse.sendPage("SelectLocalePipe", viewData);
67         } else {
68             Locale locale = I18nUtils.parseLocale(localeParam);
69             Response response = appleResponse.getCocoonResponse();
70             WikiHelper.setLocaleCookie(localeParam, response);
71
72             // Set locale in session for quick future retrieval
73
Session session = request.getSession(false);
74             if (session != null)
75                 session.setAttribute("locale", locale);
76
77             WikiHelper.changeLocale(locale, request);
78
79             if (returnTo == null || returnTo.equals(""))
80                 appleResponse.redirectTo(getMountPoint() + "/");
81             else
82                 appleResponse.redirectTo(returnTo);
83         }
84     }
85 }
86
Popular Tags