001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.jetspeed.container.state.impl;
018:
019: import java.io.Serializable;
020: import java.util.HashMap;
021: import java.util.Map;
022:
023: import javax.portlet.PortletMode;
024: import javax.portlet.WindowState;
025:
026: /**
027: * PortletWindowExtendedNavigationalState
028: *
029: * @author <a href="mailto:ate@apache.org">Ate Douma</a>
030: * @version $Id: PortletWindowExtendedNavigationalState.java 551865 2007-06-29 12:13:10Z ate $
031: */
032: public class PortletWindowExtendedNavigationalState extends
033: PortletWindowBaseNavigationalState {
034: private static final class ModeStateKey implements Serializable {
035: private final String mode;
036: private final String state;
037: private final int hashCode;
038:
039: public ModeStateKey(PortletMode mode, WindowState state) {
040: this .mode = (mode != null ? mode.toString()
041: : PortletMode.VIEW.toString()).intern();
042: this .state = (state != null ? state.toString()
043: : WindowState.NORMAL.toString()).intern();
044: hashCode = this .mode.hashCode() + this .state.hashCode();
045: }
046:
047: public boolean equals(Object obj) {
048: if (obj != null && obj instanceof ModeStateKey) {
049: ModeStateKey key = (ModeStateKey) obj;
050: return mode.equals(key.mode) && state.equals(key.state);
051: }
052: return false;
053: }
054:
055: public int hashCode() {
056: return hashCode;
057: }
058: }
059:
060: private Map parametersMap;
061:
062: private Map decoratorActionEncodings;
063:
064: public Map getParametersMap() {
065: return parametersMap;
066: }
067:
068: public void setParameters(String name, String[] values) {
069: if (parametersMap == null) {
070: parametersMap = new HashMap();
071: }
072: parametersMap.put(name, values);
073: }
074:
075: public void setParametersMap(Map parametersMap) {
076: this .parametersMap = parametersMap;
077: }
078:
079: public void resetDecoratorActionEncodings() {
080: if (decoratorActionEncodings != null) {
081: decoratorActionEncodings.clear();
082: }
083: }
084:
085: public void setDecoratorActionEncoding(PortletMode mode,
086: WindowState state, String encoding) {
087: if (decoratorActionEncodings == null) {
088: decoratorActionEncodings = new HashMap(4);
089: }
090: decoratorActionEncodings.put(new ModeStateKey(mode, state),
091: encoding);
092: }
093:
094: public String getDecoratorActionEncoding(PortletMode mode,
095: WindowState state) {
096: if (decoratorActionEncodings != null) {
097: return (String) decoratorActionEncodings
098: .get(new ModeStateKey(mode, state));
099: }
100: return null;
101: }
102: }
|