基础对象类:
public class Menu {
private int idx;
/**
* This property corresponds to db column <tt>module_id</tt>.
*/
private String moduleId;
/**
* This property corresponds to db column <tt>domain_id</tt>.
*/
private String domainId;
/**
* This property corresponds to db column <tt>module_name</tt>.
*/
private String moduleName;
/**
* This property corresponds to db column <tt>parent_module_id</tt>.
*/
private String parentModuleId;
/**
* This property corresponds to db column <tt>module_type</tt>.
*/
private String moduleType;
/**
* This property corresponds to db column <tt>leval</tt>.
*/
private int leval;
/**
* This property corresponds to db column <tt>url</tt>.
*/
private String url;
/**
* This property corresponds to db column <tt>refresh_flag</tt>.
*/
private String refreshFlag;
/**
* This property corresponds to db column <tt>status</tt>.
*/
private String status;
private int reset;
private int sort;
private Menu parent;
private List<Menu> childs=new ArrayList<Menu>();
}
package com.xxx;
import java.io.Serializable;
import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class ModuleDTO implements Comparable<ModuleDTO> , Serializable {
/** */
private static final long serialVersionUID = -5375294817851265857L;
/**
* This property corresponds to db column <tt>id</tt>.
*/
private long id;
/**
* This property corresponds to db column <tt>module_id</tt>.
*/
private String moduleId;
/**
* This property corresponds to db column <tt>domain_id</tt>.
*/
private String domainId;
/**
* This property corresponds to db column <tt>module_name</tt>.
*/
private String moduleName;
/**
* This property corresponds to db column <tt>parent_module_id</tt>.
*/
private String parentModuleId;
/**
* This property corresponds to db column <tt>module_type</tt>.
*/
private String moduleType;
/**
* This property corresponds to db column <tt>leval</tt>.
*/
private int leval;
/**
* This property corresponds to db column <tt>url</tt>.
*/
private String url;
/**
* This property corresponds to db column <tt>refresh_flag</tt>.
*/
private String refreshFlag;
/**
* This property corresponds to db column <tt>status</tt>.
*/
private String status;
/**
* This property corresponds to db column <tt>creator</tt>.
*/
private String creator;
/**
* This property corresponds to db column <tt>create_time</tt>.
*/
private Date createTime;
/**
* This property corresponds to db column <tt>modifier</tt>.
*/
private String modifier;
/**
* This property corresponds to db column <tt>modified_time</tt>.
*/
private Date modifiedTime;
/**
* This property corresponds to db column <tt>sort</tt>.
*/
private int sort;
/**
* This property corresponds to db column <tt>reset</tt>.
*/
private int reset;
/**
* Getter method for property <tt>id</tt>.
*
* @return property value of id
*/
public long getId() {
return id;
}
/**
* Setter method for property <tt>id</tt>.
*
* @param id value to be assigned to property id
*/
public void setId(long id) {
this.id = id;
}
/**
* Getter method for property <tt>moduleId</tt>.
*
* @return property value of moduleId
*/
public String getModuleId() {
return moduleId;
}
/**
* Setter method for property <tt>moduleId</tt>.
*
* @param moduleId value to be assigned to property moduleId
*/
public void setModuleId(String moduleId) {
this.moduleId = moduleId;
}
/**
* Getter method for property <tt>domainId</tt>.
*
* @return property value of domainId
*/
public String getDomainId() {
return domainId;
}
/**
* Setter method for property <tt>domainId</tt>.
*
* @param domainId value to be assigned to property domainId
*/
public void setDomainId(String domainId) {
this.domainId = domainId;
}
/**
* Getter method for property <tt>moduleName</tt>.
*
* @return property value of moduleName
*/
public String getModuleName() {
return moduleName;
}
/**
* Setter method for property <tt>moduleName</tt>.
*
* @param moduleName value to be assigned to property moduleName
*/
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
/**
* Getter method for property <tt>parentModuleId</tt>.
*
* @return property value of parentModuleId
*/
public String getParentModuleId() {
return parentModuleId;
}
/**
* Setter method for property <tt>parentModuleId</tt>.
*
* @param parentModuleId value to be assigned to property parentModuleId
*/
public void setParentModuleId(String parentModuleId) {
this.parentModuleId = parentModuleId;
}
/**
* Getter method for property <tt>moduleType</tt>.
*
* @return property value of moduleType
*/
public String getModuleType() {
return moduleType;
}
/**
* Setter method for property <tt>moduleType</tt>.
*
* @param moduleType value to be assigned to property moduleType
*/
public void setModuleType(String moduleType) {
this.moduleType = moduleType;
}
/**
* Getter method for property <tt>leval</tt>.
*
* @return property value of leval
*/
public int getLeval() {
return leval;
}
/**
* Setter method for property <tt>leval</tt>.
*
* @param leval value to be assigned to property leval
*/
public void setLeval(int leval) {
this.leval = leval;
}
/**
* Getter method for property <tt>url</tt>.
*
* @return property value of url
*/
public String getUrl() {
return url;
}
/**
* Setter method for property <tt>url</tt>.
*
* @param url value to be assigned to property url
*/
public void setUrl(String url) {
this.url = url;
}
/**
* Getter method for property <tt>refreshFlag</tt>.
*
* @return property value of refreshFlag
*/
public String getRefreshFlag() {
return refreshFlag;
}
/**
* Setter method for property <tt>refreshFlag</tt>.
*
* @param refreshFlag value to be assigned to property refreshFlag
*/
public void setRefreshFlag(String refreshFlag) {
this.refreshFlag = refreshFlag;
}
/**
* Getter method for property <tt>status</tt>.
*
* @return property value of status
*/
public String getStatus() {
return status;
}
/**
* Setter method for property <tt>status</tt>.
*
* @param status value to be assigned to property status
*/
public void setStatus(String status) {
this.status = status;
}
/**
* Getter method for property <tt>creator</tt>.
*
* @return property value of creator
*/
public String getCreator() {
return creator;
}
/**
* Setter method for property <tt>creator</tt>.
*
* @param creator value to be assigned to property creator
*/
public void setCreator(String creator) {
this.creator = creator;
}
/**
* Getter method for property <tt>createTime</tt>.
*
* @return property value of createTime
*/
public Date getCreateTime() {
return createTime;
}
/**
* Setter method for property <tt>createTime</tt>.
*
* @param createTime value to be assigned to property createTime
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* Getter method for property <tt>modifier</tt>.
*
* @return property value of modifier
*/
public String getModifier() {
return modifier;
}
/**
* Setter method for property <tt>modifier</tt>.
*
* @param modifier value to be assigned to property modifier
*/
public void setModifier(String modifier) {
this.modifier = modifier;
}
/**
* Getter method for property <tt>modifiedTime</tt>.
*
* @return property value of modifiedTime
*/
public Date getModifiedTime() {
return modifiedTime;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getReset() {
return reset;
}
public void setReset(int reset) {
this.reset = reset;
}
/**
* Setter method for property <tt>modifiedTime</tt>.
*
* @param modifiedTime value to be assigned to property modifiedTime
*/
public void setModifiedTime(Date modifiedTime) {
this.modifiedTime = modifiedTime;
}
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
@Override
public int compareTo(ModuleDTO dest) {
return null == dest ? -1 : this.getSort() - dest.getSort();
}
}
生成树结构:
/**
* 生成菜单树对象
*
* @param modules
* @return
*/
private List<Menu> genMenuTree(List<ModuleDTO> modules){
Menu menu =null;
List<Menu> menuList=new ArrayList<Menu>();
int i=0;
for(ModuleDTO moduleDTO :modules){
menu=new Menu();
menu.setIdx(i++);
BeanUtils.copyProperties(moduleDTO, menu);
menuList.add(menu);
}
for(Menu lv1Menu:menuList){
for(Menu lv2Menu:menuList){
if(lv1Menu.getModuleId().equals(lv2Menu.getModuleId())){
continue;
}
if(lv1Menu.getModuleId().equals(lv2Menu.getParentModuleId())){
lv1Menu.putChild(lv2Menu);
}
if(lv1Menu.getParentModuleId().equals(lv2Menu.getModuleId())){
lv1Menu.setParent(lv2Menu);
}
}
}
return menuList;
}