package com.mossle.auth.web.dev; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.mossle.auth.persistence.domain.Menu; import com.mossle.auth.persistence.domain.Perm; import com.mossle.auth.persistence.manager.MenuManager; import com.mossle.auth.persistence.manager.PermManager; import com.mossle.auth.support.MenuCache; import com.mossle.core.export.Exportor; import com.mossle.core.export.TableModel; import com.mossle.core.mapper.BeanMapper; import com.mossle.core.mapper.JsonMapper; import com.mossle.core.page.Page; import com.mossle.core.query.PropertyFilter; import com.mossle.core.spring.MessageHelper; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @Controller("com.mossle.auth.web.dev.MenuController") @RequestMapping("auth/dev") public class MenuController { private MenuManager menuManager; private PermManager permManager; private MessageHelper messageHelper; private Exportor exportor; private BeanMapper beanMapper = new BeanMapper(); private MenuCache menuCache; private JsonMapper jsonMapper = new JsonMapper(); @RequestMapping("menu-export") public String export(Model model) throws Exception { String hql = "from Menu where menu=null order by priority"; List<Menu> menus = this.menuManager.find(hql); List<Map<String, Object>> list = this.convertMenus(menus); String json = jsonMapper.toJson(list); model.addAttribute("json", json); return "auth/dev/menu-export"; } public List<Map<String, Object>> convertMenus(List<Menu> menus) { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); for (Menu menu : menus) { list.add(this.convertMenu(menu)); } return list; } public Map<String, Object> convertMenu(Menu menu) { Map<String, Object> map = new LinkedHashMap<String, Object>(); map.put("code", menu.getCode()); map.put("name", menu.getTitle()); map.put("url", menu.getUrl()); map.put("type", menu.getType()); map.put("display", menu.getDisplay()); map.put("perm", menu.getPerm().getCode()); map.put("priority", menu.getPriority()); List<Menu> menus = menuManager.find( "from Menu where menu=? order by priority", menu); if (!menus.isEmpty()) { map.put("children", this.convertMenus(menus)); } return map; } // ~ ====================================================================== @Resource public void setMenuManager(MenuManager menuManager) { this.menuManager = menuManager; } @Resource public void setPermManager(PermManager permManager) { this.permManager = permManager; } @Resource public void setMessageHelper(MessageHelper messageHelper) { this.messageHelper = messageHelper; } @Resource public void setExportor(Exportor exportor) { this.exportor = exportor; } @Resource public void setMenuCache(MenuCache menuCache) { this.menuCache = menuCache; } }