/********************************************************************************** * $URL$ * $Id$ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.portal.charon.site; import javax.servlet.http.HttpServletRequest; import org.sakaiproject.component.api.ServerConfigurationService; import org.sakaiproject.exception.IdUnusedException; import org.sakaiproject.exception.PermissionException; import org.sakaiproject.portal.api.SiteView; import org.sakaiproject.portal.api.SiteNeighbourhoodService; import org.sakaiproject.site.api.Site; import org.sakaiproject.site.api.SiteService; import org.sakaiproject.tool.api.Session; import org.sakaiproject.user.api.PreferencesService; /** * @author ieb */ public class CurrentSiteViewImpl implements SiteView { protected PortalSiteHelperImpl siteHelper; protected HttpServletRequest request; protected String currentSiteId; protected String prefix; protected String toolContextPath; protected Session session; protected String myWorkspaceSiteId; protected boolean loggedIn; protected boolean resetTools = false; private Object siteMap; private boolean initDone; private boolean includeSummary; private boolean doPages; private boolean expandSite; public CurrentSiteViewImpl(PortalSiteHelperImpl siteHelper, SiteNeighbourhoodService siteNeighbourhoodService, HttpServletRequest request, Session session, String currentSiteId, SiteService siteService, ServerConfigurationService serverConfigurationService, PreferencesService preferencesService) { this.siteHelper = siteHelper; this.request = request; this.currentSiteId = currentSiteId; this.session = session; Site myWorkspaceSite = siteHelper.getMyWorkspace(session); loggedIn = session.getUserId() != null; if (myWorkspaceSite != null) { myWorkspaceSiteId = myWorkspaceSite.getId(); } initDone = false; } private void init() { if (initDone) return; try { Site site = siteHelper.getSiteVisit(currentSiteId); siteMap = siteHelper .convertSiteToMap(request, site, prefix, currentSiteId, myWorkspaceSiteId, includeSummary, /* expandSite */true, resetTools, doPages, toolContextPath, loggedIn); } catch (IdUnusedException e) { siteMap = null; } catch (PermissionException e) { siteMap = null; } } /* * (non-Javadoc) * * @see org.sakaiproject.portal.api.SiteView#isEmpty() */ public boolean isEmpty() { init(); return (siteMap == null); } /* * (non-Javadoc) * * @see org.sakaiproject.portal.api.SiteView#setPrefix(java.lang.String) */ public void setPrefix(String prefix) { this.prefix = prefix; } /* * (non-Javadoc) * * @see org.sakaiproject.portal.api.SiteView#setToolContextPath(java.lang.String) */ public void setToolContextPath(String toolContextPath) { this.toolContextPath = toolContextPath; } /* * (non-Javadoc) * * @see org.sakaiproject.portal.api.SiteView#setResetTools(boolean) */ public void setResetTools(boolean resetTools) { this.resetTools = resetTools; } /* * (non-Javadoc) * * @see org.sakaiproject.portal.api.SiteView#getRenderContextObject() */ public Object getRenderContextObject() { init(); return siteMap; } /* * (non-Javadoc) * * @see org.sakaiproject.portal.api.SiteView#setDoPages(boolean) */ public void setDoPages(boolean doPages) { this.doPages = doPages; } /* * (non-Javadoc) * * @see org.sakaiproject.portal.api.SiteView#setIncludeSummary(boolean) */ public void setIncludeSummary(boolean includeSummary) { this.includeSummary = includeSummary; } /* (non-Javadoc) * @see org.sakaiproject.portal.api.SiteView#setExpandSite(boolean) */ public void setExpandSite(boolean expandSite) { this.expandSite = expandSite; } }