⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 groupmanager.java

📁 使用工具jublider开发的一个聊天室实现基本功能,
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                else if ("admin".equals(val))
                    r = IUserStates.ROLE_GOD;
                if (!rUser.hasRight(r))
                    return null;
                g.setMinRight(r);
            } else if ("autosulist".equals(low)) {
                g.setAutoSu (val.split(","));
            } else if ("lockprotected".equals(low) 
                        && "true".equals(val)) {
                if (!g.hasState(IGroupState.OPEN))
                    g.setState (IGroupState.OPEN);
                g.setState (IGroupState.LOCKPROTECTED);
            } else if ("autosu".equals(low)
                        && "false".equals(val)) {
                g.unsetState (IGroupState.AUTO_SU_FIRST);
            } else if ("allowsu".equals(low)
                        && "false".equals(val)) {
                g.unsetState (IGroupState.ALLOW_SU);
            }  else if ("nosufirst".equals(low)
                    && "true".equals(val)) {
                g.setState (IGroupState.NO_SU_FIRST);
            }  else if ("minuserrolesu".equals(low)) {
                if ("vip".equals(val))
                    g.setMinRightSu(IUserStates.ROLE_VIP);
                else if ("moderator".equals(val))
                    g.setMinRightSu(IUserStates.IS_MODERATOR);
                else if ("admin".equals(val))
                    g.setMinRightSu(IUserStates.ROLE_GOD);
                else
                    Server.log (this, "minuserrolesu has wrong value '" + val + "' for group " + g.getRawName(), Server.MSG_STATE, Server.LVL_MINOR);
            } else if ("soundprooffor".equals(low)) {
                String[] roles = val.toLowerCase().split(",");
                for (int j = 0; j < roles.length; j++) {
                    String curr = roles[j].trim();
                    if ("vip".equals(curr))
                        g.setState(IGroupState.SND_PRF_VIP);
					else if ("guest".equals(curr))
						g.setState(IGroupState.SND_PRF_GUEST);
                    else if ("moderator".equals(curr))
                        g.setState(IGroupState.SND_PRF_MODERATOR);
                    else if ("admin".equals(curr))
                        g.setState(IGroupState.SND_PRF_GOD);
                    else if ("user".equals(curr))
                        g.setState(IGroupState.SND_PRF_USER);
                }
            } else if ("suforbidden".equals(low)) {
                g.setSuForbiddenMembership(val);
            } else if ("memberroom".equals(low)) {
                String[] memberships = val.toLowerCase().split(",");
                Vector msObjects = new Vector();
                for (int j = 0; j < memberships.length; j++) {
                    Membership cms = MembershipManager.instance.getMembership(memberships[j]);
                    if (cms == null)
                        continue;
                    msObjects.add(cms);
                }
                g.setMemberRoom ((Membership[]) msObjects.toArray(new Membership[0]));
            } else if ("deactivatehitdice".equals(low) && "true".equals(val)){
            	g.setState (IGroupState.DEACTIVATE_HITDICE);
            } else if (low.startsWith("extension.")) {
                String namespace = low.substring(10);
                int idx = namespace.indexOf(".");
                if (idx == -1) {
                    Server.log (this, "invalid GroupPolicy for extension: " + low, Server.MSG_ERROR, Server.LVL_MINOR);
                    continue;
                }
                String propName = namespace.substring(idx+1);
                namespace = namespace.substring(0,idx);
                Properties p = (Properties) map.get(namespace);
                if (p==null) {
                    p = new Properties();
                    map.put(namespace, p);
                }
                p.setProperty(propName, val);
            }
        }
        if (map.size() > 0) {
            Vector plugins = new Vector();
            for (Iterator i = map.keySet().iterator(); i.hasNext(); ) {
                String namespace = (String) i.next();
                Properties p = (Properties) map.get(namespace);
                String url = p.getProperty("url");
                Object o;
                synchronized (pluginStore) {
                    o = pluginStore.get(url);
                    if (o == null) {
                        try {
                            Class piClass = Class.forName(url);
                            Method getInstance = piClass.getMethod("getMasterInstance", null);
                            if (getInstance==null)
                                throw new Exception ("Specified plugin-object doesn't implement static getMasterInstance");
                            o = getInstance.invoke(null, null);
                            if (!(o instanceof IGroupPlugin))
                                throw new Exception ("Specified plugin-object doesn't implement interface IGroupPlugin");
                            pluginStore.put(url, o);
                        } catch (Exception e) {
                            Server.log (this, "invalid url for extension: " + url, Server.MSG_ERROR, Server.LVL_MINOR);
                            continue;
                        }
                    }
                }
                try {
                    plugins.add(((IGroupPlugin) o).instanceForGroup(namespace, g, p));
                } catch (Exception e) {
                    Server.debug(this, "catched exception while getting GroupPlugin-instance", e, Server.MSG_STATE, Server.LVL_MAJOR);
                }
            }
            g.setPlugins((IGroupPlugin[]) plugins.toArray(new IGroupPlugin[0]));
        }
        return g;
    }

	public int openGroupsCount() {
		return grps.size();
	}

    public synchronized Group[] currentGroupList () {
        if (grpsArr==null)
            grpsArr=(Group[]) grps.values().toArray(new Group[0]);
        return grpsArr; 
    } 

    public void updateStartingGroups (String[] sgNames) {
        Vector curr = (Vector) startGroups.clone();
        Vector updt = new Vector ();
        for (int i = 0; i < sgNames.length; i++) {
            String[] c = sgNames[i].split("/");
            String key = c[0].trim().toLowerCase(); 
            updt.add(key);
            if (c.length>1)
                startGroupThemes.put(key, c[1]);
            else
                startGroupThemes.remove(key);
        }
        curr.removeAll(updt);
        updt.removeAll(startGroups);
        startGroups.addAll(updt);
        startGroups.removeAll(curr);
        synchronized (GroupManager.mgr) {
            for (Iterator i = updt.iterator(); i.hasNext(); ) {
                String cName = (String) i.next();
                Group g = (Group) grps.get(cName);
                if (g==null)
                    continue;
                g.setState(IGroupState.ENTRANCE);
            }
            for (Iterator i = curr.iterator(); i.hasNext(); ) {
                String cName = (String) i.next();
                Group g = (Group) grps.get(cName);
                if (g==null)
                    continue;
                g.unsetState(IGroupState.ENTRANCE);
            }
        }
    }

	public void updateModeratedGroups (Vector mg) {
   		Vector removed = (Vector) moderatedGroups.clone();
   		removed.removeAll(mg);
   		Vector added = (Vector) mg.clone();
   		added.removeAll(moderatedGroups);
   		for (Enumeration e = removed.elements(); e.hasMoreElements(); ) {
   			Group g = getGroup ((String) e.nextElement());
   			if (g==null)
   				continue;
			while (moderatedGroups.contains(g))
				moderatedGroups.remove(g);
   			g.unsetState (IGroupState.MODERATED);
   			g.setState(IGroupState.OPEN);
   		}
   		for (Enumeration e = added.elements(); e.hasMoreElements(); ) {
   			String gName = (String) e.nextElement();
   			moderatedGroups.add(gName);
   			Group g = getGroup (gName);
   			moderatedGroups.add(g);
   			if (g==null)
   				continue;
   			g.setState(IGroupState.MODERATED);
   			g.unsetState (IGroupState.OPEN);
   			
   		}
	}

    /**
     * @param grp The name of the group
     * @return true if this group is a startgroup, false if not
     */
    public boolean isStartingGroup(String grp) {
        return startGroups.contains(grp.trim().toLowerCase());
    }

    /**
     * update groupListLastChange
     */
    public void updateGroupListLastModified () {
        groupListLastChange=System.currentTimeMillis();
    }
    /**
     * @return last grouplist modification
     */
    public long groupListLastModified() {
        return groupListLastChange;
    }
    
    /**
     * @return last usercount modification
     */
    public long lastModified() {
        return lastModified;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -