/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/metaobj/trunk/metaobj-impl/api-impl/src/java/org/sakaiproject/metaobj/worksite/mgt/impl/WorksiteManagerImpl.java $
* $Id: WorksiteManagerImpl.java 128044 2013-08-01 03:14:24Z botimer@umich.edu $
***********************************************************************************
*
* Copyright (c) 2004, 2005, 2006, 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.metaobj.worksite.mgt.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.authz.api.AuthzGroup;
import org.sakaiproject.authz.api.GroupNotDefinedException;
import org.sakaiproject.authz.cover.AuthzGroupService;
import org.sakaiproject.exception.IdUnusedException;
import org.sakaiproject.metaobj.shared.mgt.IdManager;
import org.sakaiproject.metaobj.shared.model.Id;
import org.sakaiproject.metaobj.shared.model.OspException;
import org.sakaiproject.metaobj.worksite.mgt.WorksiteManager;
import org.sakaiproject.site.api.Site;
import org.sakaiproject.site.api.SitePage;
import org.sakaiproject.site.api.ToolConfiguration;
import org.sakaiproject.site.cover.SiteService;
import org.sakaiproject.tool.api.Placement;
import org.sakaiproject.tool.api.ToolSession;
import org.sakaiproject.tool.cover.SessionManager;
import org.sakaiproject.tool.cover.ToolManager;
import java.util.*;
public class WorksiteManagerImpl implements WorksiteManager {
protected final transient Log logger = LogFactory.getLog(getClass());
private IdManager idManager = null;
public List getUserSites() {
return getUserSites(null);
}
public List getUserSites(Map properties) {
// process all the sites
return getUserSites(properties, null);
}
public List getUserSites(Map properties, List siteTypes) {
List mySites;
if ((properties == null || properties.isEmpty()) && (siteTypes == null || siteTypes.isEmpty())) {
mySites = SiteService.getUserSites();
}
else {
mySites = SiteService.getSites(org.sakaiproject.site.api.SiteService.SelectionType.ACCESS,
siteTypes, null, properties, org.sakaiproject.site.api.SiteService.SortType.NONE, null);
}
if (mySites.size() > 0) {
Collections.sort(mySites);
}
return mySites;
}
public Id getCurrentWorksiteId() {
Placement currentPlacement = ToolManager.getCurrentPlacement();
if (currentPlacement == null) {
currentPlacement = getToolSessionPlacement();
if (currentPlacement == null) {
return null;
}
}
String id = currentPlacement.getContext();
if (id != null) {
return getIdManager().getId(id);
}
return null;
}
protected Placement getToolSessionPlacement() {
ToolSession session = SessionManager.getCurrentToolSession();
if (session == null) {
return null;
}
String placementId = session.getPlacementId();
return getTool(placementId);
}
public List getSiteTools(String toolId, Site site) {
List tools = new ArrayList();
List pages = site.getPages();
for (Iterator i = pages.iterator(); i.hasNext();) {
SitePage page = (SitePage) i.next();
for (Iterator j = page.getTools().iterator(); j.hasNext();) {
ToolConfiguration tool = (ToolConfiguration) j.next();
if (toolId == null) {
tools.add(tool);
}
else if (toolId.equals(tool.getToolId())) {
tools.add(tool);
}
}
}
return tools;
}
public Site getSite(String siteId) {
try {
return SiteService.getSite(siteId);
}
catch (IdUnusedException e) {
logger.error("", e);
throw new OspException(e);
}
}
public AuthzGroup getSiteRealm(String siteId) {
AuthzGroup siteRealm = null;
try {
siteRealm = AuthzGroupService.getAuthzGroup("/site/" +
siteId);
}
catch (GroupNotDefinedException e) {
logger.error("", e);
throw new OspException(e);
}
return siteRealm;
}
public ToolConfiguration getTool(String id) {
return SiteService.findTool(id);
}
public boolean isUserInSite(String siteId) {
return SiteService.allowAccessSite(siteId);
}
public IdManager getIdManager() {
return idManager;
}
public void setIdManager(IdManager idManager) {
this.idManager = idManager;
}
}