KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > infoglue > deliver > controllers > kernel > impl > simple > ExtranetController


1 /* ===============================================================================
2  *
3  * Part of the InfoGlue Content Management Platform (www.infoglue.org)
4  *
5  * ===============================================================================
6  *
7  * Copyright (C)
8  *
9  * This program is free software; you can redistribute it and/or modify it under
10  * the terms of the GNU General Public License version 2, as published by the
11  * Free Software Foundation. See the file LICENSE.html for more information.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along with
18  * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
19  * Place, Suite 330 / Boston, MA 02111-1307 / USA.
20  *
21  * ===============================================================================
22  */

23
24 package org.infoglue.deliver.controllers.kernel.impl.simple;
25
26 import java.security.Principal JavaDoc;
27 import java.util.Collection JavaDoc;
28 import java.util.Iterator JavaDoc;
29 import java.util.List JavaDoc;
30 import java.util.Map JavaDoc;
31 import java.util.Properties JavaDoc;
32
33 import org.apache.log4j.Logger;
34 import org.exolab.castor.jdo.Database;
35 import org.infoglue.cms.controllers.kernel.impl.simple.GroupPropertiesController;
36 import org.infoglue.cms.controllers.kernel.impl.simple.RolePropertiesController;
37 import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController;
38 import org.infoglue.cms.controllers.kernel.impl.simple.UserControllerProxy;
39 import org.infoglue.cms.controllers.kernel.impl.simple.UserPropertiesController;
40 import org.infoglue.cms.entities.content.DigitalAsset;
41 import org.infoglue.cms.entities.management.GroupProperties;
42 import org.infoglue.cms.entities.management.LanguageVO;
43 import org.infoglue.cms.entities.management.RoleProperties;
44 import org.infoglue.cms.entities.management.UserProperties;
45 import org.infoglue.cms.entities.structure.SiteNode;
46 import org.infoglue.cms.exception.SystemException;
47 import org.infoglue.cms.security.AuthenticationModule;
48 import org.infoglue.cms.security.InfoGlueAuthenticationFilter;
49 import org.infoglue.cms.security.InfoGlueGroup;
50 import org.infoglue.cms.security.InfoGluePrincipal;
51 import org.infoglue.cms.security.InfoGlueRole;
52 import org.infoglue.deliver.applications.databeans.DeliveryContext;
53
54 /**
55  * @author Mattias Bogeblad
56  *
57  * This class is the controller for extranet functionality. Authentication, authorization and stuff like that
58  * is what it does best!
59  */

60
61 public class ExtranetController extends BaseDeliveryController
62 {
63     private final static Logger logger = Logger.getLogger(ExtranetController.class.getName());
64
65     /**
66      * Private constructor to enforce factory-use
67      */

68
69     private ExtranetController()
70     {
71     }
72
73     /**
74      * Factory method
75      */

76     
77     public static ExtranetController getController()
78     {
79         return new ExtranetController();
80     }
81     
82     /**
83      * This method autenticates a user. It takes a username and checks first that it is defined as a
84      * infoglue extranet user.
85      */

86     
87     public Principal JavaDoc getAuthenticatedPrincipal(Database db, Map JavaDoc request) throws Exception JavaDoc
88     {
89         Principal JavaDoc principal = null;
90         
91         try
92         {
93             String JavaDoc authenticatorClass = InfoGlueAuthenticationFilter.authenticatorClass;
94             String JavaDoc authorizerClass = InfoGlueAuthenticationFilter.authorizerClass;
95             String JavaDoc invalidLoginUrl = InfoGlueAuthenticationFilter.invalidLoginUrl;
96             String JavaDoc loginUrl = InfoGlueAuthenticationFilter.loginUrl;
97             String JavaDoc serverName = InfoGlueAuthenticationFilter.serverName;
98             Properties JavaDoc extraProperties = InfoGlueAuthenticationFilter.extraProperties;
99             String JavaDoc casRenew = InfoGlueAuthenticationFilter.casRenew;
100             String JavaDoc casServiceUrl = InfoGlueAuthenticationFilter.casServiceUrl;
101             String JavaDoc casValidateUrl = InfoGlueAuthenticationFilter.casValidateUrl;
102             
103             AuthenticationModule authenticationModule = (AuthenticationModule)Class.forName(authenticatorClass).newInstance();
104             authenticationModule.setAuthenticatorClass(authenticatorClass);
105             authenticationModule.setAuthorizerClass(authorizerClass);
106             authenticationModule.setInvalidLoginUrl(invalidLoginUrl);
107             authenticationModule.setLoginUrl(loginUrl);
108             authenticationModule.setServerName(serverName);
109             authenticationModule.setExtraProperties(extraProperties);
110             authenticationModule.setCasRenew(casRenew);
111             authenticationModule.setCasServiceUrl(casServiceUrl);
112             authenticationModule.setCasValidateUrl(casValidateUrl);
113             authenticationModule.setTransactionObject(db);
114             
115             String JavaDoc authenticatedUserName = authenticationModule.authenticateUser(request);
116             logger.info("authenticatedUserName:" + authenticatedUserName);
117             principal = UserControllerProxy.getController(db).getUser(authenticatedUserName);
118             logger.info("principal:" + principal);
119         }
120         catch(Exception JavaDoc e)
121         {
122             logger.error("An error occurred so we should not complete the transaction:" + e, e);
123             throw new SystemException("The login process failed: " + e.getMessage(), e);
124         }
125         
126         return principal;
127     }
128     
129     
130     /**
131      * This method autenticates a user. It takes a username and checks first that it is defined as a
132      * infoglue extranet user.
133      */

134     
135     public Principal JavaDoc getAuthenticatedPrincipal(Map JavaDoc request) throws Exception JavaDoc
136     {
137         Principal JavaDoc principal = null;
138         
139         try
140         {
141             String JavaDoc authenticatedUserName = AuthenticationModule.getAuthenticationModule(null, null).authenticateUser(request);
142             logger.info("authenticatedUserName:" + authenticatedUserName);
143             principal = UserControllerProxy.getController().getUser(authenticatedUserName);
144             logger.info("principal:" + principal);
145         }
146         catch(Exception JavaDoc e)
147         {
148             logger.error("An error occurred so we should not complete the transaction:" + e, e);
149             throw new SystemException("The login process failed: " + e.getMessage(), e);
150         }
151         
152         return principal;
153     }
154     /**
155      * This method checks if a user has access to an entity. It takes name and id of the entity.
156      */

157     /*
158     public boolean getIsPrincipalAuthorized(Principal principal, String name, String value, NodeDeliveryController nodeDeliveryController) throws Exception
159     {
160         boolean isPrincipalAuthorized = false;
161         
162         //UserVO userVO = UserController.getController().getUserVO(principal.getName());
163         
164         List extranetAccessVOList = ExtranetAccessController.getController().getExtranetAccessVOList(name, value);
165         if(extranetAccessVOList != null && extranetAccessVOList.size() > 0)
166         {
167             Iterator extranetAccessVOListIterator = extranetAccessVOList.iterator();
168             outer: while(extranetAccessVOListIterator.hasNext())
169             {
170                 ExtranetAccessVO extranetAccessVO = (ExtranetAccessVO)extranetAccessVOListIterator.next();
171                 List roles = ((InfoGluePrincipal)principal).getRoles();
172                 logger.info("ExtranetAccessVO:" + extranetAccessVO.getRoleId());
173                 logger.info("name:" + extranetAccessVO.getName());
174                 logger.info("value:" + extranetAccessVO.getValue());
175                 Iterator rolesIterator = roles.iterator();
176                 while(rolesIterator.hasNext())
177                 {
178                     RoleVO roleVO = (RoleVO)rolesIterator.next();
179                     logger.info("roleVO:" + roleVO.getRoleId());
180                     if(roleVO.getRoleId().intValue() == extranetAccessVO.getRoleId().intValue() && extranetAccessVO.getHasReadAccess().booleanValue())
181                     {
182                         isPrincipalAuthorized = true;
183                         break outer;
184                     }
185                 }
186             }
187         }
188         else
189         {
190             if(name.equals("SiteNode"))
191             {
192                 SiteNodeVO parentSiteNodeVO = nodeDeliveryController.getParentSiteNode(new Integer(value));
193                 if(parentSiteNodeVO != null)
194                     isPrincipalAuthorized = getIsPrincipalAuthorized(principal, name, parentSiteNodeVO.getSiteNodeId().toString(), nodeDeliveryController);
195             }
196         }
197         
198         logger.info("isPrincipalAuthorized:" + isPrincipalAuthorized);
199         
200         return isPrincipalAuthorized;
201     }
202     */

203     
204     /**
205      * This method checks if a user has write access to an entity. It takes name and id of the entity.
206      */

207     /*
208     public boolean getIsPrincipalAuthorizedForWriteAccess(Principal principal, String name, String value, NodeDeliveryController nodeDeliveryController) throws Exception
209     {
210         boolean isPrincipalAuthorized = false;
211         
212         //UserVO userVO = UserController.getController().getUserVO(principal.getName());
213         
214         List extranetAccessVOList = ExtranetAccessController.getController().getExtranetAccessVOList(name, value);
215         if(extranetAccessVOList != null && extranetAccessVOList.size() > 0)
216         {
217             Iterator extranetAccessVOListIterator = extranetAccessVOList.iterator();
218             outer: while(extranetAccessVOListIterator.hasNext())
219             {
220                 ExtranetAccessVO extranetAccessVO = (ExtranetAccessVO)extranetAccessVOListIterator.next();
221                 List roles = ((InfoGluePrincipal)principal).getRoles();
222                 logger.info("ExtranetAccessVO:" + extranetAccessVO.getRoleId());
223                 logger.info("name:" + extranetAccessVO.getName());
224                 logger.info("value:" + extranetAccessVO.getValue());
225                 Iterator rolesIterator = roles.iterator();
226                 while(rolesIterator.hasNext())
227                 {
228                     RoleVO roleVO = (RoleVO)rolesIterator.next();
229                     logger.info("roleVO:" + roleVO.getRoleId());
230                     if(roleVO.getRoleId().intValue() == extranetAccessVO.getRoleId().intValue() && extranetAccessVO.getHasWriteAccess().booleanValue())
231                     {
232                         isPrincipalAuthorized = true;
233                         break outer;
234                     }
235                 }
236             }
237         }
238         else
239         {
240             if(name.equals("SiteNode"))
241             {
242                 SiteNodeVO parentSiteNodeVO = nodeDeliveryController.getParentSiteNode(new Integer(value));
243                 if(parentSiteNodeVO != null)
244                     isPrincipalAuthorized = getIsPrincipalAuthorizedForWriteAccess(principal, name, parentSiteNodeVO.getSiteNodeId().toString(), nodeDeliveryController);
245             }
246         }
247         
248         logger.info("isPrincipalAuthorized:" + isPrincipalAuthorized);
249         
250         return isPrincipalAuthorized;
251     }
252     */

253
254     /**
255      * Getting a property for a Principal - used for personalisation.
256      * This method starts with getting the property on the user and if it does not exist we check out the
257      * group-properties as well.
258      */

259     /*
260     public String getPrincipalPropertyValue(Database db, InfoGluePrincipal infoGluePrincipal, String propertyName, Integer languageId, Integer siteNodeId, boolean useLanguageFallback, boolean escapeSpecialCharacters) throws Exception
261     {
262         String value = "";
263         
264         if(infoGluePrincipal == null || propertyName == null)
265             return null;
266         
267         Collection userPropertiesList = UserPropertiesController.getController().getUserPropertiesList(infoGluePrincipal.getName(), languageId, db);
268         Iterator userPropertiesListIterator = userPropertiesList.iterator();
269         while(userPropertiesListIterator.hasNext())
270         {
271             UserProperties userProperties = (UserProperties)userPropertiesListIterator.next();
272     
273             if(userProperties != null && userProperties.getLanguage().getLanguageId().equals(languageId) && userProperties.getValue() != null && propertyName != null)
274             {
275                 String propertyXML = userProperties.getValue();
276                 DOMBuilder domBuilder = new DOMBuilder();
277                 Document document = domBuilder.getDocument(propertyXML);
278     
279                 Node node = document.getRootElement().selectSingleNode("attributes/" + propertyName);
280                 if(node != null)
281                 {
282                     value = node.getStringValue();
283                     logger.info("Getting value: " + value);
284                     if(value != null && escapeSpecialCharacters)
285                         value = new VisualFormatter().escapeHTML(value);
286                     break;
287                 }
288             }
289         }
290         
291         if(value.equals(""))
292         {
293             List roles = infoGluePrincipal.getRoles();
294             Iterator rolesIterator = roles.iterator();
295             while(rolesIterator.hasNext())
296             {
297                 InfoGlueRole role = (InfoGlueRole)rolesIterator.next();
298                 
299                 Collection rolePropertiesList = RolePropertiesController.getController().getRolePropertiesList(role.getName(), languageId, db);
300                 Iterator rolePropertiesListIterator = rolePropertiesList.iterator();
301                 while(rolePropertiesListIterator.hasNext())
302                 {
303                     RoleProperties roleProperties = (RoleProperties)rolePropertiesListIterator.next();
304                     
305                     if(roleProperties != null && roleProperties.getLanguage().getLanguageId().equals(languageId) && roleProperties.getValue() != null && propertyName != null)
306                     {
307                         String propertyXML = roleProperties.getValue();
308                         DOMBuilder domBuilder = new DOMBuilder();
309                         Document document = domBuilder.getDocument(propertyXML);
310                         
311                         Node node = document.getRootElement().selectSingleNode("attributes/" + propertyName);
312                         if(node != null)
313                         {
314                             value = node.getStringValue();
315                             logger.info("Getting value: " + value);
316                             if(value != null && escapeSpecialCharacters)
317                                 value = new VisualFormatter().escapeHTML(value);
318                             break;
319                         }
320                     }
321                 }
322                                     
323             }
324             
325             if(value.equals("") && useLanguageFallback)
326             {
327                 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
328                 if(!masterLanguageVO.getLanguageId().equals(languageId))
329                     return getPrincipalPropertyValue(db, infoGluePrincipal, propertyName, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, escapeSpecialCharacters);
330             }
331         }
332
333         if(value.equals(""))
334         {
335             List groups = infoGluePrincipal.getGroups();
336             Iterator groupsIterator = groups.iterator();
337             while(groupsIterator.hasNext())
338             {
339                 InfoGlueGroup group = (InfoGlueGroup)groupsIterator.next();
340                 
341                 Collection groupPropertiesList = GroupPropertiesController.getController().getGroupPropertiesList(group.getName(), languageId, db);
342                 Iterator groupPropertiesListIterator = groupPropertiesList.iterator();
343                 while(groupPropertiesListIterator.hasNext())
344                 {
345                     GroupProperties groupProperties = (GroupProperties)groupPropertiesListIterator.next();
346                     
347                     if(groupProperties != null && groupProperties.getLanguage().getLanguageId().equals(languageId) && groupProperties.getValue() != null && propertyName != null)
348                     {
349                         String propertyXML = groupProperties.getValue();
350                         DOMBuilder domBuilder = new DOMBuilder();
351                         Document document = domBuilder.getDocument(propertyXML);
352                         
353                         Node node = document.getRootElement().selectSingleNode("attributes/" + propertyName);
354                         if(node != null)
355                         {
356                             value = node.getStringValue();
357                             logger.info("Getting value: " + value);
358                             if(value != null && escapeSpecialCharacters)
359                                 value = new VisualFormatter().escapeHTML(value);
360                             break;
361                         }
362                     }
363                 }
364                                     
365             }
366             
367             if(value.equals("") && useLanguageFallback)
368             {
369                 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
370                 if(!masterLanguageVO.getLanguageId().equals(languageId))
371                     return getPrincipalPropertyValue(db, infoGluePrincipal, propertyName, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, escapeSpecialCharacters);
372             }
373         }
374
375         return value;
376     }
377     */

378     
379     
380     /**
381      * Getting a digitalAsset for a Principal - used for personalisation.
382      * This method starts with getting the asset on the user and if it does not exist we check out the
383      * group-properties as well.
384      */

385     
386     public String JavaDoc getPrincipalAssetUrl(Database db, InfoGluePrincipal infoGluePrincipal, String JavaDoc assetKey, Integer JavaDoc languageId, Integer JavaDoc siteNodeId, boolean useLanguageFallback, DeliveryContext deliveryContext) throws Exception JavaDoc
387     {
388         String JavaDoc assetUrl = "";
389         
390         if(infoGluePrincipal == null || assetKey == null)
391             return null;
392
393         Collection JavaDoc userPropertiesList = UserPropertiesController.getController().getUserPropertiesList(infoGluePrincipal.getName(), languageId, db, true);
394         logger.info("userProperties:" + userPropertiesList.size());
395         Iterator JavaDoc userPropertiesListIterator = userPropertiesList.iterator();
396         while(userPropertiesListIterator.hasNext())
397         {
398             UserProperties userProperties = (UserProperties)userPropertiesListIterator.next();
399             //logger.info("userProperties:" + userProperties.getValue());
400
//logger.info("propertyName:" + propertyName);
401
logger.info("userProperties:" + userProperties.getValue());
402             logger.info("assetKey:" + assetKey);
403
404             if(userProperties != null && userProperties.getLanguage().getLanguageId().equals(languageId))
405             {
406                 Collection JavaDoc assets = userProperties.getDigitalAssets();
407                 logger.info("assets:" + assets.size());
408                 Iterator JavaDoc assetsIterator = assets.iterator();
409                 while(assetsIterator.hasNext())
410                 {
411                     DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
412                     logger.info("digitalAsset:" + digitalAsset.getAssetKey());
413                     if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
414                     {
415                         SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
416                         assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext);
417                         logger.info("assetUrl:" + assetUrl);
418                         break;
419                     }
420                 }
421             }
422         }
423         
424         if(assetUrl.equals(""))
425         {
426             List JavaDoc roles = infoGluePrincipal.getRoles();
427             Iterator JavaDoc rolesIterator = roles.iterator();
428             while(rolesIterator.hasNext())
429             {
430                 InfoGlueRole role = (InfoGlueRole)rolesIterator.next();
431                 
432                 Collection JavaDoc rolePropertiesList = RolePropertiesController.getController().getRolePropertiesList(role.getName(), languageId, db, true);
433                 Iterator JavaDoc rolePropertiesListIterator = rolePropertiesList.iterator();
434                 while(rolePropertiesListIterator.hasNext())
435                 {
436                     RoleProperties roleProperties = (RoleProperties)rolePropertiesListIterator.next();
437                     
438                     if(roleProperties != null && roleProperties.getLanguage().getLanguageId().equals(languageId))
439                     {
440                         Collection JavaDoc assets = roleProperties.getDigitalAssets();
441                         Iterator JavaDoc assetsIterator = assets.iterator();
442                         while(assetsIterator.hasNext())
443                         {
444                             DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
445                             if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
446                             {
447                                 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
448                                 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext);
449                                 break;
450                             }
451                         }
452                     }
453                 }
454                                     
455             }
456             
457             if(assetUrl.equals("") && useLanguageFallback)
458             {
459                 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
460                 if(!masterLanguageVO.getLanguageId().equals(languageId))
461                     return getPrincipalAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, deliveryContext);
462             }
463         }
464
465         if(assetUrl.equals(""))
466         {
467             List JavaDoc groups = infoGluePrincipal.getGroups();
468             Iterator JavaDoc groupsIterator = groups.iterator();
469             while(groupsIterator.hasNext())
470             {
471                 InfoGlueGroup group = (InfoGlueGroup)groupsIterator.next();
472                 
473                 Collection JavaDoc groupPropertiesList = GroupPropertiesController.getController().getGroupPropertiesList(group.getName(), languageId, db, true);
474                 Iterator JavaDoc groupPropertiesListIterator = groupPropertiesList.iterator();
475                 while(groupPropertiesListIterator.hasNext())
476                 {
477                     GroupProperties groupProperties = (GroupProperties)groupPropertiesListIterator.next();
478                     
479                     if(groupProperties != null && groupProperties.getLanguage().getLanguageId().equals(languageId))
480                     {
481                         Collection JavaDoc assets = groupProperties.getDigitalAssets();
482                         Iterator JavaDoc assetsIterator = assets.iterator();
483                         while(assetsIterator.hasNext())
484                         {
485                             DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
486                             if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
487                             {
488                                 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
489                                 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext);
490                                 break;
491                             }
492                         }
493                     }
494                 }
495                                     
496             }
497             
498             if(assetUrl.equals("") && useLanguageFallback)
499             {
500                 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
501                 if(!masterLanguageVO.getLanguageId().equals(languageId))
502                     return getPrincipalAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, deliveryContext);
503             }
504         }
505
506         return assetUrl;
507     }
508     
509     
510     /**
511      * Getting a digitalAsset for a Principal - used for personalisation.
512      * This method starts with getting the asset on the user and if it does not exist we check out the
513      * group-properties as well.
514      */

515     
516     public String JavaDoc getPrincipalThumbnailAssetUrl(Database db, InfoGluePrincipal infoGluePrincipal, String JavaDoc assetKey, Integer JavaDoc languageId, Integer JavaDoc siteNodeId, boolean useLanguageFallback, int width, int height, DeliveryContext deliveryContext) throws Exception JavaDoc
517     {
518         String JavaDoc assetUrl = "";
519         
520         if(infoGluePrincipal == null || assetKey == null)
521             return null;
522         
523         Collection JavaDoc userPropertiesList = UserPropertiesController.getController().getUserPropertiesList(infoGluePrincipal.getName(), languageId, db, true);
524         Iterator JavaDoc userPropertiesListIterator = userPropertiesList.iterator();
525         while(userPropertiesListIterator.hasNext())
526         {
527             UserProperties userProperties = (UserProperties)userPropertiesListIterator.next();
528     
529             if(userProperties != null && userProperties.getLanguage().getLanguageId().equals(languageId))
530             {
531                 Collection JavaDoc assets = userProperties.getDigitalAssets();
532                 Iterator JavaDoc assetsIterator = assets.iterator();
533                 while(assetsIterator.hasNext())
534                 {
535                     DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
536                     if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
537                     {
538                         SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
539                         assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext);
540                         break;
541                     }
542                 }
543             }
544         }
545         
546         if(assetUrl.equals(""))
547         {
548             List JavaDoc roles = infoGluePrincipal.getRoles();
549             Iterator JavaDoc rolesIterator = roles.iterator();
550             while(rolesIterator.hasNext())
551             {
552                 InfoGlueRole role = (InfoGlueRole)rolesIterator.next();
553                 
554                 Collection JavaDoc rolePropertiesList = RolePropertiesController.getController().getRolePropertiesList(role.getName(), languageId, db, true);
555                 Iterator JavaDoc rolePropertiesListIterator = rolePropertiesList.iterator();
556                 while(rolePropertiesListIterator.hasNext())
557                 {
558                     RoleProperties roleProperties = (RoleProperties)rolePropertiesListIterator.next();
559                     
560                     if(roleProperties != null && roleProperties.getLanguage().getLanguageId().equals(languageId))
561                     {
562                         Collection JavaDoc assets = roleProperties.getDigitalAssets();
563                         Iterator JavaDoc assetsIterator = assets.iterator();
564                         while(assetsIterator.hasNext())
565                         {
566                             DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
567                             if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
568                             {
569                                 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
570                                 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext);
571                                 break;
572                             }
573                         }
574                     }
575                 }
576                                     
577             }
578             
579             if(assetUrl.equals("") && useLanguageFallback)
580             {
581                 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
582                 if(!masterLanguageVO.getLanguageId().equals(languageId))
583                     return getPrincipalThumbnailAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, width, height, deliveryContext);
584             }
585         }
586     
587         if(assetUrl.equals(""))
588         {
589             List JavaDoc groups = infoGluePrincipal.getGroups();
590             Iterator JavaDoc groupsIterator = groups.iterator();
591             while(groupsIterator.hasNext())
592             {
593                 InfoGlueGroup group = (InfoGlueGroup)groupsIterator.next();
594                 
595                 Collection JavaDoc groupPropertiesList = GroupPropertiesController.getController().getGroupPropertiesList(group.getName(), languageId, db, true);
596                 Iterator JavaDoc groupPropertiesListIterator = groupPropertiesList.iterator();
597                 while(groupPropertiesListIterator.hasNext())
598                 {
599                     GroupProperties groupProperties = (GroupProperties)groupPropertiesListIterator.next();
600                     
601                     if(groupProperties != null && groupProperties.getLanguage().getLanguageId().equals(languageId))
602                     {
603                         Collection JavaDoc assets = groupProperties.getDigitalAssets();
604                         Iterator JavaDoc assetsIterator = assets.iterator();
605                         while(assetsIterator.hasNext())
606                         {
607                             DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
608                             if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
609                             {
610                                 SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
611                                 assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext);
612                                 break;
613                             }
614                         }
615                     }
616                 }
617                                     
618             }
619             
620             if(assetUrl.equals("") && useLanguageFallback)
621             {
622                 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
623                 if(!masterLanguageVO.getLanguageId().equals(languageId))
624                     return getPrincipalThumbnailAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, width, height, deliveryContext);
625             }
626         }
627     
628         return assetUrl;
629     }
630     
631     
632     /**
633      * Getting a property for a Principal - used for personalisation.
634      * This method starts with getting the property on the user and if it does not exist we check out the
635      * group-properties as well. The value in question is a map - name-value.
636      */

637     /*
638     public Map getPrincipalPropertyHashValues(Database db, InfoGluePrincipal infoGluePrincipal, String propertyName, Integer languageId, Integer siteNodeId, boolean useLanguageFallback, boolean escapeSpecialCharacters) throws Exception
639     {
640         Properties properties = new Properties();
641         
642         String attributeValue = getPrincipalPropertyValue(db, infoGluePrincipal, propertyName, languageId, siteNodeId, useLanguageFallback, escapeSpecialCharacters);
643         
644         ByteArrayInputStream is = new ByteArrayInputStream(attributeValue.getBytes("UTF-8"));
645
646         properties.load(is);
647         
648         return properties;
649     }
650     */

651
652 }
653
Popular Tags