| PortletImpl.java |
1 /**
2 * Copyright (c) 2000-2008 Liferay, Inc. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23 package com.liferay.portal.model.impl;
24
25 import com.liferay.portal.kernel.job.Scheduler;
26 import com.liferay.portal.kernel.lar.PortletDataHandler;
27 import com.liferay.portal.kernel.plugin.PluginPackage;
28 import com.liferay.portal.kernel.pop.MessageListener;
29 import com.liferay.portal.kernel.portlet.ConfigurationAction;
30 import com.liferay.portal.kernel.portlet.FriendlyURLMapper;
31 import com.liferay.portal.kernel.portlet.PortletLayoutListener;
32 import com.liferay.portal.kernel.servlet.URLEncoder;
33 import com.liferay.portal.kernel.util.ContentTypes;
34 import com.liferay.portal.kernel.util.InstancePool;
35 import com.liferay.portal.kernel.util.StringMaker;
36 import com.liferay.portal.kernel.util.StringPool;
37 import com.liferay.portal.kernel.util.StringUtil;
38 import com.liferay.portal.kernel.util.Validator;
39 import com.liferay.portal.model.Plugin;
40 import com.liferay.portal.model.PluginSetting;
41 import com.liferay.portal.model.Portlet;
42 import com.liferay.portal.model.PortletApp;
43 import com.liferay.portal.model.PortletFilter;
44 import com.liferay.portal.model.PortletInfo;
45 import com.liferay.portal.model.PublicRenderParameter;
46 import com.liferay.portal.model.User;
47 import com.liferay.portal.service.RoleLocalServiceUtil;
48 import com.liferay.portal.service.UserLocalServiceUtil;
49 import com.liferay.portal.util.PortalUtil;
50 import com.liferay.portal.util.PropsValues;
51 import com.liferay.portal.util.QNameUtil;
52 import com.liferay.portlet.PortletBag;
53 import com.liferay.portlet.PortletBagPool;
54 import com.liferay.portlet.social.model.SocialActivityInterpreter;
55
56 import java.util.ArrayList;
57 import java.util.Collections;
58 import java.util.HashMap;
59 import java.util.HashSet;
60 import java.util.Hashtable;
61 import java.util.Iterator;
62 import java.util.LinkedHashMap;
63 import java.util.List;
64 import java.util.Map;
65 import java.util.Set;
66 import java.util.TreeSet;
67
68 import javax.portlet.PortletMode;
69
70 import javax.xml.namespace.QName;
71
72 import org.apache.commons.logging.Log;
73 import org.apache.commons.logging.LogFactory;
74
75 /**
76 * <a href="PortletImpl.java.html"><b><i>View Source</i></b></a>
77 *
78 * @author Brian Wing Shun Chan
79 *
80 */
81 public class PortletImpl extends PortletModelImpl implements Portlet {
82
83 /**
84 * War file separator.
85 */
86 public static final String WAR_SEPARATOR = "_WAR_";
87
88 /**
89 * Instance separator.
90 */
91 public static final String INSTANCE_SEPARATOR = "_INSTANCE_";
92
93 /**
94 * Layout separator.
95 */
96 public static final String LAYOUT_SEPARATOR = "_LAYOUT_";
97
98 /**
99 * Default preferences.
100 */
101 public static final String DEFAULT_PREFERENCES = "<portlet-preferences />";
102
103 /**
104 * User principal strategy for screen name.
105 */
106 public static final String USER_PRINCIPAL_STRATEGY_SCREEN_NAME =
107 "screenName";
108
109 /**
110 * User principal strategy for screen name.
111 */
112 public static final String USER_PRINCIPAL_STRATEGY_USER_ID = "userId";
113
114 /**
115 * Gets the root portlet id of the portlet.
116 *
117 * @param portletId the portlet id of the portlet
118 * @return the root portlet id of the portlet
119 */
120 public static String getRootPortletId(String portletId) {
121 int pos = portletId.indexOf(INSTANCE_SEPARATOR);
122
123 if (pos == -1) {
124 return portletId;
125 }
126 else {
127 return portletId.substring(0, pos);
128 }
129 }
130
131 /**
132 * Gets the instance id of the portlet.
133 *
134 * @param portletId the portlet id of the portlet
135 * @return the instance id of the portlet
136 */
137 public static String getInstanceId(String portletId) {
138 int pos = portletId.indexOf(INSTANCE_SEPARATOR);
139
140 if (pos == -1) {
141 return null;
142 }
143 else {
144 return portletId.substring(
145 pos + INSTANCE_SEPARATOR.length(), portletId.length());
146 }
147 }
148
149 /**
150 * Constructs a portlet with no parameters.
151 */
152 public PortletImpl() {
153 }
154
155 /**
156 * Constructs a portlet with the specified parameters.
157 */
158 public PortletImpl(long companyId, String portletId) {
159 setCompanyId(companyId);
160 setPortletId(portletId);
161 setStrutsPath(portletId);
162 setActive(true);
163 _headerPortalCss = new ArrayList<String>();
164 _headerPortletCss = new ArrayList<String>();
165 _headerPortalJavaScript = new ArrayList<String>();
166 _headerPortletJavaScript = new ArrayList<String>();
167 _footerPortalCss = new ArrayList<String>();
168 _footerPortletCss = new ArrayList<String>();
169 _footerPortalJavaScript = new ArrayList<String>();
170 _footerPortletJavaScript = new ArrayList<String>();
171 _unlinkedRoles = new HashSet<String>();
172 _roleMappers = new LinkedHashMap<String, String>();
173 _initParams = new HashMap<String, String>();
174 _portletModes = new HashMap<String, Set<String>>();
175 _supportedLocales = new HashSet<String>();
176 _portletFilters = new LinkedHashMap<String, PortletFilter>();
177 _processingEvents = new HashSet<QName>();
178 _publishingEvents = new HashSet<QName>();
179 _publicRenderParameters = new HashSet<PublicRenderParameter>();
180 }
181
182 /**
183 * Constructs a portlet with the specified parameters.
184 */
185 public PortletImpl(
186 String portletId, PluginPackage pluginPackage,
187 PluginSetting pluginSetting, long companyId, String icon,
188 String virtualPath, String strutsPath, String displayName,
189 String portletClass, String configurationActionClass,
190 String indexerClass, String openSearchClass, String schedulerClass,
191 String portletURLClass, String friendlyURLMapperClass,
192 String urlEncoderClass, String portletDataHandlerClass,
193 String portletLayoutListenerClass,
194 String popMessageListenerClass, String socialActivityInterpreterClass,
195 String defaultPreferences, String prefsValidator,
196 boolean prefsCompanyWide, boolean prefsUniquePerLayout,
197 boolean prefsOwnedByGroup, boolean useDefaultTemplate,
198 boolean showPortletAccessDenied, boolean showPortletInactive,
199 boolean actionURLRedirect, boolean restoreCurrentView,
200 boolean maximizeEdit, boolean maximizeHelp, boolean popUpPrint,
201 boolean layoutCacheable, boolean instanceable,
202 String userPrincipalStrategy, boolean privateRequestAttributes,
203 boolean privateSessionAttributes, int renderWeight, boolean ajaxable,
204 List<String> headerPortalCss, List<String> headerPortletCss,
205 List<String> headerPortalJavaScript,
206 List<String> headerPortletJavaScript, List<String> footerPortalCss,
207 List<String> footerPortletCss, List<String> footerPortalJavaScript,
208 List<String> footerPortletJavaScript,
209 String cssClassWrapper, boolean addDefaultResource, String roles,
210 Set<String> unlinkedRoles, Map<String, String> roleMappers,
211 boolean system, boolean active, boolean include,
212 Map<String, String> initParams, Integer expCache,
213 Map<String, Set<String>> portletModes, Set<String> supportedLocales,
214 String resourceBundle, PortletInfo portletInfo,
215 Map<String, PortletFilter> portletFilters, Set<QName> processingEvents,
216 Set<QName> publishingEvents,
217 Set<PublicRenderParameter> publicRenderParameters,
218 PortletApp portletApp) {
219
220 setPortletId(portletId);
221 _pluginPackage = pluginPackage;
222 _defaultPluginSetting = pluginSetting;
223 setCompanyId(companyId);
224 _icon = icon;
225 _virtualPath = virtualPath;
226 _strutsPath = strutsPath;
227 _displayName = displayName;
228 _portletClass = portletClass;
229 _configurationActionClass = configurationActionClass;
230 _indexerClass = indexerClass;
231 _openSearchClass = openSearchClass;
232 _schedulerClass = schedulerClass;
233 _portletURLClass = portletURLClass;
234 _friendlyURLMapperClass = friendlyURLMapperClass;
235 _urlEncoderClass = urlEncoderClass;
236 _portletDataHandlerClass = portletDataHandlerClass;
237 _portletLayoutListenerClass = portletLayoutListenerClass;
238 _popMessageListenerClass = popMessageListenerClass;
239 _socialActivityInterpreterClass = socialActivityInterpreterClass;
240 _defaultPreferences = defaultPreferences;
241 _prefsValidator = prefsValidator;
242 _prefsCompanyWide = prefsCompanyWide;
243 _prefsUniquePerLayout = prefsUniquePerLayout;
244 _prefsOwnedByGroup = prefsOwnedByGroup;
245 _useDefaultTemplate = useDefaultTemplate;
246 _showPortletAccessDenied = showPortletAccessDenied;
247 _showPortletInactive = showPortletInactive;
248 _actionURLRedirect = actionURLRedirect;
249 _restoreCurrentView = restoreCurrentView;
250 _maximizeEdit = maximizeEdit;
251 _maximizeHelp = maximizeHelp;
252 _popUpPrint = popUpPrint;
253 _layoutCacheable = layoutCacheable;
254 _instanceable = instanceable;
255 _userPrincipalStrategy = userPrincipalStrategy;
256 _privateRequestAttributes = privateRequestAttributes;
257 _privateSessionAttributes = privateSessionAttributes;
258 _renderWeight = renderWeight;
259 _ajaxable = ajaxable;
260 _headerPortalCss = headerPortalCss;
261 _headerPortletCss = headerPortletCss;
262 _headerPortalJavaScript = headerPortalJavaScript;
263 _headerPortletJavaScript = headerPortletJavaScript;
264 _footerPortalCss = footerPortalCss;
265 _footerPortletCss = footerPortletCss;
266 _footerPortalJavaScript = footerPortalJavaScript;
267 _footerPortletJavaScript = footerPortletJavaScript;
268 _cssClassWrapper = cssClassWrapper;
269 _addDefaultResource = addDefaultResource;
270 setRoles(roles);
271 _unlinkedRoles = unlinkedRoles;
272 _roleMappers = roleMappers;
273 _system = system;
274 setActive(active);
275 _include = include;
276 _initParams = initParams;
277 _expCache = expCache;
278 _portletModes = portletModes;
279 _supportedLocales = supportedLocales;
280 _resourceBundle = resourceBundle;
281 _portletInfo = portletInfo;
282 _portletFilters = portletFilters;
283 setProcessingEvents(processingEvents);
284 setPublishingEvents(publishingEvents);
285 setPublicRenderParameters(publicRenderParameters);
286 _portletApp = portletApp;
287
288 if (_instanceable) {
289 _clonedInstances = new Hashtable<String, Portlet>();
290 }
291 }
292
293 /**
294 * Gets the root portlet id of the portlet.
295 *
296 * @return the root portlet id of the portlet
297 */
298 public String getRootPortletId() {
299 return getRootPortletId(getPortletId());
300 }
301
302 /**
303 * Gets the instance id of the portlet.
304 *
305 * @return the instance id of the portlet
306 */
307 public String getInstanceId() {
308 return getInstanceId(getPortletId());
309 }
310
311 /**
312 * Gets the plugin id of the portlet.
313 *
314 * @return the plugin id of the portlet
315 */
316 public String getPluginId() {
317 return getRootPortletId();
318 }
319
320 /**
321 * Gets the plugin type of the portlet.
322 *
323 * @return the plugin type of the portlet
324 */
325 public String getPluginType() {
326 return Plugin.TYPE_PORTLET;
327 }
328
329 /**
330 * Get the package to which the portlet belongs to.
331 *
332 * @return the plugin package of the portlet
333 */
334 public PluginPackage getPluginPackage() {
335 return _pluginPackage;
336 }
337
338 /**
339 * Sets the plugin package this portlet belongs to.
340 *
341 * @param pluginPackage the plugin package
342 */
343 public void setPluginPackage(PluginPackage pluginPackage) {
344 _pluginPackage = pluginPackage;
345 }
346
347 /**
348 * Get the default plugin settings of the portlet.
349 *
350 * @return the plugin settings
351 */
352 public PluginSetting getDefaultPluginSetting() {
353 return _defaultPluginSetting;
354 }
355
356 /**
357 * Sets the default plugin settings of the portlet.
358 *
359 * @param pluginSetting the plugin setting
360 */
361 public void setDefaultPluginSetting(PluginSetting pluginSetting) {
362 _defaultPluginSetting = pluginSetting;
363 }
364
365 /**
366 * Gets the icon of the portlet.
367 *
368 * @return the icon of the portlet
369 */
370 public String getIcon() {
371 return _icon;
372 }
373
374 /**
375 * Sets the icon of the portlet.
376 *
377 * @param icon the icon of the portlet
378 */
379 public void setIcon(String icon) {
380 _icon = icon;
381 }
382
383 /**
384 * Gets the virtual path of the portlet.
385 *
386 * @return the virtual path of the portlet
387 */
388 public String getVirtualPath() {
389 return _virtualPath;
390 }
391
392 /**
393 * Sets the virtual path of the portlet.
394 *
395 * @param virtualPath the virtual path of the portlet
396 */
397 public void setVirtualPath(String virtualPath) {
398 if (_portletApp.isWARFile() && Validator.isNull(virtualPath)) {
399 virtualPath = PropsValues.PORTLET_VIRTUAL_PATH;
400 }
401
402 _virtualPath = virtualPath;
403 }
404
405 /**
406 * Gets the struts path of the portlet.
407 *
408 * @return the struts path of the portlet
409 */
410 public String getStrutsPath() {
411 return _strutsPath;
412 }
413
414 /**
415 * Sets the struts path of the portlet.
416 *
417 * @param strutsPath the struts path of the portlet
418 */
419 public void setStrutsPath(String strutsPath) {
420 _strutsPath = strutsPath;
421 }
422
423 /**
424 * Gets the display name of the portlet.
425 *
426 * @return the display name of the portlet
427 */
428 public String getDisplayName() {
429 return _displayName;
430 }
431
432 /**
433 * Sets the display name of the portlet.
434 *
435 * @param displayName the display name of the portlet
436 */
437 public void setDisplayName(String displayName) {
438 _displayName = displayName;
439 }
440
441 /**
442 * Gets the name of the portlet class of the portlet.
443 *
444 * @return the name of the portlet class of the portlet
445 */
446 public String getPortletClass() {
447 return _portletClass;
448 }
449
450 /**
451 * Sets the name of the portlet class of the portlet.
452 *
453 * @param portletClass the name of the portlet class of the portlet
454 */
455 public void setPortletClass(String portletClass) {
456 _portletClass = portletClass;
457 }
458
459 /**
460 * Gets the configuration action class of the portlet.
461 *
462 * @return the configuration action class of the portlet
463 */
464 public String getConfigurationActionClass() {
465 return _configurationActionClass;
466 }
467
468 /**
469 * Sets the configuration action class of the portlet.
470 *
471 * @param configurationActionClass the configuration action class of
472 * the portlet
473 */
474 public void setConfigurationActionClass(String configurationActionClass) {
475 _configurationActionClass = configurationActionClass;
476 }
477
478 /**
479 * Gets the configuration action instance of the portlet.
480 *
481 * @return the configuration action instance of the portlet
482 */
483 public ConfigurationAction getConfigurationActionInstance() {
484 if (Validator.isNotNull(getConfigurationActionClass())) {
485 if (_portletApp.isWARFile()) {
486 PortletBag portletBag = PortletBagPool.get(getRootPortletId());
487
488 return portletBag.getConfigurationActionInstance();
489 }
490 else {
491 return (ConfigurationAction)InstancePool.get(
492 getConfigurationActionClass());
493 }
494 }
495
496 return null;
497 }
498
499 /**
500 * Gets the name of the indexer class of the portlet.
501 *
502 * @return the name of the indexer class of the portlet
503 */
504 public String getIndexerClass() {
505 return _indexerClass;
506 }
507
508 /**
509 * Sets the name of the indexer class of the portlet.
510 *
511 * @param indexerClass the name of the indexer class of the portlet
512 */
513 public void setIndexerClass(String indexerClass) {
514 _indexerClass = indexerClass;
515 }
516
517 /**
518 * Gets the name of the open search class of the portlet.
519 *
520 * @return the name of the open search class of the portlet
521 */
522 public String getOpenSearchClass() {
523 return _openSearchClass;
524 }
525
526 /**
527 * Sets the name of the open search class of the portlet.
528 *
529 * @param openSearchClass the name of the open search class of the
530 * portlet
531 */
532 public void setOpenSearchClass(String openSearchClass) {
533 _openSearchClass = openSearchClass;
534 }
535
536 /**
537 * Gets the name of the scheduler class of the portlet.
538 *
539 * @return the name of the scheduler class of the portlet
540 */
541 public String getSchedulerClass() {
542 return _schedulerClass;
543 }
544
545 /**
546 * Sets the name of the scheduler class of the portlet.
547 *
548 * @param schedulerClass the name of the scheduler class of the
549 * portlet
550 */
551 public void setSchedulerClass(String schedulerClass) {
552 _schedulerClass = schedulerClass;
553 }
554
555 /**
556 * Gets the scheduler instance of the portlet.
557 *
558 * @return the scheduler instance of the portlet
559 */
560 public Scheduler getSchedulerInstance() {
561 if (Validator.isNotNull(getSchedulerClass())) {
562 if (_portletApp.isWARFile()) {
563 PortletBag portletBag = PortletBagPool.get(getRootPortletId());
564
565 return portletBag.getSchedulerInstance();
566 }
567 else {
568 return (Scheduler)InstancePool.get(getSchedulerClass());
569 }
570 }
571
572 return null;
573 }
574
575 /**
576 * Gets the name of the portlet URL class of the portlet.
577 *
578 * @return the name of the portlet URL class of the portlet
579 */
580 public String getPortletURLClass() {
581 return _portletURLClass;
582 }
583
584 /**
585 * Sets the name of the portlet URL class of the portlet.
586 *
587 * @param portletURLClass the name of the portlet URL class of the
588 * portlet
589 */
590 public void setPortletURLClass(String portletURLClass) {
591 _portletURLClass = portletURLClass;
592 }
593
594 /**
595 * Gets the name of the friendly URL mapper class of the portlet.
596 *
597 * @return the name of the friendly URL mapper class of the portlet
598 */
599 public String getFriendlyURLMapperClass() {
600 return _friendlyURLMapperClass;
601 }
602
603 /**
604 * Sets the name of the friendly URL mapper class of the portlet.
605 *
606 * @param friendlyURLMapperClass the name of the friendly URL plugin
607 * class of the portlet
608 */
609 public void setFriendlyURLMapperClass(String friendlyURLMapperClass) {
610 _friendlyURLMapperClass = friendlyURLMapperClass;
611 }
612
613 /**
614 * Gets the friendly URL mapper instance of the portlet.
615 *
616 * @return the friendly URL mapper instance of the portlet
617 */
618 public FriendlyURLMapper getFriendlyURLMapperInstance() {
619 if (Validator.isNotNull(getFriendlyURLMapperClass())) {
620 if (_portletApp.isWARFile()) {
621 PortletBag portletBag = PortletBagPool.get(getRootPortletId());
622
623 return portletBag.getFriendlyURLMapperInstance();
624 }
625 else {
626 return (FriendlyURLMapper)InstancePool.get(
627 getFriendlyURLMapperClass());
628 }
629 }
630
631 return null;
632 }
633
634 /**
635 * Gets the name of the URL encoder class of the portlet.
636 *
637 * @return the name of the URL encoder class of the portlet
638 */
639 public String getURLEncoderClass() {
640 return _urlEncoderClass;
641 }
642
643 /**
644 * Sets the name of the URL encoder class of the portlet.
645 *
646 * @param urlEncoderClass the name of the URL encoder class of the
647 * portlet
648 */
649 public void setURLEncoderClass(String urlEncoderClass) {
650 _urlEncoderClass = urlEncoderClass;
651 }
652
653 /**
654 * Gets the URL encoder instance of the portlet.
655 *
656 * @return the URL encoder instance of the portlet
657 */
658 public URLEncoder getURLEncoderInstance() {
659 if (Validator.isNotNull(getURLEncoderClass())) {
660 if (_portletApp.isWARFile()) {
661 PortletBag portletBag = PortletBagPool.get(getRootPortletId());
662
663 return portletBag.getURLEncoderInstance();
664 }
665 else {
666 return (URLEncoder)InstancePool.get(getURLEncoderClass());
667 }
668 }
669
670 return null;
671 }
672
673 /**
674 * Gets the name of the portlet data handler class of the portlet.
675 *
676 * @return the name of the portlet data handler class of the portlet
677 */
678 public String getPortletDataHandlerClass() {
679 return _portletDataHandlerClass;
680 }
681
682 /**
683 * Sets the name of the portlet data handler class of the portlet.
684 *
685 * @param portletDataHandlerClass the name of portlet data handler
686 * class of the portlet
687 */
688 public void setPortletDataHandlerClass(String portletDataHandlerClass) {
689 _portletDataHandlerClass = portletDataHandlerClass;
690 }
691
692 /**
693 * Gets the portlet data handler instance of the portlet.
694 *
695 * @return the portlet data handler instance of the portlet
696 */
697 public PortletDataHandler getPortletDataHandlerInstance() {
698 if (Validator.isNotNull(getPortletDataHandlerClass())) {
699 if (_portletApp.isWARFile()) {
700 PortletBag portletBag = PortletBagPool.get(getRootPortletId());
701
702 return portletBag.getPortletDataHandlerInstance();
703 }
704 else {
705 return (PortletDataHandler)InstancePool.get(
706 getPortletDataHandlerClass());
707 }
708 }
709
710 return null;
711 }
712
713 /**
714 * Gets the portlet layout listener of the portlet.
715 *
716 * @return the name of the portlet layout listener class of the portlet
717 */
718 public PortletLayoutListener getPortletLayoutListener() {
719 if (Validator.isNull(getPortletLayoutListenerClass())) {
720 return null;
721 }
722
723 return (PortletLayoutListener)InstancePool.get(
724 getPortletLayoutListenerClass());
725 }
726
727 /**
728 * Gets the name of the portlet layout listener class of the portlet.
729 *
730 * @return the name of the portlet layout listener class of the portlet
731 */
732 public String getPortletLayoutListenerClass() {
733 return _portletLayoutListenerClass;
734 }
735
736 /**
737 * Sets the name of the portlet layout listener class of the portlet.
738 *
739 * @param portletLayoutListenerClass the name of the portlet layout
740 * listener class of the portlet
741 */
742 public void setPortletLayoutListenerClass(
743 String portletLayoutListenerClass) {
744
745 _portletLayoutListenerClass = portletLayoutListenerClass;
746 }
747
748 /**
749 * Gets the name of the POP message listener class of the portlet.
750 *
751 * @return the name of the POP message listener class of the portlet
752 */
753 public String getPopMessageListenerClass() {
754 return _popMessageListenerClass;
755 }
756
757 /**
758 * Sets the name of the POP message listener class of the portlet.
759 *
760 * @param popMessageListenerClass the name of the POP message listener
761 * class of the portlet
762 */
763 public void setPopMessageListenerClass(String popMessageListenerClass) {
764 _popMessageListenerClass = popMessageListenerClass;
765 }
766
767 /**
768 * Gets the POP message listener instance of the portlet.
769 *
770 * @return the POP message listener instance of the portlet
771 */
772 public MessageListener getPopMessageListenerInstance() {
773 if (Validator.isNotNull(getPopMessageListenerClass())) {
774 if (_portletApp.isWARFile()) {
775 PortletBag portletBag = PortletBagPool.get(getRootPortletId());
776
777 return portletBag.getPopMessageListenerInstance();
778 }
779 else {
780 return (MessageListener)InstancePool.get(
781 getPopMessageListenerClass());
782 }
783 }
784
785 return null;
786 }
787
788 /**
789 * Gets the name of the social activity interpreter class of the portlet.
790 *
791 * @return the name of the social activity interpreter class of the
792 * portlet
793 */
794 public String getSocialActivityInterpreterClass() {
795 return _socialActivityInterpreterClass;
796 }
797
798 /**
799 * Sets the name of the social activity interpreter class of the portlet.
800 *
801 * @param socialActivityInterpreterClass the name of the activity
802 * interpreter class of the portlet
803 */
804 public void setSocialActivityInterpreterClass(
805 String socialActivityInterpreterClass) {
806
807 _socialActivityInterpreterClass = socialActivityInterpreterClass;
808 }
809
810 /**
811 * Gets the name of the activity interpreter instance of the portlet.
812 *
813 * @return the name of the activity interpreter instance of the portlet
814 */
815 public SocialActivityInterpreter getSocialActivityInterpreterInstance() {
816 if (Validator.isNotNull(getSocialActivityInterpreterClass())) {
817 if (_portletApp.isWARFile()) {
818 PortletBag portletBag = PortletBagPool.get(getRootPortletId());
819
820 return portletBag.getSocialActivityInterpreterInstance();
821 }
822 else {
823 return (SocialActivityInterpreter)InstancePool.get(
824 getSocialActivityInterpreterClass());
825 }
826 }
827
828 return null;
829 }
830
831 /**
832 * Gets the default preferences of the portlet.
833 *
834 * @return the default preferences of the portlet
835 */
836 public String getDefaultPreferences() {
837 if (Validator.isNull(_defaultPreferences)) {
838 return DEFAULT_PREFERENCES;
839 }
840 else {
841 return _defaultPreferences;
842 }
843 }
844
845 /**
846 * Sets the default preferences of the portlet.
847 *
848 * @param defaultPreferences the default preferences of the portlet
849 */
850 public void setDefaultPreferences(String defaultPreferences) {
851 _defaultPreferences = defaultPreferences;
852 }
853
854 /**
855 * Gets the name of the preferences validator class of the portlet.
856 *
857 * @return the name of the preferences validator class of the portlet
858 */
859 public String getPreferencesValidator() {
860 return _prefsValidator;
861 }
862
863 /**
864 * Sets the name of the preferences validator class of the portlet.
865 *
866 * @param prefsValidator the name of the preferences validator class
867 * of the portlet
868 */
869 public void setPreferencesValidator(String prefsValidator) {
870 if (prefsValidator != null) {
871
872 // Trim this because XDoclet generates preferences validators with
873 // extra white spaces
874
875 _prefsValidator = prefsValidator.trim();
876 }
877 else {
878 _prefsValidator = null;
879 }
880 }
881
882 /**
883 * Returns true if preferences are shared across the entire company.
884 *
885 * @return true if preferences are shared across the entire company
886 */
887 public boolean getPreferencesCompanyWide() {
888 return _prefsCompanyWide;
889 }
890
891 /**
892 * Returns true if preferences are shared across the entire company.
893 *
894 * @return true if preferences are shared across the entire company
895 */
896 public boolean isPreferencesCompanyWide() {
897 return _prefsCompanyWide;
898 }
899
900 /**
901 * Sets to true if preferences are shared across the entire company.
902 *
903 * @param prefsCompanyWide boolean value for whether preferences
904 * are shared across the entire company
905 */
906 public void setPreferencesCompanyWide(boolean prefsCompanyWide) {
907 _prefsCompanyWide = prefsCompanyWide;
908 }
909
910 /**
911 * Returns true if preferences are unique per layout.
912 *
913 * @return true if preferences are unique per layout
914 */
915 public boolean getPreferencesUniquePerLayout() {
916 return _prefsUniquePerLayout;
917 }
918
919 /**
920 * Returns true if preferences are unique per layout.
921 *
922 * @return true if preferences are unique per layout
923 */
924 public boolean isPreferencesUniquePerLayout() {
925 return _prefsUniquePerLayout;
926 }
927
928 /**
929 * Sets to true if preferences are unique per layout.
930 *
931 * @param prefsUniquePerLayout boolean value for whether preferences
932 * are unique per layout
933 */
934 public void setPreferencesUniquePerLayout(boolean prefsUniquePerLayout) {
935 _prefsUniquePerLayout = prefsUniquePerLayout;
936 }
937
938 /**
939 * Returns true if preferences are owned by the group when the portlet is
940 * shown in a group layout. Returns false if preferences are owned by the
941 * user at all times.
942 *
943 * @return true if preferences are owned by the group when the portlet
944 * is shown in a group layout; false if preferences are owned
945 * by the user at all times.
946 */
947 public boolean getPreferencesOwnedByGroup() {
948 return _prefsOwnedByGroup;
949 }
950
951 /**
952 * Returns true if preferences are owned by the group when the portlet is
953 * shown in a group layout. Returns false if preferences are owned by the
954 * user at all times.
955 *
956 * @return true if preferences are owned by the group when the portlet
957 * is shown in a group layout; false if preferences are owned
958 * by the user at all times.
959 */
960 public boolean isPreferencesOwnedByGroup() {
961 return _prefsOwnedByGroup;
962 }
963
964 /**
965 * Sets to true if preferences are owned by the group when the portlet is
966 * shown in a group layout. Sets to false if preferences are owned by the
967 * user at all times.
968 *
969 * @param prefsOwnedByGroup boolean value for whether preferences are
970 * owned by the group when the portlet is shown in a group
971 * layout or preferences are owned by the user at all times
972 */
973 public void setPreferencesOwnedByGroup(boolean prefsOwnedByGroup) {
974 _prefsOwnedByGroup = prefsOwnedByGroup;
975 }
976
977 /**
978 * Returns true if the portlet uses the default template.
979 *
980 * @return true if the portlet uses the default template
981 */
982 public boolean getUseDefaultTemplate() {
983 return _useDefaultTemplate;
984 }
985
986 /**
987 * Returns true if the portlet uses the default template.
988 *
989 * @return true if the portlet uses the default template
990 */
991 public boolean isUseDefaultTemplate() {
992 return _useDefaultTemplate;
993 }
994
995 /**
996 * Sets to true if the portlet uses the default template.
997 *
998 * @param useDefaultTemplate boolean value for whether the portlet
999 * uses the default template
1000 */
1001 public void setUseDefaultTemplate(boolean useDefaultTemplate) {
1002 _useDefaultTemplate = useDefaultTemplate;
1003 }
1004
1005 /**
1006 * Returns true if users are shown that they do not have access to the
1007 * portlet.
1008 *
1009 * @return true if users are shown that they do not have access to the
1010 * portlet
1011 */
1012 public boolean getShowPortletAccessDenied() {
1013 return _showPortletAccessDenied;
1014 }
1015
1016 /**
1017 * Returns true if users are shown that they do not have access to the
1018 * portlet.
1019 *
1020 * @return true if users are shown that they do not have access to the
1021 * portlet
1022 */
1023 public boolean isShowPortletAccessDenied() {
1024 return _showPortletAccessDenied;
1025 }
1026
1027 /**
1028 * Sets to true if users are shown that they do not have access to the
1029 * portlet.
1030 *
1031 * @param showPortletAccessDenied boolean value for whether users are
1032 * shown that they do not have access to the portlet
1033 */
1034 public void setShowPortletAccessDenied(boolean showPortletAccessDenied) {
1035 _showPortletAccessDenied = showPortletAccessDenied;
1036 }
1037
1038 /**
1039 * Returns true if users are shown that the portlet is inactive.
1040 *
1041 * @return true if users are shown that the portlet is inactive
1042 */
1043 public boolean getShowPortletInactive() {
1044 return _showPortletInactive;
1045 }
1046
1047 /**
1048 * Returns true if users are shown that the portlet is inactive.
1049 *
1050 * @return true if users are shown that the portlet is inactive
1051 */
1052 public boolean isShowPortletInactive() {
1053 return _showPortletInactive;
1054 }
1055
1056 /**
1057 * Sets to true if users are shown that the portlet is inactive.
1058 *
1059 * @param showPortletInactive boolean value for whether users are
1060 * shown that the portlet is inactive
1061 */
1062 public void setShowPortletInactive(boolean showPortletInactive) {
1063 _showPortletInactive = showPortletInactive;
1064 }
1065
1066 /**
1067 * Returns true if an action URL for this portlet should cause an auto
1068 * redirect.
1069 *
1070 * @return true if an action URL for this portlet should cause an auto
1071 * redirect
1072 */
1073 public boolean getActionURLRedirect() {
1074 return _actionURLRedirect;
1075 }
1076
1077 /**
1078 * Returns true if an action URL for this portlet should cause an auto
1079 * redirect.
1080 *
1081 * @return true if an action URL for this portlet should cause an auto
1082 * redirect
1083 */
1084 public boolean isActionURLRedirect() {
1085 return _actionURLRedirect;
1086 }
1087
1088 /**
1089 * Sets to true if an action URL for this portlet should cause an auto
1090 * redirect.
1091 *
1092 * @param actionURLRedirect boolean value for whether an action URL
1093 * for this portlet should cause an auto redirect
1094 */
1095 public void setActionURLRedirect(boolean actionURLRedirect) {
1096 _actionURLRedirect = actionURLRedirect;
1097 }
1098
1099 /**
1100 * Returns true if the portlet restores to the current view from the
1101 * maximized state.
1102 *
1103 * @return true if the portlet restores to the current view from the
1104 * maximized state
1105 */
1106 public boolean getRestoreCurrentView() {
1107 return _restoreCurrentView;
1108 }
1109
1110 /**
1111 * Returns true if the portlet restores to the current view from the
1112 * maximized state.
1113 *
1114 * @return true if the portlet restores to the current view from the
1115 * maximized state
1116 */
1117 public boolean isRestoreCurrentView() {
1118 return _restoreCurrentView;
1119 }
1120
1121 /**
1122 * Sets to true if the portlet restores to the current view from the
1123 * maximized state.
1124 *
1125 * @param restoreCurrentView boolean value for whether the portlet
1126 * restores to the current view from the maximized state
1127 */
1128 public void setRestoreCurrentView(boolean restoreCurrentView) {
1129 _restoreCurrentView = restoreCurrentView;
1130 }
1131
1132 /**
1133 * Returns true if the portlet goes into the maximized state when the user
1134 * goes into the edit mode.
1135 *
1136 * @return true if the portlet goes into the maximized state when the
1137 * user goes into the edit mode
1138 */
1139 public boolean getMaximizeEdit() {
1140 return _maximizeEdit;
1141 }
1142
1143 /**
1144 * Returns true if the portlet goes into the maximized state when the user
1145 * goes into the edit mode.
1146 *
1147 * @return true if the portlet goes into the maximized state when the
1148 * user goes into the edit mode
1149 */
1150 public boolean isMaximizeEdit() {
1151 return _maximizeEdit;
1152 }
1153
1154 /**
1155 * Sets to true if the portlet goes into the maximized state when the user
1156 * goes into the edit mode.
1157 *
1158 * @param maximizeEdit boolean value for whether the portlet goes into
1159 * the maximized state when the user goes into the edit mode
1160 */
1161 public void setMaximizeEdit(boolean maximizeEdit) {
1162 _maximizeEdit = maximizeEdit;
1163 }
1164
1165 /**
1166 * Returns true if the portlet goes into the maximized state when the user
1167 * goes into the help mode.
1168 *
1169 * @return true if the portlet goes into the maximized state when the
1170 * user goes into the help mode
1171 */
1172 public boolean getMaximizeHelp() {
1173 return _maximizeHelp;
1174 }
1175
1176 /**
1177 * Returns true if the portlet goes into the maximized state when the user
1178 * goes into the help mode.
1179 *
1180 * @return true if the portlet goes into the maximized state when the
1181 * user goes into the help mode
1182 */
1183 public boolean isMaximizeHelp() {
1184 return _maximizeHelp;
1185 }
1186
1187 /**
1188 * Sets to true if the portlet goes into the maximized state when the user
1189 * goes into the help mode.
1190 *
1191 * @param maximizeHelp boolean value for whether the portlet goes into
1192 * the maximized state when the user goes into the help mode
1193 */
1194 public void setMaximizeHelp(boolean maximizeHelp) {
1195 _maximizeHelp = maximizeHelp;
1196 }
1197
1198 /**
1199 * Returns true if the portlet goes into the pop up state when the user goes
1200 * into the print mode.
1201 *
1202 * @return true if the portlet goes into the pop up state when the user
1203 * goes into the print mode
1204 */
1205 public boolean getPopUpPrint() {
1206 return _popUpPrint;
1207 }
1208
1209 /**
1210 * Returns true if the portlet goes into the pop up state when the user goes
1211 * into the print mode.
1212 *
1213 * @return true if the portlet goes into the pop up state when the user
1214 * goes into the print mode
1215 */
1216 public boolean isPopUpPrint() {
1217 return _popUpPrint;
1218 }
1219
1220 /**
1221 * Sets to true if the portlet goes into the pop up state when the user goes
1222 * into the print mode.
1223 *
1224 * @param popUpPrint boolean value for whether the portlet goes into
1225 * the pop up state when the user goes into the print mode
1226 */
1227 public void setPopUpPrint(boolean popUpPrint) {
1228 _popUpPrint = popUpPrint;
1229 }
1230
1231 /**
1232 * Returns true to allow the portlet to be cached within the layout.
1233 *
1234 * @return true if the portlet can be cached within the layout
1235 */
1236 public boolean getLayoutCacheable() {
1237 return _layoutCacheable;
1238 }
1239
1240 /**
1241 * Returns true to allow the portlet to be cached within the layout.
1242 *
1243 * @return true if the portlet can be cached within the layout
1244 */
1245 public boolean isLayoutCacheable() {
1246 return _layoutCacheable;
1247 }
1248
1249 /**
1250 * Sets to true to allow the portlet to be cached within the layout.
1251 *
1252 * @param layoutCacheable boolean value for whether the portlet can be
1253 * cached within the layout
1254 */
1255 public void setLayoutCacheable(boolean layoutCacheable) {
1256 _layoutCacheable = layoutCacheable;
1257 }
1258
1259 /**
1260 * Returns true if the portlet can be added multiple times to a layout.
1261 *
1262 * @return true if the portlet can be added multiple times to a layout
1263 */
1264 public boolean getInstanceable() {
1265 return _instanceable;
1266 }
1267
1268 /**
1269 * Returns true if the portlet can be added multiple times to a layout.
1270 *
1271 * @return true if the portlet can be added multiple times to a layout
1272 */
1273 public boolean isInstanceable() {
1274 return _instanceable;
1275 }
1276
1277 /**
1278 * Sets to true if the portlet can be added multiple times to a layout.
1279 *
1280 * @param instanceable boolean value for whether the portlet can be
1281 * added multiple times to a layout
1282 */
1283 public void setInstanceable(boolean instanceable) {
1284 _instanceable = instanceable;
1285 }
1286
1287 /**
1288 * Gets the user principal strategy of the portlet.
1289 *
1290 * @return the user principal strategy of the portlet
1291 */
1292 public String getUserPrincipalStrategy() {
1293 return _userPrincipalStrategy;
1294 }
1295
1296 /**
1297 * Sets the user principal strategy of the portlet.
1298 *
1299 * @param userPrincipalStrategy the user principal strategy of the
1300 * portlet
1301 */
1302 public void setUserPrincipalStrategy(String userPrincipalStrategy) {
1303 if (Validator.isNotNull(userPrincipalStrategy)) {
1304 _userPrincipalStrategy = userPrincipalStrategy;
1305 }
1306 }
1307
1308 /**
1309 * Returns true if the portlet does not share request attributes with the
1310 * portal or portlets from another WAR.
1311 *
1312 * @return true if the portlet does not share request attributes with
1313 * the portal or portlets from another WAR
1314 */
1315 public boolean getPrivateRequestAttributes() {
1316 return _privateRequestAttributes;
1317 }
1318
1319 /**
1320 * Returns true if the portlet does not share request attributes with the
1321 * portal or portlets from another WAR.
1322 *
1323 * @return true if the portlet does not share request attributes with
1324 * the portal or portlets from another WAR
1325 */
1326 public boolean isPrivateRequestAttributes() {
1327 return _privateRequestAttributes;
1328 }
1329
1330 /**
1331 * Sets to true if the portlet does not share request attributes with the
1332 * portal or portlets from another WAR.
1333 *
1334 * @param privateRequestAttributes boolean value for whether the
1335 * portlet shares request attributes with the portal or
1336 * portlets from another WAR
1337 */
1338 public void setPrivateRequestAttributes(boolean privateRequestAttributes) {
1339 _privateRequestAttributes = privateRequestAttributes;
1340 }
1341
1342 /**
1343 * Returns true if the portlet does not share session attributes with the
1344 * portal.
1345 *
1346 * @return true if the portlet does not share session attributes with
1347 * the portal
1348 */
1349 public boolean getPrivateSessionAttributes() {
1350 return _privateSessionAttributes;
1351 }
1352
1353 /**
1354 * Returns true if the portlet does not share session attributes with the
1355 * portal.
1356 *
1357 * @return true if the portlet does not share session attributes with
1358 * the portal
1359 */
1360 public boolean isPrivateSessionAttributes() {
1361 return _privateSessionAttributes;
1362 }
1363
1364 /**
1365 * Sets to true if the portlet does not share session attributes with the
1366 * portal.
1367 *
1368 * @param privateSessionAttributes boolean value for whether the
1369 * portlet shares session attributes with the portal
1370 */
1371 public void setPrivateSessionAttributes(boolean privateSessionAttributes) {
1372 _privateSessionAttributes = privateSessionAttributes;
1373 }
1374
1375 /**
1376 * Returns the render weight of the portlet.
1377 *
1378 * @return the render weight of the portlet
1379 */
1380 public int getRenderWeight() {
1381 return _renderWeight;
1382 }
1383
1384 /**
1385 * Sets the render weight of the portlet.
1386 *
1387 * @param renderWeight int value for the render weight of the portlet
1388 */
1389 public void setRenderWeight(int renderWeight) {
1390 _renderWeight = renderWeight;
1391 }
1392
1393 /**
1394 * Returns true if the portlet can be displayed via Ajax.
1395 *
1396 * @return true if the portlet can be displayed via Ajax
1397 */
1398 public boolean getAjaxable() {
1399 return _ajaxable;
1400 }
1401
1402 /**
1403 * Returns true if the portlet can be displayed via Ajax.
1404 *
1405 * @return true if the portlet can be displayed via Ajax
1406 */
1407 public boolean isAjaxable() {
1408 return _ajaxable;
1409 }
1410
1411 /**
1412 * Sets to true if the portlet can be displayed via Ajax.
1413 *
1414 * @param ajaxable boolean value for whether the portlet can be
1415 * displayed via Ajax
1416 */
1417 public void setAjaxable(boolean ajaxable) {
1418 _ajaxable = ajaxable;
1419 }
1420
1421 /**
1422 * Gets a list of CSS files that will be referenced from the page's header
1423 * relative to the portal's context path.
1424 *
1425 * @return a list of CSS files that will be referenced from the page's
1426 * header relative to the portal's context path
1427 */
1428 public List<String> getHeaderPortalCss() {
1429 return _headerPortalCss;
1430 }
1431
1432 /**
1433 * Sets a list of CSS files that will be referenced from the page's header
1434 * relative to the portal's context path.
1435 *
1436 * @param headerPortalCss a list of CSS files that will be referenced
1437 * from the page's header relative to the portal's context path
1438 */
1439 public void setHeaderPortalCss(List<String> headerPortalCss) {
1440 _headerPortalCss = headerPortalCss;
1441 }
1442
1443 /**
1444 * Gets a list of CSS files that will be referenced from the page's header
1445 * relative to the portlet's context path.
1446 *
1447 * @return a list of CSS files that will be referenced from the page's
1448 * header relative to the portlet's context path
1449 */
1450 public List<String> getHeaderPortletCss() {
1451 return _headerPortletCss;
1452 }
1453
1454 /**
1455 * Sets a list of CSS files that will be referenced from the page's header
1456 * relative to the portlet's context path.
1457 *
1458 * @param headerPortletCss a list of CSS files that will be referenced
1459 * from the page's header relative to the portlet's context
1460 * path
1461 */
1462 public void setHeaderPortletCss(List<String> headerPortletCss) {
1463 _headerPortletCss = headerPortletCss;
1464 }
1465
1466 /**
1467 * Gets a list of JavaScript files that will be referenced from the page's
1468 * header relative to the portal's context path.
1469 *
1470 * @return a list of JavaScript files that will be referenced from the
1471 * page's header relative to the portal's context path
1472 */
1473 public List<String> getHeaderPortalJavaScript() {
1474 return _headerPortalJavaScript;
1475 }
1476
1477 /**
1478 * Sets a list of JavaScript files that will be referenced from the page's
1479 * header relative to the portal's context path.
1480 *
1481 * @param headerPortalJavaScript a list of JavaScript files that will
1482 * be referenced from the page's header relative to the
1483 * portal's context path
1484 */
1485 public void setHeaderPortalJavaScript(List<String> headerPortalJavaScript) {
1486 _headerPortalJavaScript = headerPortalJavaScript;
1487 }
1488
1489 /**
1490 * Gets a list of JavaScript files that will be referenced from the page's
1491 * header relative to the portlet's context path.
1492 *
1493 * @return a list of JavaScript files that will be referenced from the
1494 * page's header relative to the portlet's context path
1495 */
1496 public List<String> getHeaderPortletJavaScript() {
1497 return _headerPortletJavaScript;
1498 }
1499
1500 /**
1501 * Sets a list of JavaScript files that will be referenced from the page's
1502 * header relative to the portlet's context path.
1503 *
1504 * @param headerPortletJavaScript a list of JavaScript files that will
1505 * be referenced from the page's header relative to the
1506 * portlet's context path
1507 */
1508 public void setHeaderPortletJavaScript(
1509 List<String> headerPortletJavaScript) {
1510
1511 _headerPortletJavaScript = headerPortletJavaScript;
1512 }
1513
1514 /**
1515 * Gets a list of CSS files that will be referenced from the page's footer
1516 * relative to the portal's context path.
1517 *
1518 * @return a list of CSS files that will be referenced from the page's
1519 * footer relative to the portal's context path
1520 */
1521 public List<String> getFooterPortalCss() {
1522 return _footerPortalCss;
1523 }
1524
1525 /**
1526 * Sets a list of CSS files that will be referenced from the page's footer
1527 * relative to the portal's context path.
1528 *
1529 * @param footerPortalCss a list of CSS files that will be referenced
1530 * from the page's footer relative to the portal's context path
1531 */
1532 public void setFooterPortalCss(List<String> footerPortalCss) {
1533 _footerPortalCss = footerPortalCss;
1534 }
1535
1536 /**
1537 * Gets a list of CSS files that will be referenced from the page's footer
1538 * relative to the portlet's context path.
1539 *
1540 * @return a list of CSS files that will be referenced from the page's
1541 * footer relative to the portlet's context path
1542 */
1543 public List<String> getFooterPortletCss() {
1544 return _footerPortletCss;
1545 }
1546
1547 /**
1548 * Sets a list of CSS files that will be referenced from the page's footer
1549 * relative to the portlet's context path.
1550 *
1551 * @param footerPortletCss a list of CSS files that will be referenced
1552 * from the page's footer relative to the portlet's context
1553 * path
1554 */
1555 public void setFooterPortletCss(List<String> footerPortletCss) {
1556 _footerPortletCss = footerPortletCss;
1557 }
1558
1559 /**
1560 * Gets a list of JavaScript files that will be referenced from the page's
1561 * footer relative to the portal's context path.
1562 *
1563 * @return a list of JavaScript files that will be referenced from the
1564 * page's footer relative to the portal's context path
1565 */
1566 public List<String> getFooterPortalJavaScript() {
1567 return _footerPortalJavaScript;
1568 }
1569
1570 /**
1571 * Sets a list of JavaScript files that will be referenced from the page's
1572 * footer relative to the portal's context path.
1573 *
1574 * @param footerPortalJavaScript a list of JavaScript files that will
1575 * be referenced from the page's footer relative to the
1576 * portal's context path
1577 */
1578 public void setFooterPortalJavaScript(List<String> footerPortalJavaScript) {
1579 _footerPortalJavaScript = footerPortalJavaScript;
1580 }
1581
1582 /**
1583 * Gets a list of JavaScript files that will be referenced from the page's
1584 * footer relative to the portlet's context path.
1585 *
1586 * @return a list of JavaScript files that will be referenced from the
1587 * page's footer relative to the portlet's context path
1588 */
1589 public List<String> getFooterPortletJavaScript() {
1590 return _footerPortletJavaScript;
1591 }
1592
1593 /**
1594 * Sets a list of JavaScript files that will be referenced from the page's
1595 * footer relative to the portlet's context path.
1596 *
1597 * @param footerPortletJavaScript a list of JavaScript files that will
1598 * be referenced from the page's footer relative to the
1599 * portlet's context path
1600 */
1601 public void setFooterPortletJavaScript(
1602 List<String> footerPortletJavaScript) {
1603
1604 _footerPortletJavaScript = footerPortletJavaScript;
1605 }
1606
1607 /**
1608 * Gets the name of the CSS class that will be injected in the DIV that
1609 * wraps this portlet.
1610 *
1611 * @return the name of the CSS class that will be injected in the DIV
1612 * that wraps this portlet
1613 */
1614 public String getCssClassWrapper() {
1615 return _cssClassWrapper;
1616 }
1617
1618 /**
1619 * Sets the name of the CSS class that will be injected in the DIV that
1620 * wraps this portlet.
1621 *
1622 * @param cssClassWrapper the name of the CSS class that will be
1623 * injected in the DIV that wraps this portlet
1624 */
1625 public void setCssClassWrapper(String cssClassWrapper) {
1626 _cssClassWrapper = cssClassWrapper;
1627 }
1628
1629 /**
1630 * Returns true if default resources for the portlet are added to a page.
1631 *
1632 * @return true if default resources for the portlet are added to a
1633 * page
1634 */
1635 public boolean getAddDefaultResource() {
1636 return _addDefaultResource;
1637 }
1638
1639 /**
1640 * Returns true if default resources for the portlet are added to a page.
1641 *
1642 * @return true if default resources for the portlet are added to a
1643 * page
1644 */
1645 public boolean isAddDefaultResource() {
1646 return _addDefaultResource;
1647 }
1648
1649 /**
1650 * Sets to true if default resources for the portlet are added to a page.
1651 *
1652 * @param addDefaultResource boolean value for whether or not default
1653 * resources for the portlet are added to a page
1654 */
1655 public void setAddDefaultResource(boolean addDefaultResource) {
1656 _addDefaultResource = addDefaultResource;
1657 }
1658
1659 /**
1660 * Sets a string of ordered comma delimited portlet ids.
1661 *
1662 * @param roles a string of ordered comma delimited portlet ids
1663 */
1664 public void setRoles(String roles) {
1665 _rolesArray = StringUtil.split(roles);
1666
1667 super.setRoles(roles);
1668 }
1669
1670 /**
1671 * Gets an array of required roles of the portlet.
1672 *
1673 * @return an array of required roles of the portlet
1674 */
1675 public String[] getRolesArray() {
1676 return _rolesArray;
1677 }
1678
1679 /**
1680 * Sets an array of required roles of the portlet.
1681 *
1682 * @param rolesArray an array of required roles of the portlet
1683 */
1684 public void setRolesArray(String[] rolesArray) {
1685 _rolesArray = rolesArray;
1686
1687 super.setRoles(StringUtil.merge(rolesArray));
1688 }
1689
1690 /**
1691 * Gets the unlinked roles of the portlet.
1692 *
1693 * @return unlinked roles of the portlet
1694 */
1695 public Set<String> getUnlinkedRoles() {
1696 return _unlinkedRoles;
1697 }
1698
1699 /**
1700 * Sets the unlinked roles of the portlet.
1701 *
1702 * @param unlinkedRoles the unlinked roles of the portlet
1703 */
1704 public void setUnlinkedRoles(Set<String> unlinkedRoles) {
1705 _unlinkedRoles = unlinkedRoles;
1706 }
1707
1708 /**
1709 * Gets the role mappers of the portlet.
1710 *
1711 * @return role mappers of the portlet
1712 */
1713 public Map<String, String> getRoleMappers() {
1714 return _roleMappers;
1715 }
1716
1717 /**
1718 * Sets the role mappers of the portlet.
1719 *
1720 * @param roleMappers the role mappers of the portlet
1721 */
1722 public void setRoleMappers(Map<String, String> roleMappers) {
1723 _roleMappers = roleMappers;
1724 }
1725
1726 /**
1727 * Link the role names set in portlet.xml with the Liferay roles set in
1728 * liferay-portlet.xml.
1729 */
1730 public void linkRoles() {
1731 List<String> linkedRoles = new ArrayList<String>();
1732
1733 Iterator<String> itr = _unlinkedRoles.iterator();
1734
1735 while (itr.hasNext()) {
1736 String unlinkedRole = itr.next();
1737
1738 String roleLink = _roleMappers.get(unlinkedRole);
1739
1740 if (Validator.isNotNull(roleLink)) {
1741 if (_log.isDebugEnabled()) {
1742 _log.debug(
1743 "Linking role for portlet [" + getPortletId() +
1744 "] with role-name [" + unlinkedRole +
1745 "] to role-link [" + roleLink + "]");
1746 }
1747
1748 linkedRoles.add(roleLink);
1749 }
1750 else {
1751 _log.error(
1752 "Unable to link role for portlet [" + getPortletId() +
1753 "] with role-name [" + unlinkedRole +
1754 "] because role-link is null");
1755 }
1756 }
1757
1758 Collections.sort(linkedRoles);
1759
1760 setRolesArray(linkedRoles.toArray(new String[linkedRoles.size()]));
1761 }
1762
1763 /**
1764 * Returns true if the portlet has a role with the specified name.
1765 *
1766 * @return true if the portlet has a role with the specified name
1767 */
1768 public boolean hasRoleWithName(String roleName) {
1769 for (int i = 0; i < _rolesArray.length; i++) {
1770 if (_rolesArray[i].equalsIgnoreCase(roleName)) {
1771 return true;
1772 }
1773 }
1774
1775 return false;
1776 }
1777
1778 /**
1779 * Returns true if the user has the permission to add the portlet to a
1780 * layout.
1781 *
1782 * @return true if the user has the permission to add the portlet to a
1783 * layout
1784 */
1785 public boolean hasAddPortletPermission(long userId) {
1786 try {
1787 if (_rolesArray.length == 0) {
1788 return true;
1789 }
1790 else if (RoleLocalServiceUtil.hasUserRoles(
1791 userId, getCompanyId(), _rolesArray, true)) {
1792
1793 return true;
1794 }
1795 else if (RoleLocalServiceUtil.hasUserRole(
1796 userId, getCompanyId(), RoleImpl.ADMINISTRATOR, true)) {
1797
1798 return true;
1799 }
1800 else {
1801 User user = UserLocalServiceUtil.getUserById(userId);
1802
1803 if (user.isDefaultUser() && hasRoleWithName(RoleImpl.GUEST)) {
1804 return true;
1805 }
1806 }
1807 }
1808 catch (Exception e) {
1809 _log.error(e);
1810 }
1811
1812 return false;
1813 }
1814
1815 /**
1816 * Returns true if the portlet is a system portlet that a user cannot
1817 * manually add to their page.
1818 *
1819 * @return true if the portlet is a system portlet that a user cannot
1820 * manually add to their page
1821 */
1822 public boolean getSystem() {
1823 return _system;
1824 }
1825
1826 /**
1827 * Returns true if the portlet is a system portlet that a user cannot
1828 * manually add to their page.
1829 *
1830 * @return true if the portlet is a system portlet that a user cannot
1831 * manually add to their page
1832 */
1833 public boolean isSystem() {
1834 return _system;
1835 }
1836
1837 /**
1838 * Sets to true if the portlet is a system portlet that a user cannot
1839 * manually add to their page.
1840 *
1841 * @param system boolean value for whether the portlet is a system
1842 * portlet that a user cannot manually add to their page
1843 */
1844 public void setSystem(boolean system) {
1845 _system = system;
1846 }
1847
1848 /**
1849 * Returns true to include the portlet and make it available to be made
1850 * active.
1851 *
1852 * @return true to include the portlet and make it available to be made
1853 * active
1854 */
1855 public boolean getInclude() {
1856 return _include;
1857 }
1858
1859 /**
1860 * Returns true to include the portlet and make it available to be made
1861 * active.
1862 *
1863 * @return true to include the portlet and make it available to be made
1864 * active
1865 */
1866 public boolean isInclude() {
1867 return _include;
1868 }
1869
1870 /**
1871 * Sets to true to include the portlet and make it available to be made
1872 * active.
1873 *
1874 * @param include boolean value for whether to include the portlet and
1875 * make it available to be made active
1876 */
1877 public void setInclude(boolean include) {
1878 _include = include;
1879 }
1880
1881 /**
1882 * Gets the init parameters of the portlet.
1883 *
1884 * @return init parameters of the portlet
1885 */
1886 public Map<String, String> getInitParams() {
1887 return _initParams;
1888 }
1889
1890 /**
1891 * Sets the init parameters of the portlet.
1892 *
1893 * @param initParams the init parameters of the portlet
1894 */
1895 public void setInitParams(Map<String, String> initParams) {
1896 _initParams = initParams;
1897 }
1898
1899 /**
1900 * Gets expiration cache of the portlet.
1901 *
1902 * @return expiration cache of the portlet
1903 */
1904 public Integer getExpCache() {
1905 return _expCache;
1906 }
1907
1908 /**
1909 * Sets expiration cache of the portlet.
1910 *
1911 * @param expCache expiration cache of the portlet
1912 */
1913 public void setExpCache(Integer expCache) {
1914 _expCache = expCache;
1915 }
1916
1917 /**
1918 * Gets the portlet modes of the portlet.
1919 *
1920 * @return portlet modes of the portlet
1921 */
1922 public Map<String, Set<String>> getPortletModes() {
1923 return _portletModes;
1924 }
1925
1926 /**
1927 * Sets the portlet modes of the portlet.
1928 *
1929 * @param portletModes the portlet modes of the portlet
1930 */
1931 public void setPortletModes(Map<String, Set<String>> portletModes) {
1932 _portletModes = portletModes;
1933 }
1934
1935 /**
1936 * Returns true if the portlet supports the specified mime type and
1937 * portlet mode.
1938 *
1939 * @return true if the portlet supports the specified mime type and
1940 * portlet mode
1941 */
1942 public boolean hasPortletMode(String mimeType, PortletMode portletMode) {
1943 if (mimeType == null) {
1944 mimeType = ContentTypes.TEXT_HTML;
1945 }
1946
1947 Set<String> mimeTypeModes = _portletModes.get(mimeType);
1948
1949 if (mimeTypeModes == null) {
1950 return false;
1951 }
1952
1953 if (mimeTypeModes.contains(portletMode.toString())) {
1954 return true;
1955 }
1956 else {
1957 return false;
1958 }
1959 }
1960
1961 /**
1962 * Gets a list of all portlet modes supported by the portlet.
1963 *
1964 * @return a list of all portlet modes supported by the portlet
1965 */
1966 public Set<String> getAllPortletModes() {
1967 Set<String> allPortletModes = new TreeSet<String>();
1968
1969 Iterator<Map.Entry <String, Set<String>>> itr1 =
1970 _portletModes.entrySet().iterator();
1971
1972 while (itr1.hasNext()) {
1973 Map.Entry<String, Set<String>> entry = itr1.next();
1974
1975 Set<String> mimeTypeModes = entry.getValue();
1976
1977 Iterator<String> itr2 = mimeTypeModes.iterator();
1978
1979 while (itr2.hasNext()) {
1980 String portletMode = itr2.next();
1981
1982 allPortletModes.add(portletMode);
1983 }
1984 }
1985
1986 return allPortletModes;
1987 }
1988
1989 /**
1990 * Returns true if the portlet supports more than one mime type.
1991 *
1992 * @return true if the portlet supports more than one mime type
1993 */
1994 public boolean hasMultipleMimeTypes() {
1995 if (_portletModes.size() > 1) {
1996 return true;
1997 }
1998 else {
1999 return false;
2000 }
2001 }
2002
2003 /**
2004 * Gets the supported locales of the portlet.
2005 *
2006 * @return supported locales of the portlet
2007 */
2008 public Set<String> getSupportedLocales() {
2009 return _supportedLocales;
2010 }
2011
2012 /**
2013 * Sets the supported locales of the portlet.
2014 *
2015 * @param supportedLocales the supported locales of the portlet
2016 */
2017 public void setSupportedLocales(Set<String> supportedLocales) {
2018 _supportedLocales = supportedLocales;
2019 }
2020
2021 /**
2022 * Gets the resource bundle of the portlet.
2023 *
2024 * @return resource bundle of the portlet
2025 */
2026 public String getResourceBundle() {
2027 return _resourceBundle;
2028 }
2029
2030 /**
2031 * Sets the resource bundle of the portlet.
2032 *
2033 * @param resourceBundle the resource bundle of the portlet
2034 */
2035 public void setResourceBundle(String resourceBundle) {
2036 _resourceBundle = resourceBundle;
2037 }
2038
2039 /**
2040 * Gets the portlet info of the portlet.
2041 *
2042 * @return portlet info of the portlet
2043 */
2044 public PortletInfo getPortletInfo() {
2045 return _portletInfo;
2046 }
2047
2048 /**
2049 * Sets the portlet info of the portlet.
2050 *
2051 * @param portletInfo the portlet info of the portlet
2052 */
2053 public void setPortletInfo(PortletInfo portletInfo) {
2054 _portletInfo = portletInfo;
2055 }
2056
2057 /**
2058 * Gets the filters of the portlet.
2059 *
2060 * @return filters of the portlet
2061 */
2062 public Map<String, PortletFilter> getPortletFilters() {
2063 return _portletFilters;
2064 }
2065
2066 /**
2067 * Sets the filters of the portlet.
2068 *
2069 * @param portletFilters the filters of the portlet
2070 */
2071 public void setPortletFilters(Map<String, PortletFilter> portletFilters) {
2072 _portletFilters = portletFilters;
2073 }
2074
2075 /**
2076 * Adds a supported processing event.
2077 *
2078 * @param publicRenderParameter a supported processing event
2079 */
2080 public void addProcessingEvent(QName processingEvent) {
2081 _processingEvents.add(processingEvent);
2082 _processingEventsByQName.put(
2083 QNameUtil.getKey(processingEvent), processingEvent);
2084 }
2085
2086 /**
2087 * Gets the supported processing event from a namespace URI and a local
2088 * part.
2089 *
2090 * @return the supported processing event from a namespace URI and a
2091 * local part
2092 */
2093 public QName getProcessingEvent(String uri, String localPart) {
2094 return _processingEventsByQName.get(
2095 QNameUtil.getKey(uri, localPart));
2096 }
2097
2098 /**
2099 * Gets the supported processing events of the portlet.
2100 *
2101 * @return supported processing events of the portlet
2102 */
2103 public Set<QName> getProcessingEvents() {
2104 return _processingEvents;
2105 }
2106
2107 /**
2108 * Sets the supported processing events of the portlet.
2109 *
2110 * @param processingEvents the supported processing events of the
2111 * portlet
2112 */
2113 public void setProcessingEvents(Set<QName> processingEvents) {
2114 for (QName processingEvent : processingEvents) {
2115 addProcessingEvent(processingEvent);
2116 }
2117 }
2118
2119 /**
2120 * Adds a supported publishing event.
2121 *
2122 * @param publicRenderParameter a supported publishing event
2123 */
2124 public void addPublishingEvent(QName publishingEvent) {
2125 _publishingEvents.add(publishingEvent);
2126 }
2127
2128 /**
2129 * Gets the supported publishing events of the portlet.
2130 *
2131 * @return supported publishing events of the portlet
2132 */
2133 public Set<QName> getPublishingEvents() {
2134 return _publishingEvents;
2135 }
2136
2137 /**
2138 * Sets the supported publishing events of the portlet.
2139 *
2140 * @param publishingEvents the supported publishing events of the
2141 * portlet
2142 */
2143 public void setPublishingEvents(Set<QName> publishingEvents) {
2144 for (QName publishingEvent : publishingEvents) {
2145 addPublishingEvent(publishingEvent);
2146 }
2147 }
2148
2149 /**
2150 * Adds a supported public render parameter.
2151 *
2152 * @param publicRenderParameter a supported public render parameter
2153 */
2154 public void addPublicRenderParameter(
2155 PublicRenderParameter publicRenderParameter) {
2156
2157 _publicRenderParameters.add(publicRenderParameter);
2158 _publicRenderParametersByIdentifier.put(
2159 publicRenderParameter.getIdentifier(), publicRenderParameter);
2160 _publicRenderParametersByQName.put(
2161 QNameUtil.getKey(publicRenderParameter.getQName()),
2162 publicRenderParameter);
2163 }
2164
2165 /**
2166 * Gets the supported public render parameter from an identifier.
2167 *
2168 * @return the supported public render parameter from an identifier
2169 */
2170 public PublicRenderParameter getPublicRenderParameter(String identifier) {
2171 return _publicRenderParametersByIdentifier.get(identifier);
2172 }
2173
2174 /**
2175 * Gets the supported public render parameter from a namespace URI and a
2176 * local part.
2177 *
2178 * @return the supported public render parameter from a namespace URI
2179 * and a local part
2180 */
2181 public PublicRenderParameter getPublicRenderParameter(
2182 String uri, String localPart) {
2183
2184 return _publicRenderParametersByQName.get(
2185 QNameUtil.getKey(uri, localPart));
2186 }
2187
2188 /**
2189 * Gets the supported public render parameters of the portlet.
2190 *
2191 * @return the supported public render parameters of the portlet
2192 */
2193 public Set<PublicRenderParameter> getPublicRenderParameters() {
2194 return _publicRenderParameters;
2195 }
2196
2197 /**
2198 * Sets the supported public render parameters of the portlet.
2199 *
2200 * @param publicRenderParameters the supported public render
2201 * parameters of the portlet
2202 */
2203 public void setPublicRenderParameters(
2204 Set<PublicRenderParameter> publicRenderParameters) {
2205
2206 for (PublicRenderParameter publicRenderParameter :
2207 publicRenderParameters) {
2208
2209 addPublicRenderParameter(publicRenderParameter);
2210 }
2211 }
2212
2213 /**
2214 * Gets the servlet context path of the portlet.
2215 *
2216 * @return the servlet context path of the portlet
2217 */
2218 public String getContextPath() {
2219 String virtualPath = getVirtualPath();
2220
2221 if (Validator.isNotNull(virtualPath)) {
2222 return virtualPath;
2223 }
2224
2225 if (_portletApp.isWARFile()) {
2226 StringMaker sm = new StringMaker();
2227
2228 sm.append(StringPool.SLASH);
2229 sm.append(_portletApp.getServletContextName());
2230
2231 return sm.toString();
2232 }
2233 else {
2234 return PortalUtil.getPathContext();
2235 }
2236 }
2237
2238 /**
2239 * Get the application this portlet belongs to.
2240 *
2241 * @return the application this portlet belongs to
2242 */
2243 public PortletApp getPortletApp() {
2244 return _portletApp;
2245 }
2246
2247 /**
2248 * Sets the application this portlet belongs to.
2249 *
2250 * @param portletApp the application this portlet belongs to
2251 */
2252 public void setPortletApp(PortletApp portletApp) {
2253 _portletApp = portletApp;
2254 }
2255
2256 /**
2257 * Returns true if the portlet is found in a WAR file.
2258 *
2259 * @param portletId the cloned instance portlet id
2260 * @return a cloned instance of the portlet
2261 */
2262 public Portlet getClonedInstance(String portletId) {
2263 if (_clonedInstances == null) {
2264
2265 // LEP-528
2266
2267 return null;
2268 }
2269
2270 Portlet clonedInstance = _clonedInstances.get(portletId);
2271
2272 if (clonedInstance == null) {
2273 clonedInstance = (Portlet)clone();
2274
2275 clonedInstance.setPortletId(portletId);
2276
2277 // Disable caching of cloned instances until we can figure out how
2278 // to elegantly refresh the cache when the portlet is dynamically
2279 // updated by the user. For example, the user might change the
2280 // portlet from one column to the next. Cloned instances that are
2281 // cached would not see the new change. We can then also cache
2282 // static portlet instances.
2283
2284 //_clonedInstances.put(portletId, clonedInstance);
2285 }
2286
2287 return clonedInstance;
2288 }
2289
2290 /**
2291 * Returns true if the portlet is a static portlet that is cannot be moved.
2292 *
2293 * @return true if the portlet is a static portlet that is cannot be
2294 * moved
2295 */
2296 public boolean getStatic() {
2297 return _staticPortlet;
2298 }
2299
2300 /**
2301 * Returns true if the portlet is a static portlet that is cannot be moved.
2302 *
2303 * @return true if the portlet is a static portlet that is cannot be
2304 * moved
2305 */
2306 public boolean isStatic() {
2307 return _staticPortlet;
2308 }
2309
2310 /**
2311 * Sets to true if the portlet is a static portlet that is cannot be moved.
2312 *
2313 * @param staticPortlet boolean value for whether the portlet is a
2314 * static portlet that cannot be moved
2315 */
2316 public void setStatic(boolean staticPortlet) {
2317 _staticPortlet = staticPortlet;
2318 }
2319
2320 /**
2321 * Returns true if the portlet is a static portlet at the start of a list of
2322 * portlets.
2323 *
2324 * @return true if the portlet is a static portlet at the start of a
2325 * list of portlets
2326 */
2327 public boolean getStaticStart() {
2328 return _staticPortletStart;
2329 }
2330
2331 /**
2332 * Returns true if the portlet is a static portlet at the start of a list of
2333 * portlets.
2334 *
2335 * @return true if the portlet is a static portlet at the start of a
2336 * list of portlets
2337 */
2338 public boolean isStaticStart() {
2339 return _staticPortletStart;
2340 }
2341
2342 /**
2343 * Sets to true if the portlet is a static portlet at the start of a list of
2344 * portlets.
2345 *
2346 * @param staticPortletStart boolean value for whether the portlet is
2347 * a static portlet at the start of a list of portlets
2348 */
2349 public void setStaticStart(boolean staticPortletStart) {
2350 _staticPortletStart = staticPortletStart;
2351 }
2352
2353 /**
2354 * Returns true if the portlet is a static portlet at the end of a list of
2355 * portlets.
2356 *
2357 * @return true if the portlet is a static portlet at the end of a
2358 * list of portlets
2359 */
2360 public boolean getStaticEnd() {
2361 return !_staticPortletStart;
2362 }
2363
2364 /**
2365 * Returns true if the portlet is a static portlet at the end of a list of
2366 * portlets.
2367 *
2368 * @return true if the portlet is a static portlet at the end of a
2369 * list of portlets
2370 */
2371 public boolean isStaticEnd() {
2372 return !_staticPortletStart;
2373 }
2374
2375 /**
2376 * Creates and returns a copy of this object.
2377 *
2378 * @return a copy of this object
2379 */
2380 public Object clone() {
2381 return new PortletImpl(
2382 getPortletId(), getPluginPackage(), getDefaultPluginSetting(),
2383 getCompanyId(), getIcon(), getVirtualPath(), getStrutsPath(),
2384 getDisplayName(), getPortletClass(), getConfigurationActionClass(),
2385 getIndexerClass(), getOpenSearchClass(), getSchedulerClass(),
2386 getPortletURLClass(), getFriendlyURLMapperClass(),
2387 getURLEncoderClass(), getPortletDataHandlerClass(),
2388 getPortletLayoutListenerClass(), getPopMessageListenerClass(),
2389 getSocialActivityInterpreterClass(), getDefaultPreferences(),
2390 getPreferencesValidator(), isPreferencesCompanyWide(),
2391 isPreferencesUniquePerLayout(), isPreferencesOwnedByGroup(),
2392 isUseDefaultTemplate(), isShowPortletAccessDenied(),
2393 isShowPortletInactive(), isActionURLRedirect(),
2394 isRestoreCurrentView(), isMaximizeEdit(), isMaximizeHelp(),
2395 isPopUpPrint(), isLayoutCacheable(), isInstanceable(),
2396 getUserPrincipalStrategy(), isPrivateRequestAttributes(),
2397 isPrivateSessionAttributes(), getRenderWeight(), isAjaxable(),
2398 getHeaderPortalCss(), getHeaderPortletCss(),
2399 getHeaderPortalJavaScript(), getHeaderPortletJavaScript(),
2400 getFooterPortalCss(), getFooterPortletCss(),
2401 getFooterPortalJavaScript(), getFooterPortletJavaScript(),
2402 getCssClassWrapper(), isAddDefaultResource(), getRoles(),
2403 getUnlinkedRoles(), getRoleMappers(), isSystem(), isActive(),
2404 isInclude(), getInitParams(), getExpCache(), getPortletModes(),
2405 getSupportedLocales(), getResourceBundle(), getPortletInfo(),
2406 getPortletFilters(), getProcessingEvents(), getPublishingEvents(),
2407 getPublicRenderParameters(), getPortletApp());
2408 }
2409
2410 /**
2411 * Compares this portlet to the specified object.
2412 *
2413 * @param obj the object to compare this portlet against
2414 * @return the value 0 if the argument portlet is equal to this
2415 * portlet; a value less than -1 if this portlet is less than
2416 * the portlet argument; and 1 if this portlet is greater than
2417 * the portlet argument
2418 */
2419 public int compareTo(Object obj) {
2420 Portlet portlet = (Portlet)obj;
2421
2422 return getPortletId().compareTo(portlet.getPortletId());
2423 }
2424
2425 /**
2426 * Checks whether this portlet is equal to the specified object.
2427 *
2428 * @param obj the object to compare this portlet against
2429 * @return true if the portlet is equal to the specified object
2430 */
2431 public boolean equals(Object obj) {
2432 Portlet portlet = (Portlet)obj;
2433
2434 return getPortletId().equals(portlet.getPortletId());
2435 }
2436
2437 /**
2438 * Log instance for this class.
2439 */
2440 private static Log _log = LogFactory.getLog(PortletImpl.class);
2441
2442 /**
2443 * Package this plugin belongs to.
2444 */
2445 private PluginPackage _pluginPackage;
2446
2447 /**
2448 * Plugin settings associated with the portlet.
2449 */
2450 private PluginSetting _defaultPluginSetting;
2451
2452 /**
2453 * The icon of the portlet.
2454 */
2455 private String _icon;
2456
2457 /**
2458 * The virtual path of the portlet.
2459 */
2460 private String _virtualPath;
2461
2462 /**
2463 * The struts path of the portlet.
2464 */
2465 private String _strutsPath;
2466
2467 /**
2468 * The display name of the portlet.
2469 */
2470 private String _displayName;
2471
2472 /**
2473 * The name of the portlet class of the portlet.
2474 */
2475 private String _portletClass;
2476
2477 /**
2478 * The configuration action class of the portlet.
2479 */
2480 private String _configurationActionClass;
2481
2482 /**
2483 * The name of the indexer class of the portlet.
2484 */
2485 private String _indexerClass;
2486
2487 /**
2488 * The name of the open search class of the portlet.
2489 */
2490 private String _openSearchClass;
2491
2492 /**
2493 * The name of the scheduler class of the portlet.
2494 */
2495 private String _schedulerClass;
2496
2497 /**
2498 * The name of the portlet URL class of the portlet.
2499 */
2500 private String _portletURLClass;
2501
2502 /**
2503 * The name of the friendly URL mapper class of the portlet.
2504 */
2505 private String _friendlyURLMapperClass;
2506
2507 /**
2508 * The name of the URL encoder class of the portlet.
2509 */
2510 private String _urlEncoderClass;
2511
2512 /**
2513 * The name of the portlet data handler class of the portlet.
2514 */
2515 private String _portletDataHandlerClass;
2516
2517 /**
2518 * The name of the portlet data layout listener class of the portlet.
2519 */
2520 private String _portletLayoutListenerClass;
2521
2522 /**
2523 * The name of the POP message listener class of the portlet.
2524 */
2525 private String _popMessageListenerClass;
2526
2527 /**
2528 * The name of the social activity interpreter class of the portlet.
2529 */
2530 private String _socialActivityInterpreterClass;
2531
2532 /**
2533 * The default preferences of the portlet.
2534 */
2535 private String _defaultPreferences;
2536
2537 /**
2538 * The name of the preferences validator class of the portlet.
2539 */
2540 private String _prefsValidator;
2541
2542 /**
2543 * True if preferences are shared across the entire company.
2544 */
2545 private boolean _prefsCompanyWide;
2546
2547 /**
2548 * True if preferences are unique per layout.
2549 */
2550 private boolean _prefsUniquePerLayout = true;
2551
2552 /**
2553 * True if preferences are owned by the group when the portlet is shown in a
2554 * group layout. False if preferences are owned by the user at all times.
2555 */
2556 private boolean _prefsOwnedByGroup = true;
2557
2558 /**
2559 * True if the portlet uses the default template.
2560 */
2561 private boolean _useDefaultTemplate = true;
2562
2563 /**
2564 * True if users are shown that they do not have access to the portlet.
2565 */
2566 private boolean _showPortletAccessDenied =
2567 PropsValues.LAYOUT_SHOW_PORTLET_ACCESS_DENIED;
2568
2569 /**
2570 * True if users are shown that the portlet is inactive.
2571 */
2572 private boolean _showPortletInactive =
2573 PropsValues.LAYOUT_SHOW_PORTLET_INACTIVE;
2574
2575 /**
2576 * True if an action URL for this portlet should cause an auto redirect.
2577 */
2578 private boolean _actionURLRedirect;
2579
2580 /**
2581 * True if the portlet restores to the current view from the maximized
2582 * state.
2583 */
2584 private boolean _restoreCurrentView = true;
2585
2586 /**
2587 * True if the portlet goes into the maximized state when the user goes into
2588 * the edit mode.
2589 */
2590 private boolean _maximizeEdit;
2591
2592 /**
2593 * True if the portlet goes into the maximized state when the user goes into
2594 * the help mode.
2595 */
2596 private boolean _maximizeHelp;
2597
2598 /**
2599 * True if the portlet goes into the pop up state when the user goes into
2600 * the print mode.
2601 */
2602 private boolean _popUpPrint = true;
2603
2604 /**
2605 * True if the portlet can be cached within the layout.
2606 */
2607 private boolean _layoutCacheable;
2608
2609 /**
2610 * True if the portlet can be added multiple times to a layout.
2611 */
2612 private boolean _instanceable;
2613
2614 /**
2615 * The user principal strategy of the portlet.
2616 */
2617 private String _userPrincipalStrategy =
2618 PortletImpl.USER_PRINCIPAL_STRATEGY_USER_ID;
2619
2620 /**
2621 * True if the portlet does not share request attributes with the portal or
2622 * portlets from another WAR.
2623 */
2624 private boolean _privateRequestAttributes = true;
2625
2626 /**
2627 * True if the portlet does not share session attributes with the portal.
2628 */
2629 private boolean _privateSessionAttributes = true;
2630
2631 /**
2632 * Render weight of the portlet.
2633 */
2634 private int _renderWeight = 1;
2635
2636 /**
2637 * True if the portlet can be displayed via Ajax.
2638 */
2639 private boolean _ajaxable = true;
2640
2641 /**
2642 * A list of CSS files that will be referenced from the page's header
2643 * relative to the portal's context path.
2644 */
2645 private List<String> _headerPortalCss;
2646
2647 /**
2648 * A list of CSS files that will be referenced from the page's header
2649 * relative to the portlet's context path.
2650 */
2651 private List<String> _headerPortletCss;
2652
2653 /**
2654 * A list of JavaScript files that will be referenced from the page's header
2655 * relative to the portal's context path.
2656 */
2657 private List<String> _headerPortalJavaScript;
2658
2659 /**
2660 * A list of JavaScript files that will be referenced from the page's header
2661 * relative to the portlet's context path.
2662 */
2663 private List<String> _headerPortletJavaScript;
2664
2665 /**
2666 * A list of CSS files that will be referenced from the page's footer
2667 * relative to the portal's context path.
2668 */
2669 private List<String> _footerPortalCss;
2670
2671 /**
2672 * A list of CSS files that will be referenced from the page's footer
2673 * relative to the portlet's context path.
2674 */
2675 private List<String> _footerPortletCss;
2676
2677 /**
2678 * A list of JavaScript files that will be referenced from the page's footer
2679 * relative to the portal's context path.
2680 */
2681 private List<String> _footerPortalJavaScript;
2682
2683 /**
2684 * A list of JavaScript files that will be referenced from the page's footer
2685 * relative to the portlet's context path.
2686 */
2687 private List<String> _footerPortletJavaScript;
2688
2689 /**
2690 * The name of the CSS class that will be injected in the DIV that wraps
2691 * this portlet.
2692 */
2693 private String _cssClassWrapper = StringPool.BLANK;
2694
2695 /**
2696 * True if default resources for the portlet are added to a page.
2697 */
2698 private boolean _addDefaultResource;
2699
2700 /**
2701 * An array of required roles of the portlet.
2702 */
2703 private String[] _rolesArray;
2704
2705 /**
2706 * The unlinked roles of the portlet.
2707 */
2708 private Set<String> _unlinkedRoles;
2709
2710 /**
2711 * The role mappers of the portlet.
2712 */
2713 private Map<String, String> _roleMappers;
2714
2715 /**
2716 * True if the portlet is a system portlet that a user cannot manually add
2717 * to their page.
2718 */
2719 private boolean _system;
2720
2721 /**
2722 * True to include the portlet and make it available to be made active.
2723 */
2724 private boolean _include = true;
2725
2726 /**
2727 * The init parameters of the portlet.
2728 */
2729 private Map<String, String> _initParams;
2730
2731 /**
2732 * The expiration cache of the portlet.
2733 */
2734 private Integer _expCache;
2735
2736 /**
2737 * The portlet modes of the portlet.
2738 */
2739 private Map<String, Set<String>> _portletModes;
2740
2741 /**
2742 * The supported locales of the portlet.
2743 */
2744 private Set<String> _supportedLocales;
2745
2746 /**
2747 * The resource bundle of the portlet.
2748 */
2749 private String _resourceBundle;
2750
2751 /**
2752 * The portlet info of the portlet.
2753 */
2754 private PortletInfo _portletInfo;
2755
2756 /**
2757 * The filters of the portlet.
2758 */
2759 private Map<String, PortletFilter> _portletFilters;
2760
2761 /**
2762 * The supported processing events of the portlet.
2763 */
2764 private Set<QName> _processingEvents = new HashSet<QName>();
2765
2766 /**
2767 * Map of the supported processing events of the portlet keyed by the QName.
2768 */
2769 private Map<String, QName> _processingEventsByQName =
2770 new HashMap<String, QName>();
2771
2772 /**
2773 * The supported publishing events of the portlet.
2774 */
2775 private Set<QName> _publishingEvents = new HashSet<QName>();
2776
2777 /**
2778 * The supported public render parameters of the portlet.
2779 */
2780 private Set<PublicRenderParameter> _publicRenderParameters =
2781 new HashSet<PublicRenderParameter>();
2782
2783 /**
2784 * Map of the supported public render parameters of the portlet keyed by the
2785 * identifier.
2786 */
2787 private Map<String, PublicRenderParameter>
2788 _publicRenderParametersByIdentifier =
2789 new HashMap<String, PublicRenderParameter>();
2790
2791 /**
2792 * Map of the supported public render parameters of the portlet keyed by the
2793 * QName.
2794 */
2795 private Map<String, PublicRenderParameter>
2796 _publicRenderParametersByQName =
2797 new HashMap<String, PublicRenderParameter>();
2798
2799 /**
2800 * The application this portlet belongs to.
2801 */
2802 private PortletApp _portletApp;
2803
2804 /**
2805 * The cloned instances of the portlet.
2806 */
2807 private Map<String, Portlet> _clonedInstances;
2808
2809 /**
2810 * True if the portlet is a static portlet that is cannot be moved.
2811 */
2812 private boolean _staticPortlet;
2813
2814 /**
2815 * True if the portlet is a static portlet at the start of a list of
2816 * portlets.
2817 */
2818 private boolean _staticPortletStart;
2819
2820}