001: /*
002: * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions
006: * are met:
007: *
008: * - Redistributions of source code must retain the above copyright
009: * notice, this list of conditions and the following disclaimer.getc
010: *
011: * - Redistribution in binary form must reproduce the above copyright
012: * notice, this list of conditions and the following disclaimer in
013: * the documentation and/or other materials provided with the
014: * distribution.
015: *
016: * Neither the name of Sun Microsystems, Inc. or the names of
017: * contributors may be used to endorse or promote products derived
018: * from this software without specific prior written permission.
019: *
020: * This software is provided "AS IS," without a warranty of any
021: * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
022: * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
023: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
024: * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
025: * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
026: * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
027: * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
028: * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
029: * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
030: * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,
031: * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
032: *
033: * You acknowledge that Software is not designed, licensed or intended
034: * any nuclear facility.
035: */
036: package com.sun.portal.community.mc;
037:
038: import java.util.Map;
039: import java.util.Set;
040: import java.util.Properties;
041: import java.util.regex.Pattern;
042:
043: /**
044: * Provides access to operations that target >1 communities, and are not
045: * specific to any user.
046: * <p>
047: * Clients obtain instances of <CODE>CMCNodeManager</CODE> objects
048: * through a <CODE>CommunityFactory</CODE> object.
049: */
050: public interface CMCNodeManager {
051: /**
052: * Initialize this CMCNodeManager object.
053: * <p>
054: * This method should not be called by clients.
055: * The <CODE>CMCFactory</CODE> object
056: * calls this method before returning <CODE>CMCNodeManager</CODE> object instances.
057: * @param p a <CODE>Properties</CODE> object, used to initialize the <CODE>CMCNodeManager</CODE> object.
058: * @throws com.sun.portal.community.mc.CMCException if there is a problem initializing this object.
059: */
060: public void init(Properties p) throws CMCException;
061:
062: /**
063: * Get the count of users in communities targeted by the given set of
064: * <CODE>CMCPrincipal</CODE> objects.
065: * @param communityPrincipals the Set of <CODE>CMCPrincipal</CODE> objects to count users on.
066: * @throws com.sun.portal.community.mc.CMCException if there is a problem getting the user counts.
067: * @return a <CODE>Map</CODE>, where the key is a <CODE>CMCPrincipal</CODE> object,
068: * and the value is an
069: * <CODE>Integer</CODE> object indicating the
070: * number of unique users in this community,
071: * across all roles.
072: */
073: public Map getUserCounts(Set communityPrincipals)
074: throws CMCException;
075:
076: /**
077: * Get the count of users in communities targeted by the given set of
078: * <CODE>CMCPrincipal</CODE> objects, for the given roles targeted by the
079: * set of <CODE>CMCRolePrincipal</CODE> objects.
080: * @param communityPrincipals the Set of <CODE>CMCPrincipal</CODE> objects to count users on.
081: * @param rolePrincipals the Set of CMCRolePrinicpal objects to count users on.
082: * @throws com.sun.portal.community.mc.CMCException if there is a problem getting the user counts.
083: * @return a <CODE>Map</CODE>, where the key is a
084: * <CODE>ConfigTable.ConfigKey</CODE> object,
085: * and the value is an
086: * <CODE>Integer</CODE> object indicating the
087: * number of unique users for the community-role pair targeted by the
088: * <CODE>ConfigTable.ConfigKey</CODE> object.
089: */
090: public Map getRoleUserCounts(Set communityPrincipals,
091: Set rolePrincipals) throws CMCException;
092:
093: /**
094: * Get the set of matching community principals.
095: *
096: * A match occurs when either the community name or description matches the
097: * given pattern.
098: * @param p a <code>Pattern</code> object, the pattern to match.
099: * @param nameOnly boolean flag indicating whether to match community name only or not
100: * @throws com.sun.portal.community.mc.CMCException if a problem occurs
101: * @return a <code>Set</code> of <code>CMCPrincipal</code> objects, the matching
102: * community principals.
103: */
104: public Set match(Pattern p, boolean nameOnly) throws CMCException;
105: }
|