001: /**********************************************************************************
002: * $URL: https://source.sakaiproject.org/svn/access/trunk/access-impl/impl/src/java/org/sakaiproject/access/tool/AccessServlet.java $
003: * $Id: AccessServlet.java 17063 2006-10-11 19:48:42Z jimeng@umich.edu $
004: ***********************************************************************************
005: *
006: * Copyright (c) 2006 The Sakai Foundation.
007: *
008: * Licensed under the Educational Community License, Version 1.0 (the "License");
009: * you may not use this file except in compliance with the License.
010: * You may obtain a copy of the License at
011: *
012: * http://www.opensource.org/licenses/ecl1.php
013: *
014: * Unless required by applicable law or agreed to in writing, software
015: * distributed under the License is distributed on an "AS IS" BASIS,
016: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: * See the License for the specific language governing permissions and
018: * limitations under the License.
019: *
020: **********************************************************************************/package org.sakaiproject.api.privacy;
021:
022: import java.util.Map;
023: import java.util.Set;
024:
025: /**
026: * <p>PrivacyManager maintains and queries user privacy settings</p>
027: *
028: * <pre>
029: * An implementation can modify the behavior of the Privacy Service within sakai.properties:
030: *
031: * privacy.manager.defaultViewable=true|false
032: * a 'true' value will set privacy enabled for a user whose privacy settings are unknown
033: * a 'false' value will set privacy disabled for a user whose privacy settings are unknown
034: * If this value is not set, the default behavior will be to show users or make them viewable.
035: *
036: * privacy.manager.overrideViewable=true|false
037: * a 'true' value will make all users viewable in the system
038: * a 'false' value will make all users hidden in the system
039: * Do not set this value for normal operation (non overridden behavior).
040: *
041: * privacy.manager.userRecordHasPrecedence=true|false
042: * a 'true' value indicates that a user record has precedence over a system record
043: * a 'false' value indicates that a system record has precedence over a user record
044: *
045: * </pre>
046: *
047: */
048: public interface PrivacyManager {
049: public static final String SYSTEM_RECORD_TYPE = "system_record";
050:
051: public static final String USER_RECORD_TYPE = "user_record";
052:
053: // Tool methods ------------------------------------------------------
054:
055: /**
056: * Determine user privacy within the specified context.
057: * @param contextId
058: * @param userId (UUID)
059: * @return true if privacy is enabled for the user, false otherwise
060: */
061: public boolean isViewable(String contextId, String userId);
062:
063: /**
064: * Get a set of users who have privacy disabled within a context. (Visible)
065: * @param contextId
066: * @param userIds
067: * @return Set of <code>org.sakakproject.service.legacy.User.id</code> objects (UUID)
068: */
069: Set findViewable(String contextId, Set userIds);
070:
071: /**
072: * Get a set of users who have privacy enabled within a context. (Hidden)
073: * @param contextId
074: * @param userIds
075: * @return Set of <code>org.sakakproject.service.legacy.User.id</code> objects (UUID)
076: */
077: Set findHidden(String contextId, Set userIds);
078:
079: // Batch / Privacy Management methods --------------------------------
080:
081: /**
082: * Get the state of the users within the specified context filtered by a Boolean value.
083: * Implementation should delegate to AuthzGroupService to get users from Realm.
084: * @param contextId
085: * @param value filter (True, False, NULL)
086: * @param recordType is a UUID i.e. (getSystemRecordType(), getUserRecordType())
087: * @return Set of users who satisfy the criteria
088: */
089: Set getViewableState(String contextId, Boolean value,
090: String recordType);
091:
092: /**
093: * Get the state of the users within the specified context.
094: * @param contextId
095: * @param recordType is a UUID i.e. (getSystemRecordType(), getUserRecordType())
096: * @return Map {key=userId, value=Boolean}
097: */
098: Map getViewableState(String contextId, String recordType);
099:
100: /**
101: * Set user's privacy setting within the specified context given a record type.
102: * @param contextId
103: * @param userId (UUID)
104: * @param value using three-valued logic (True, False, NULL)
105: * @param recordType is a UUID i.e. (getSystemRecordType(), getUserRecordType())
106: */
107: void setViewableState(String contextId, String userId,
108: Boolean value, String recordType);
109:
110: /**
111: * Set the state for each entry in the userMap.
112: * @param contextId
113: * @param userMap is a Map {key=userId, value=Boolean}
114: * @param recordType is a UUID i.e. (getSystemRecordType(), getUserRecordType())
115: */
116: void setViewableState(String contextId, Map userViewableState,
117: String recordType);
118:
119: }
|