Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package chiron.maxscore.service.impl; import chiron.maxscore.dao.MenuDAO; import chiron.maxscore.entity.Menu; import chiron.maxscore.jsonwrapper.MenuItem; import chiron.maxscore.entity.Role; import chiron.maxscore.service.MenuService; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class MenuServiceImpl implements MenuService { @Autowired private MenuDAO menuDAO; @Override public Menu getById(int id) { return menuDAO.getById(id); } @Transactional @Override public void save(Menu e) { menuDAO.save(e); } @Transactional @Override public void delete(Menu e) { menuDAO.delete(e); } @Override public List<Menu> getAll() { return menuDAO.getAll(); } @Override public List<Menu> search(int page, int pageSize, Map<String, Object> condition) { return menuDAO.search((page - 1) * pageSize, pageSize, makeCriteria(condition)); } @Override public int count(Map<String, Object> condition) { return menuDAO.count(makeCriteria(condition)); } private DetachedCriteria makeCriteria(Map<String, Object> condition) { DetachedCriteria criteria = DetachedCriteria.forClass(Menu.class); if (condition == null) { return criteria; } if (condition.containsKey("menu_title")) { criteria.add( Restrictions.ilike("menuTitle", condition.get("menu_title").toString(), MatchMode.ANYWHERE)); } return criteria; } @Override public Menu getRoot() { DetachedCriteria criteria = DetachedCriteria.forClass(Menu.class); criteria.add(Restrictions.isNull("menuParent")); List<Menu> list = menuDAO.search(0, 1, criteria); return list.size() > 0 ? list.get(0) : null; } @Override public MenuItem getMenuItemRoot() { Menu root = getRoot(); MenuItem itemRoot = new MenuItem(root); if (!root.getMenuChildren().isEmpty()) { itemRoot.setChildren(new ArrayList<MenuItem>()); for (Menu m1 : root.getMenuChildren()) { MenuItem mi1 = new MenuItem(m1); itemRoot.getChildren().add(mi1); if (!m1.getMenuChildren().isEmpty()) { mi1.setChildren(new ArrayList<MenuItem>()); for (Menu m2 : m1.getMenuChildren()) { MenuItem mi2 = new MenuItem(m2); mi1.getChildren().add(mi2); if (!m2.getMenuChildren().isEmpty()) { mi2.setAccess(new HashMap<String, Boolean>()); for (Menu m3 : m2.getMenuChildren()) { mi2.getAccess().put(m3.getMenuName(), true); } } } } } } return itemRoot; } @Override public MenuItem getAllMenuItem() { Menu root = getRoot(); MenuItem itemRoot = new MenuItem(root); if (!root.getMenuChildren().isEmpty()) { itemRoot.setChildren(new ArrayList<MenuItem>()); for (Menu m1 : root.getMenuChildren()) { MenuItem mi1 = new MenuItem(m1); itemRoot.getChildren().add(mi1); if (!m1.getMenuChildren().isEmpty()) { mi1.setChildren(new ArrayList<MenuItem>()); for (Menu m2 : m1.getMenuChildren()) { MenuItem mi2 = new MenuItem(m2); mi1.getChildren().add(mi2); if (!m2.getMenuChildren().isEmpty()) { mi2.setChildren(new ArrayList<MenuItem>()); for (Menu m3 : m2.getMenuChildren()) { MenuItem mi3 = new MenuItem(m3); mi2.getChildren().add(mi3); } } } } } } return itemRoot; } @Override public List<Menu> getByLevel(int level) { DetachedCriteria criteria = DetachedCriteria.forClass(Menu.class); criteria.add(Restrictions.eq("menuLevel", level)); List<Menu> list = menuDAO.search(0, 1000, criteria); return list; } @Override public MenuItem getMenuItemRoot(Role role) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }