001: /******************************************************************************
002: * JBoss, a division of Red Hat *
003: * Copyright 2006, Red Hat Middleware, LLC, and individual *
004: * contributors as indicated by the @authors tag. See the *
005: * copyright.txt in the distribution for a full listing of *
006: * individual contributors. *
007: * *
008: * This is free software; you can redistribute it and/or modify it *
009: * under the terms of the GNU Lesser General Public License as *
010: * published by the Free Software Foundation; either version 2.1 of *
011: * the License, or (at your option) any later version. *
012: * *
013: * This software is distributed in the hope that it will be useful, *
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of *
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
016: * Lesser General Public License for more details. *
017: * *
018: * You should have received a copy of the GNU Lesser General Public *
019: * License along with this software; if not, write to the Free *
020: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
021: * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
022: ******************************************************************************/package org.jboss.portal.core.impl.model.instance.persistent;
023:
024: import org.jboss.portal.common.i18n.LocalizedString;
025: import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
026: import org.jboss.portal.core.impl.model.instance.InstanceContainerContext;
027: import org.jboss.portal.core.model.instance.metadata.InstanceMetaData;
028: import org.jboss.portal.jems.hibernate.ContextObject;
029: import org.jboss.portal.portlet.impl.jsr168.metadata.LocalizedStringMetaData;
030: import org.jboss.portal.portlet.impl.jsr168.metadata.LocalizedValueMetaData;
031: import org.jboss.portal.security.RoleSecurityBinding;
032:
033: import java.util.Collection;
034: import java.util.HashMap;
035: import java.util.HashSet;
036: import java.util.Iterator;
037: import java.util.Locale;
038: import java.util.Map;
039: import java.util.Set;
040:
041: /**
042: * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
043: * @version $Revision: 9574 $
044: */
045: class PersistentInstanceDefinition extends AbstractInstanceDefinition
046: implements ContextObject {
047:
048: // Persistent fields
049:
050: protected Long key;
051: protected String instanceId;
052: protected boolean mutable;
053: protected Map relatedSecurityBindings;
054: protected Map relatedCustomizations;
055: protected Map displayNames;
056:
057: // Runtime fields
058:
059: /** . */
060: protected InstanceContainerContext containerContext;
061:
062: public PersistentInstanceDefinition() {
063: this .mutable = false;
064: this .portletRef = null;
065: this .instanceId = null;
066: this .relatedSecurityBindings = null;
067: this .relatedCustomizations = null;
068: this .state = null;
069: }
070:
071: public PersistentInstanceDefinition(
072: InstanceContainerContext containerContext, String id,
073: String portletRef) {
074: this .containerContext = containerContext;
075: this .mutable = false;
076: this .portletRef = portletRef;
077: this .instanceId = id;
078: this .relatedSecurityBindings = new HashMap();
079: this .relatedCustomizations = new HashMap();
080: this .displayNames = new HashMap();
081: this .state = null;
082: }
083:
084: public PersistentInstanceDefinition(
085: InstanceContainerContext containerContext,
086: InstanceMetaData instanceMD) {
087: this .containerContext = containerContext;
088: this .mutable = false;
089: this .portletRef = instanceMD.getPortletRef();
090: this .instanceId = instanceMD.getId();
091: this .displayNames = getDisplayNamesMap(instanceMD
092: .getDisplayName());
093: this .relatedSecurityBindings = new HashMap();
094: this .relatedCustomizations = new HashMap();
095: this .state = null;
096: }
097:
098: private Map getDisplayNamesMap(LocalizedStringMetaData displayName) {
099: Map map = new HashMap();
100: if (displayName == null) {
101: return map;
102: }
103: for (int i = 0; i < displayName.getValues().size(); i++) {
104: LocalizedValueMetaData descriptionMD = (LocalizedValueMetaData) displayName
105: .getValues().get(i);
106: Locale locale = descriptionMD.getLocale();
107: if (locale == null) {
108: locale = Locale.ENGLISH;
109: }
110: map.put(locale, descriptionMD.getValue());
111: }
112: return map;
113: }
114:
115: public LocalizedString getDisplayName() {
116: return new LocalizedString(displayNames, Locale.ENGLISH);
117: }
118:
119: public void setDisplayName(LocalizedString localizedString) {
120: if (localizedString == null) {
121: throw new IllegalArgumentException(
122: "No null display name accepted");
123: }
124:
125: displayNames = new HashMap();
126:
127: Map map = localizedString.getValues();
128: Iterator it = map.values().iterator();
129: while (it.hasNext()) {
130: LocalizedString.Value value = (LocalizedString.Value) it
131: .next();
132: displayNames.put(value.getLocale(), value.getString());
133: }
134: }
135:
136: // Hibernate ********************************************************************************************************
137:
138: public Long getKey() {
139: return key;
140: }
141:
142: public void setKey(Long key) {
143: this .key = key;
144: }
145:
146: public String getInstanceId() {
147: return instanceId;
148: }
149:
150: public void setInstanceId(String instanceId) {
151: this .instanceId = instanceId;
152: }
153:
154: public Map getRelatedSecurityBindings() {
155: return relatedSecurityBindings;
156: }
157:
158: public void setRelatedSecurityBindings(Map relatedSecurityBindings) {
159: this .relatedSecurityBindings = relatedSecurityBindings;
160: }
161:
162: public Map getRelatedCustomizations() {
163: return relatedCustomizations;
164: }
165:
166: public void setDisplayNames(Map displayNames) {
167: this .displayNames = displayNames;
168: }
169:
170: public Map getDisplayNames() {
171: return displayNames;
172: }
173:
174: public void setRelatedCustomizations(Map relatedCustomizations) {
175: this .relatedCustomizations = relatedCustomizations;
176: }
177:
178: public boolean isMutable() {
179: return mutable;
180: }
181:
182: public void setMutable(boolean mutable) {
183: this .mutable = mutable;
184: }
185:
186: // Instance implementation ******************************************************************************************
187:
188: public String getId() {
189: return instanceId;
190: }
191:
192: // AbstractInstanceDefinition implementation ************************************************************************
193:
194: public Collection getCustomizations() {
195: return relatedCustomizations.values();
196: }
197:
198: public Set getSecurityBindings() {
199: Set constraints = new HashSet();
200: for (Iterator i = relatedSecurityBindings.values().iterator(); i
201: .hasNext();) {
202: PersistentRoleSecurityBinding isc = (PersistentRoleSecurityBinding) i
203: .next();
204: RoleSecurityBinding sc = new RoleSecurityBinding(isc
205: .getActions(), isc.getRole());
206: constraints.add(sc);
207: }
208: return constraints;
209: }
210:
211: // ContextObject implementation *************************************************************************************
212:
213: public void setContext(Object context) {
214: this .containerContext = (InstanceContainerContext) context;
215: }
216:
217: protected InstanceContainerContext getContainerContext() {
218: return containerContext;
219: }
220: }
|