001: /**
002: * $Id: TemplateClientConfigProvider.java,v 1.23 2006/09/05 19:56:20 dpolla Exp $
003: * Copyright 2003 Sun Microsystems, Inc. All
004: * rights reserved. Use of this product is subject
005: * to license terms. Federal Acquisitions:
006: * Commercial Software -- Government Users
007: * Subject to Standard License Terms and
008: * Conditions.
009: *
010: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
011: * are trademarks or registered trademarks of Sun Microsystems,
012: * Inc. in the United States and other countries.
013: */package com.sun.portal.wireless.providers.containers.template;
014:
015: import com.sun.portal.providers.ProviderException;
016: import com.sun.portal.providers.context.ProviderContextException;
017:
018: import com.sun.portal.wireless.providers.containers.DesktopDispatcherProvider;
019:
020: import javax.servlet.http.HttpServletRequest;
021: import javax.servlet.http.HttpServletResponse;
022: import java.net.URL;
023: import java.net.MalformedURLException;
024: import java.util.Iterator;
025: import java.util.Hashtable;
026: import java.util.ResourceBundle;
027: import java.util.Map;
028: import java.util.logging.Level;
029: import java.util.logging.Logger;
030: import com.sun.portal.log.common.PortalLogger;
031:
032: public class TemplateClientConfigProvider extends
033: WirelessContainerProviderAdapter {
034:
035: private static Logger logger = PortalLogger
036: .getLogger(TemplateClientConfigProvider.class);
037:
038: public StringBuffer getEdit(HttpServletRequest request,
039: HttpServletResponse response) throws ProviderException {
040:
041: Hashtable mainTags = new Hashtable();
042: mainTags.put(BANNER_TAG, getTemplate(BANNER_TEMPLATE));
043: mainTags
044: .put(BULLETCOLOR_TAG, getTemplate(BULLETCOLOR_TEMPLATE));
045: mainTags.put(PRODUCTNAME, getStringProperty(PRODUCTNAME));
046: mainTags.put(DEVICEMENUBAR_TAG,
047: getTemplate(DEVICEMENUBAR_TEMPLATE));
048:
049: StringBuffer contentQuerystring = new StringBuffer();
050: StringBuffer layoutQuerystring = new StringBuffer();
051: StringBuffer clientconfigQuerystring = new StringBuffer();
052:
053: Map editPages = getMapProperty(EDITPAGES);
054:
055: contentQuerystring = contentQuerystring.append(ACTION).append(
056: '=').append(EDIT).append('&').append(PROVIDER).append(
057: '=').append(editPages.get(CONTENT));
058:
059: layoutQuerystring = layoutQuerystring.append(ACTION)
060: .append('=').append(EDIT).append('&').append(PROVIDER)
061: .append('=').append(editPages.get(LAYOUT));
062:
063: clientconfigQuerystring = clientconfigQuerystring
064: .append(ACTION).append('=').append(EDIT).append('&')
065: .append(PROVIDER).append('=').append(
066: editPages.get(CLIENTCONFIG));
067:
068: mainTags.put(CONTENTLINK_TAG, getProviderContext()
069: .getDesktopURL(request, contentQuerystring.toString(),
070: false));
071: mainTags.put(LAYOUTLINK_TAG, getProviderContext()
072: .getDesktopURL(request, layoutQuerystring.toString(),
073: false));
074: mainTags.put(CLIENTCONFIGLINK_TAG, getProviderContext()
075: .getDesktopURL(request,
076: clientconfigQuerystring.toString(), false));
077: mainTags.put(LOGOUTLINK_TAG, getProviderContext()
078: .getLogoutURL());
079: mainTags.put(CLIENTCONFIGPROVIDER_TAG, editPages
080: .get(CLIENTCONFIG));
081: URL helpURL = null;
082: try {
083: helpURL = getHelp(request);
084: } catch (ProviderException e) {
085: if (logger.isLoggable(Level.INFO))
086: logger.log(Level.INFO, "PSMA_CSPWPCT0003", e);
087: }
088: if (helpURL != null) {
089: mainTags.put(HELPLINK_TAG, helpURL.toString());
090: }
091:
092: Map selectedClients = null;
093: try {
094: selectedClients = DesktopDispatcherProvider
095: .getSelectedClients(getContainerProviderContext());
096: } catch (ProviderContextException e) {
097: throw new ProviderException(
098: "WirelessTemplateClientConfig.getEdit():", e);
099: }
100:
101: Hashtable optionTags = new Hashtable();
102: Hashtable selectTags = new Hashtable();
103:
104: StringBuffer clientOptions = new StringBuffer();
105: StringBuffer clientSelect = new StringBuffer();
106: int size = selectedClients.size();
107: String clientType = null;
108: String clientName = null;
109:
110: /* Create a select option for each client */
111: for (Iterator i = selectedClients.keySet().iterator(); i
112: .hasNext();) {
113: clientType = (String) i.next();
114:
115: ResourceBundle clientBundle = null;
116: try {
117: clientBundle = getResourceBundle(PROPERTIES_DEV);
118: clientName = clientBundle.getString(clientType);
119: } catch (Exception e) {
120: clientName = clientType;
121: }
122:
123: optionTags.clear();
124: optionTags.put(CLIENT, clientType);
125: optionTags.put(CLIENTNAME_TAG, clientName);
126: clientOptions.append(getTemplate(CLIENTOPTION_TEMPLATE,
127: optionTags));
128: }
129: selectTags.clear();
130: selectTags.put(CLIENTSIZE_TAG, String.valueOf(size));
131: selectTags.put(CLIENTOPTIONS_TAG, clientOptions);
132: clientSelect.append(getTemplate(CLIENTSELECT_TEMPLATE,
133: selectTags));
134:
135: mainTags.put(SELECTCLIENTS_TAG, clientSelect);
136:
137: return (getTemplate(CLIENTCONFIG_TEMPLATE, mainTags));
138:
139: }
140:
141: public URL processEdit(HttpServletRequest request,
142: HttpServletResponse response) throws ProviderException {
143:
144: // read client type passed in
145: String client = request.getParameter(CLIENT);
146:
147: if (client != null) {
148: try {
149: DesktopDispatcherProvider.removeClient(request,
150: getContainerProviderContext(), client);
151: } catch (ProviderContextException e) {
152: throw new ProviderException(
153: "WirelessTemplateClientConfig.processEdit():",
154: e);
155: }
156: }
157:
158: URL nextUrl = null;
159: StringBuffer nextQuerystring = new StringBuffer();
160: nextQuerystring.append(PROVIDER).append('=').append(getName())
161: .append('&').append(ACTION).append('=').append(EDIT);
162: String next = getProviderContext().getDesktopURL(request,
163: nextQuerystring.toString(), false);
164: try {
165: nextUrl = new URL(next);
166: } catch (MalformedURLException e) {
167: throw new ProviderException(
168: "WirelessTemplateClientConfigProvider.processEdit(): ",
169: e);
170: }
171:
172: return nextUrl;
173:
174: }
175:
176: }
|