Package org.beangle.emsapp.security.helper

Source Code of org.beangle.emsapp.security.helper.UserDashboardHelper

/* Copyright c 2005-2012.
* Licensed under GNU  LESSER General Public License, Version 3.
* http://www.gnu.org/licenses
*/
package org.beangle.emsapp.security.helper;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.beangle.commons.collection.CollectUtils;
import org.beangle.commons.collection.page.PageLimit;
import org.beangle.ems.security.Group;
import org.beangle.ems.security.GroupMember;
import org.beangle.ems.security.Resource;
import org.beangle.ems.security.User;
import org.beangle.ems.security.nav.Menu;
import org.beangle.ems.security.nav.MenuProfile;
import org.beangle.ems.security.nav.service.MenuService;
import org.beangle.ems.security.restrict.service.RestrictionService;
import org.beangle.ems.security.service.AuthorityService;
import org.beangle.ems.security.service.UserService;
import org.beangle.model.persist.EntityDao;
import org.beangle.model.query.builder.OqlBuilder;
import org.beangle.security.core.session.SessionRegistry;
import org.beangle.security.web.session.model.SessioninfoLogBean;
import org.beangle.struts2.helper.ContextHelper;
import org.beangle.struts2.helper.Params;
import org.beangle.struts2.helper.QueryHelper;

/**
* @author chaostone
* @version $Id: DashboardHelper.java Nov 3, 2010 5:19:42 PM chaostone $
*/
public class UserDashboardHelper {

  private EntityDao entityDao;

  private SessionRegistry sessionRegistry;

  private AuthorityService authorityService;

  private MenuService menuService;

  private RestrictionService restrictionService;

  private UserService userService;

  public void buildDashboard(User user) {
    ContextHelper.put("user", user);
    populateMenus(user);
    populateSessioninfoLogs(user);
    populateOnlineActivities(user);
    RestrictionHelper helper = new RestrictionHelper(entityDao);
    helper.setRestrictionService(restrictionService);
    helper.populateInfo(user);
  }

  private void populateOnlineActivities(User user) {
    Collection<?> onlineActivities = sessionRegistry.getSessioninfos(user.getName(), true);
    ContextHelper.put("onlineActivities", onlineActivities);
  }

  private void populateSessioninfoLogs(User user) {
    OqlBuilder<SessioninfoLogBean> onlineQuery = OqlBuilder.from(SessioninfoLogBean.class,
        "sessioninfoLog");
    onlineQuery.where("sessioninfoLog.username = :username", user.getName());
    PageLimit limit = QueryHelper.getPageLimit();
    limit.setPageSize(5);
    onlineQuery.orderBy("sessioninfoLog.loginAt desc").limit(limit);
    ContextHelper.put("sessioninfoLogs", entityDao.search(onlineQuery));
  }

  private void populateMenus(User user) {
    List<?> menuProfiles = menuService.getProfiles(user);
    ContextHelper.put("menuProfiles", menuProfiles);
    Long menuProfileId = Params.getLong("menuProfileId");
    if (null == menuProfileId && !menuProfiles.isEmpty()) {
      menuProfileId = ((MenuProfile) (menuProfiles.get(0))).getId();
    }
    if (null != menuProfileId) {
      MenuProfile menuProfile = (MenuProfile) entityDao.get(MenuProfile.class, menuProfileId);
      List<Menu> menus = menuService.getMenus(menuProfile, user);
      Set<Resource> resources = CollectUtils.newHashSet(authorityService.getResources(user));
      Map<Group, List<Menu>> groupMenusMap = CollectUtils.newHashMap();

      List<Group> myGroups = userService.getGroups(user, GroupMember.Ship.MEMBER);
      for (Group group : myGroups) {
        groupMenusMap.put(group, menuService.getMenus(menuProfile, group, Boolean.TRUE));
      }
      ContextHelper.put("menus", menus);
      ContextHelper.put("groupMenusMap", groupMenusMap);
      ContextHelper.put("resources", resources);
    }
  }

  public void setMenuService(MenuService menuService) {
    this.menuService = menuService;
  }

  public void setUserService(UserService userService) {
    this.userService = userService;
  }

  public void setEntityDao(EntityDao entityDao) {
    this.entityDao = entityDao;
  }

  public void setSessionRegistry(SessionRegistry sessionRegistry) {
    this.sessionRegistry = sessionRegistry;
  }

  public void setAuthorityService(AuthorityService authorityService) {
    this.authorityService = authorityService;
  }

  public void setRestrictionService(RestrictionService restrictionService) {
    this.restrictionService = restrictionService;
  }

}
TOP

Related Classes of org.beangle.emsapp.security.helper.UserDashboardHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.