class Admin {
private String aid ;
private String password ;
private int flag ;
private Group groups [] ; // 可能存在多个组
public Admin() {}
public Admin(String aid,String password,int flag) {
this.aid = aid ;
this.password = password ;
this.flag = flag ;
}
public void setGroups(Group groups []) {
this.groups = groups ;
}
public Group [] getGroups() {
return this.groups ;
}
public String getInfo() {
return "管理员编号:" + this.aid + ",密码:" + this.password + ",级别:" + (this.flag == 0 ? "超级管理员" : "普通管理员") ;
}
}
class Group {
private int gid ;
private String name ;
private String note ;
private Admin admins [] ;
private Privilege privileges [] ;
public Group() {}
public Group(int gid,String name,String note) {
this.gid = gid ;
this.name = name ;
this.note = note ;
}
public void setAdmins(Admin admins[]){
this.admins = admins ;
}
public Admin [] getAdmins() {
return this.admins ;
}
public Privilege [] getPrivileges() {
return this.privileges ;
}
public void setPrivileges(Privilege privileges[]) {
this.privileges = privileges ;
}
public String getInfo() {
return "管理员组编号:" + this.gid + ",名称:" + this.name + ",描述:" + this.note ;
}
}
class Privilege {
private int pid ;
private String name ;
private String url ;
private Group groups [] ;
public Privilege() {}
public Privilege(int pid,String name,String url) {
this.pid = pid ;
this.name = name ;
this.url = url ;
}
public void setGroups(Group groups[]) {
this.groups = groups ;
}
public Group [] getGroups() {
return this.groups ;
}
public String getInfo() {
return "权限编号:" + this.pid + ",名称:" + this.name + ",地址:" + this.url ;
}
}
public class TestDemo {
public static void main(String args[]) {
// 第一层次:设置关系
// 1、设置管理员数据
Admin a1 = new Admin("超级管理员","hello",0) ;
Admin a2 = new Admin("信息管理员","hello",1) ;
Admin a3 = new Admin("数据管理员","hello",1) ;
// 2、设置管理员组
Group g1 = new Group(1,"超级管理员组","-") ;
Group g2 = new Group(2,"普通管理员组","-") ;
// 3、设置权限数据
Privilege priA = new Privilege(2001,"管理员维护","-") ;
Privilege priB = new Privilege(2002,"业务流维护","-") ;
Privilege priC = new Privilege(2003,"数据维护","-") ;
Privilege priD = new Privilege(2004,"审核维护","-") ;
Privilege priE = new Privilege(2005,"员工维护","-") ;
// 4、设置管理员和管理员组的关系
a1.setGroups(new Group[] {g1,g2}) ;
a2.setGroups(new Group[] {g2}) ;
a3.setGroups(new Group[] {g2}) ;
g1.setAdmins(new Admin[] {a1}) ;
g2.setAdmins(new Admin[] {a1,a2,a3}) ;
// 4、设置管理员组和权限关系
g1.setPrivileges(new Privilege[] {priA,priB,priC,priD,priE}) ;
g2.setPrivileges(new Privilege[] {priB,priC,priD}) ;
priA.setGroups(new Group[]{g1}) ;
priB.setGroups(new Group[]{g1,g2}) ;
priC.setGroups(new Group[]{g1,g2}) ;
priD.setGroups(new Group[]{g1,g2}) ;
priE.setGroups(new Group[]{g1}) ;
// 第二层次:根据关系取数据
// 1、根据一个管理员取得此管理员所在的所有管理员组,以及每个管理员组所具备的权限
System.out.println(a1.getInfo()) ;
for (int x = 0 ; x < a1.getGroups().length ; x ++) {
System.out.println("\t|- " + a1.getGroups()[x].getInfo()) ;
for(int y = 0 ; y < a1.getGroups()[x].getPrivileges().length ; y ++) {
System.out.println("\t\t|- " + a1.getGroups()[x].getPrivileges()[y].getInfo())
;
}
}
System.out.println("===================================") ;
// 2、根据一个管理员组取得此管理员组下的所有管理员和权限信息
System.out.println(g1.getInfo()) ;
for (int x = 0 ; x < g1.getAdmins().length ; x ++) {
System.out.println("\t|- " + g1.getAdmins()[x].getInfo()) ;
}
for (int x = 0 ; x < g1.getPrivileges().length ; x ++) {
System.out.println("\t|- " + g1.getPrivileges()[x].getInfo()) ;
}
System.out.println("===================================") ;
// 3、根据一个权限取得具备此权限的所有管理员组,以及每个管理员组的管理员信息
System.out.println(priC.getInfo()) ;
for (int x = 0 ; x < priC.getGroups().length ; x ++) {
System.out.println("\t|- " + priC.getGroups()[x].getInfo()) ;
for (int y = 0 ; y < priC.getGroups()[x].getAdmins().length ; y ++) {
System.out.println("\t\t|- " +
priC.getGroups()[x].getAdmins()[y].getInfo()) ;
}
}
}
}
|