package cn.newgxu.bbs.domain.group;
import java.util.List;
import cn.newgxu.bbs.domain.user.User;
/**
*
* @author polly
* @since 4.0.0
* @version $Revision 1.1$
*/
public class GroupManager {
public static final int BASIC_GROUP = 1;
public static final int FORUM_WEBMASTER_GROUP = 2;
public static final int AREA_WEBMASTER_GROUP = 3;
public static final int ADMINISTRATOR_GROUP = 4;
public static final int AUTHORIZATION_GROUP = 5;
/**
* 获取用户组类别 普通用户 GroupTypeId=1 斑竹 GroupTypeId=2 区管理员 GroupTypeId=3 超级管理员
* GroupTypeId=4 return UserGroup
*/
public static UserGroup getUserGroup(int groupTypeId) {
if (groupTypeId == BASIC_GROUP) {
return new BasicGroup();
} else if (groupTypeId == FORUM_WEBMASTER_GROUP) {
return new ForumWebmasterGroup();
} else if (groupTypeId == AREA_WEBMASTER_GROUP) {
return new AreaWebmasterGroup();
} else if (groupTypeId == ADMINISTRATOR_GROUP) {
return new AdministratorGroup();
} else if (groupTypeId == AUTHORIZATION_GROUP) {
return new AuthorizationGroup();
} else {
throw new RuntimeException("无法判断的用户组类型!");
}
}
public static UserGroup getUserGroup(int groupTypeId, int groupId) {
try {
return (UserGroup) getUserGroup(groupTypeId).getClass().getMethod(
"getCertainExist", new Class[] { int.class }).invoke(null,
groupId);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void changeGroup(User user, int groupTypeId, int groupId) {
UserGroup to = null;
// try {
// to = getUserGroup(groupTypeId, groupId);
// } catch (Exception e) {
// to = getUserGroup(groupTypeId).getGroupByExp(user.getExp());
// }
to = getUserGroup(groupTypeId).getGroupByExp(user.getExp());
if (to == null) {
throw new RuntimeException("无法根据用户经验值匹配正确的用户组,请选择!");
}
user.setGroupTypeId(to.getTypeId());
user.setGroupId(to.getId());
}
@SuppressWarnings("unchecked")
public static List<UserGroup> getGroups(int groupTypeId) {
try {
return (List<UserGroup>) getUserGroup(groupTypeId).getClass()
.getMethod("getGroups").invoke(null);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}