com.enonic.cms.core.content.ContentLocation.java Source code

Java tutorial

Introduction

Here is the source code for com.enonic.cms.core.content.ContentLocation.java

Source

/*
 * Copyright 2000-2013 Enonic AS
 * http://www.enonic.com/license
 */
package com.enonic.cms.core.content;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.springframework.util.Assert;

import com.enonic.cms.core.structure.SiteEntity;
import com.enonic.cms.core.structure.SiteKey;
import com.enonic.cms.core.structure.menuitem.MenuItemEntity;
import com.enonic.cms.core.structure.menuitem.MenuItemKey;

public class ContentLocation {
    private ContentLocationType type;

    private ContentEntity content;

    private SiteEntity site;

    private String siteName;

    private MenuItemKey menuItemKey;

    private String menuItemName;

    private MenuItemEntity menuItem;

    private String menuItemPathAsString;

    private boolean isApproved;

    private boolean isUserDefinedSectionHome;

    public static ContentLocation createMenuItemLocation(ContentEntity content, MenuItemEntity menuItem) {
        ContentLocation location = new ContentLocation(ContentLocationType.MENUITEM, content, menuItem);
        return location;
    }

    public static ContentLocation createSectionHomeLocation(ContentEntity content, MenuItemEntity menuItem) {
        ContentLocation location = new ContentLocation(ContentLocationType.SECTION_HOME, content, menuItem);
        location.isUserDefinedSectionHome = true;
        return location;
    }

    public static ContentLocation createSectionLocation(ContentEntity content, MenuItemEntity menuItem,
            boolean isApprovedInSection) {
        ContentLocation location = new ContentLocation(ContentLocationType.SECTION, content, menuItem,
                isApprovedInSection);
        return location;
    }

    public static ContentLocation createSectionAndSectionHomeLocation(ContentEntity content,
            MenuItemEntity menuItem, boolean isApprovedInSection) {
        ContentLocation location = new ContentLocation(ContentLocationType.SECTION_AND_SECTION_HOME, content,
                menuItem, isApprovedInSection);
        location.isUserDefinedSectionHome = true;
        return location;
    }

    private ContentLocation(ContentLocationType type, ContentEntity content, MenuItemEntity menuItem) {
        this(type, content, menuItem, false);
    }

    private ContentLocation(ContentLocationType type, ContentEntity content, MenuItemEntity menuItem,
            boolean isApprovedInSection) {
        Assert.notNull(type);
        Assert.notNull(content);
        Assert.notNull(menuItem);

        this.type = type;
        this.menuItemKey = menuItem.getKey();
        this.menuItemName = menuItem.getName();
        this.content = content;
        this.menuItem = menuItem;
        this.site = menuItem.getSite();
        this.siteName = this.site.getName();

        this.menuItemPathAsString = this.menuItem.getPath().toString();

        this.isApproved = isApprovedInSection;
    }

    public ContentEntity getContent() {
        return content;
    }

    public MenuItemEntity getMenuItem() {
        return menuItem;
    }

    public MenuItemKey getMenuItemKey() {
        return menuItemKey;
    }

    public String getMenuItemName() {
        return menuItemName;
    }

    public ContentLocationType getType() {
        return type;
    }

    public boolean isInSection() {
        return type == ContentLocationType.SECTION || type == ContentLocationType.SECTION_AND_SECTION_HOME;
    }

    public boolean isHomeButNotInSection() {
        return type == ContentLocationType.SECTION_HOME;
    }

    public boolean isOnMenuItem() {
        return type == ContentLocationType.MENUITEM;
    }

    public boolean isInSectionOrSectionHome() {
        return type == ContentLocationType.SECTION || type == ContentLocationType.SECTION_AND_SECTION_HOME
                || type == ContentLocationType.SECTION_HOME;
    }

    public String getMenuItemPathAsString() {
        return menuItemPathAsString;
    }

    public SiteKey getSiteKey() {
        return site.getKey();
    }

    public SiteEntity getSite() {
        return site;
    }

    public String getSiteName() {
        return siteName;
    }

    public boolean isApproved() {
        return isApproved;
    }

    public boolean isUserDefinedSectionHome() {
        return isUserDefinedSectionHome;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        ContentLocation that = (ContentLocation) o;

        if (!menuItem.equals(that.menuItem)) {
            return false;
        }

        return true;
    }

    @Override
    public int hashCode() {
        return menuItem.hashCode();
    }

    public String toString() {
        ToStringBuilder s = new ToStringBuilder(this);
        s.append("menuItemKey", menuItemKey);
        s.append("type", type);
        return s.toString();
    }

    public boolean isLocationFor(MenuItemEntity menuItem) {
        return this.menuItem.equals(menuItem);
    }
}