/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums/ui/PermissionBean.java $ * $Id: PermissionBean.java 9227 2006-05-15 15:02:42Z cwen@iupui.edu $ *********************************************************************************** * * 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.tool.messageforums.ui; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.faces.model.SelectItem; import org.sakaiproject.api.app.messageforums.DBMembershipItem; import org.sakaiproject.api.app.messageforums.MessageForumsTypeManager; import org.sakaiproject.api.app.messageforums.PermissionLevel; import org.sakaiproject.api.app.messageforums.PermissionLevelManager; import org.sakaiproject.component.cover.ComponentManager; import org.sakaiproject.util.ResourceLoader; import org.sakaiproject.api.app.messageforums.PermissionsMask; public class PermissionBean { /** Path to bundle messages */ private static final String MESSAGECENTER_BUNDLE = "org.sakaiproject.api.app.messagecenter.bundle.Messages"; /** Keys for bundle messages */ public static final String OWN = "perm_own"; public static final String ALL = "perm_all"; public static final String NONE = "perm_none"; private String selectedLevel; private DBMembershipItem item; private PermissionLevelManager permissionLevelManager; public PermissionBean(DBMembershipItem item, PermissionLevelManager permissionLevelManager) { this.permissionLevelManager = permissionLevelManager; this.item = item; selectedLevel= item.getPermissionLevel().getName(); } /** * @return Returns the selectedLevel. */ public String getSelectedLevel() { return selectedLevel; } /** * @param selectedLevel * The selectedLevel to set. */ public void setSelectedLevel(String selectedLevel) { this.selectedLevel = selectedLevel; setPermissionsForLevel(selectedLevel); } private void setPermissionsForLevel(String selectedLevel) { if (selectedLevel != null) { if (!"Custom".equals(selectedLevel)) { PermissionLevel permLevel= permissionLevelManager.getPermissionLevelByName(selectedLevel); this.item.setPermissionLevel(permLevel); } else { MessageForumsTypeManager typeManager = (MessageForumsTypeManager) ComponentManager.get("org.sakaiproject.api.app.messageforums.MessageForumsTypeManager"); if(!this.item.getPermissionLevel().getTypeUuid().equals(typeManager.getCustomLevelType())) { PermissionLevel permLevel = permissionLevelManager.createPermissionLevel(selectedLevel, typeManager.getCustomLevelType(), new PermissionsMask()); this.item.setPermissionLevel(permLevel); } } } } public boolean getChangeSettings() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getChangeSettings() != null) return item.getPermissionLevel().getChangeSettings().booleanValue(); else return false; } public void setChangeSettings(boolean changeSettings) { this.item.getPermissionLevel().setChangeSettings( Boolean.valueOf(changeSettings)); } public boolean getDeleteAny() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getDeleteAny() != null) return item.getPermissionLevel().getDeleteAny().booleanValue(); else return false; } public void setDeleteAny(boolean deleteAny) { this.item.getPermissionLevel().setDeleteAny(Boolean.valueOf(deleteAny)); } public boolean getDeleteOwn() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getDeleteOwn() != null) return item.getPermissionLevel().getDeleteOwn().booleanValue(); else return false; } public void setDeleteOwn(boolean deleteOwn) { this.item.getPermissionLevel().setDeleteOwn(Boolean.valueOf(deleteOwn)); } public boolean getMarkAsRead() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getMarkAsRead() != null) return item.getPermissionLevel().getMarkAsRead().booleanValue(); else return false; } public void setMarkAsRead(boolean markAsRead) { this.item.getPermissionLevel().setMarkAsRead(Boolean.valueOf(markAsRead)); } public boolean getModeratePostings() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getModeratePostings() != null) return item.getPermissionLevel().getModeratePostings().booleanValue(); else return false; } public void setModeratePostings(boolean moderatePostings) { this.item.getPermissionLevel().setModeratePostings( Boolean.valueOf(moderatePostings)); } public boolean getMovePosting() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getMovePosting() != null) return item.getPermissionLevel().getMovePosting().booleanValue(); else return false; } public void setMovePosting(boolean movePosting) { this.item.getPermissionLevel().setMovePosting(Boolean.valueOf(movePosting)); } public boolean getNewForum() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getNewForum() != null) return item.getPermissionLevel().getNewForum().booleanValue(); else return false; } public void setNewForum(boolean newForum) { this.item.getPermissionLevel().setNewForum(Boolean.valueOf(newForum)); } public boolean getNewResponse() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getNewResponse() != null) return item.getPermissionLevel().getNewResponse().booleanValue(); else return false; } public void setNewResponse(boolean newResponse) { this.item.getPermissionLevel().setNewResponse(Boolean.valueOf(newResponse)); } public boolean getNewTopic() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getNewTopic() != null) return item.getPermissionLevel().getNewTopic().booleanValue(); else return false; } public void setNewTopic(boolean newTopic) { this.item.getPermissionLevel().setNewTopic(Boolean.valueOf(newTopic)); } public boolean getPostToGradebook() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getPostToGradebook() != null) return item.getPermissionLevel().getPostToGradebook() .booleanValue(); else return false; } public void setPostToGradebook(boolean postGrades) { this.item.getPermissionLevel().setPostToGradebook(Boolean.valueOf(postGrades)); } public boolean getRead() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getRead() != null) return item.getPermissionLevel().getRead().booleanValue(); else return false; } public void setRead(boolean read) { this.item.getPermissionLevel().setRead(Boolean.valueOf(read)); } public boolean getResponseToResponse() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getNewResponseToResponse() != null) return item.getPermissionLevel().getNewResponseToResponse().booleanValue(); else return false; } public void setResponseToResponse(boolean responseToResponse) { this.item.getPermissionLevel().setNewResponseToResponse( Boolean.valueOf(responseToResponse)); } public boolean getReviseAny() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getReviseAny() != null) return item.getPermissionLevel().getReviseAny().booleanValue(); else return false; } public void setReviseAny(boolean reviseAny) { this.item.getPermissionLevel().setReviseAny(Boolean.valueOf(reviseAny)); } public boolean getReviseOwn() { if (item != null && item.getPermissionLevel() != null && item.getPermissionLevel().getReviseOwn() != null) return item.getPermissionLevel().getReviseOwn().booleanValue(); else return false; } public void setReviseOwn(boolean reviseOwn) { this.item.getPermissionLevel().setReviseOwn(Boolean.valueOf(reviseOwn)); } /** * @return Returns the deletePosting. */ public String getDeletePostings() { if(getDeleteAny()) { return getResourceBundleString(ALL); } if(getDeleteOwn()) { return getResourceBundleString(OWN); } return getResourceBundleString(NONE); } /** * @param deletePosting The deletePosting to set. */ public void setDeletePostings(String deletePosting) { if(deletePosting.equals(getResourceBundleString(ALL))) { setDeleteAny(true); setDeleteOwn(true); } else if(deletePosting.equals(getResourceBundleString(OWN))) { setDeleteAny(false); setDeleteOwn(true); } else if(deletePosting.equals(getResourceBundleString(NONE))) { setDeleteAny(false); setDeleteOwn(false); } } /** * @return Returns the revisePostings. */ public String getRevisePostings() { String test = getResourceBundleString(NONE); if(getReviseAny()) { test = getResourceBundleString(ALL); } if(getReviseOwn()) { test = getResourceBundleString(OWN); } // return getResourceBundleString(NONE); return test; } /** * @param revisePostings The revisePostings to set. */ public void setRevisePostings(String revisePostings) { if(revisePostings.equals(getResourceBundleString(ALL))) { setReviseAny(true); setReviseOwn(false); } else if(revisePostings.equals(getResourceBundleString(OWN))) { setReviseAny(false); setReviseOwn(true); } else if(revisePostings.equals(getResourceBundleString(NONE))) { setReviseAny(false); setReviseOwn(false); } } /** * @return Returns the item. */ public DBMembershipItem getItem() { return item; } /** * @return Returns the role or group name. */ public String getName() { return item.getName(); } /** * Pulls messages from bundle * * @param key * Key of message to get * * @return * String for key passed in or [missing: key] if not found */ public static String getResourceBundleString(String key) { final ResourceLoader rb = new ResourceLoader(MESSAGECENTER_BUNDLE); return rb.getString(key); } }