SitePageBean.java 3.3 KB
package fi.insomnia.bortal.beans;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.security.DeclareRoles;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.facade.SitePageFacade;
import fi.insomnia.bortal.model.PageContent;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.SitePage;

/**
 * Session Bean implementation class SitePageBean
 */
@Stateless
@LocalBean
@DeclareRoles({
		ContentPermission.S_MANAGE_PAGES,
		ContentPermission.S_MANAGE_NEWS,
		ContentPermission.S_MANAGE_ACTIONLOG,

})
public class SitePageBean implements SitePageBeanLocal {

	/**
	 * Default constructor.
	 */
	public SitePageBean() {
		// TODO Auto-generated constructor stub
	}

	@EJB
	private SitePageFacade sitepagefacade;

	@EJB
	private EventBeanLocal eventbean;

	@EJB
	private PermissionBeanLocal permbean;
	@EJB
	private UserBean userbean;

	@SuppressWarnings("unused")
	private Logger logger = LoggerFactory.getLogger(SitePageBean.class);

	@Override
	@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
	public void create(SitePage sitepage) {
		sitepage.setEvent(eventbean.getCurrentEvent());
		sitepagefacade.create(sitepage);
	}

	@Override
	@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
	public SitePage save(SitePage sitepage) {
		return sitepagefacade.merge(sitepage);
	}

	@Override
	@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
	public PageContent createContent(SitePage sitepage) {
		sitepage = sitepagefacade.find(sitepage.getId());
		PageContent ret = new PageContent(sitepage);
		if (sitepage.getContents() == null)
		{
			sitepage.setContents(new ArrayList<PageContent>());
		}
		sitepage.getContents().add(ret);
		return ret;

	}

	@Override
	public List<SitePage> getPagerootsForUser() {
		return sitepagefacade.findForUser(permbean.getCurrentUser(), null);
	}

	@Override
	public List<SitePage> getPagesForUser(SitePage site)
	{
		return sitepagefacade.findForUser(permbean.getCurrentUser(), site);
	}

	@Override
	@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
	public List<SitePage> findAll() {
		return sitepagefacade.findAll();
	}

	@Override
	@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
	public SitePage find(Integer id) {
		return sitepagefacade.find(id);
	}

	@Override
	@PermitAll
	public List<PageContent> findContentsForUser(Integer id) {
		return getContentsForPage(sitepagefacade.find(id));
	}

	private List<PageContent> getContentsForPage(SitePage page)
	{
		List<Role> roles = userbean.localFindUsersRoles(permbean.getCurrentUser());

		List<PageContent> ret = null;
		if (page != null && page.getAllowedRoles() != null)
		{
			for (Role r : page.getAllowedRoles()) {
				if (roles.contains(r)) {
					ret = sitepagefacade.findContents(page, new Date());
					break;
				}
			}
		}
		return ret;
	}

	@Override
	public List<PageContent> findContentsForUser(String name) {
		SitePage page = sitepagefacade.find(name);
		return getContentsForPage(page);
	}

	@Override
	@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
	public SitePage findSitename(String managedPage) {
		return sitepagefacade.find(managedPage);

	}
}