org.broadleafcommerce.openadmin.dto.PersistencePackage.java Source code

Java tutorial

Introduction

Here is the source code for org.broadleafcommerce.openadmin.dto.PersistencePackage.java

Source

/*
 * #%L
 * BroadleafCommerce Open Admin Platform
 * %%
 * Copyright (C) 2009 - 2013 Broadleaf Commerce
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *       http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */
package org.broadleafcommerce.openadmin.dto;

import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.broadleafcommerce.common.presentation.client.PersistencePerspectiveItemType;

import java.io.Serializable;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class PersistencePackage implements Serializable, StateDescriptor {

    private static final long serialVersionUID = 1L;

    protected String ceilingEntityFullyQualifiedClassname;
    protected String securityCeilingEntityFullyQualifiedClassname;
    protected String sectionEntityField;
    protected String fetchTypeFullyQualifiedClassname;
    protected PersistencePerspective persistencePerspective;
    protected String[] customCriteria;
    protected Entity entity;
    protected String csrfToken;
    protected String requestingEntityName;
    protected Map<String, PersistencePackage> subPackages = new LinkedHashMap<String, PersistencePackage>();
    protected boolean validateUnsubmittedProperties = true;
    protected SectionCrumb[] sectionCrumbs;

    //internalUsage
    protected boolean isProcessedInternal = false;

    public PersistencePackage(String ceilingEntityFullyQualifiedClassname, Entity entity,
            PersistencePerspective persistencePerspective, String[] customCriteria, String csrfToken) {
        this(ceilingEntityFullyQualifiedClassname, null, entity, persistencePerspective, customCriteria, csrfToken);
    }

    public PersistencePackage(String ceilingEntityFullyQualifiedClassname, String fetchTypeFullyQualifiedClassname,
            Entity entity, PersistencePerspective persistencePerspective, String[] customCriteria,
            String csrfToken) {
        this.ceilingEntityFullyQualifiedClassname = ceilingEntityFullyQualifiedClassname;
        this.fetchTypeFullyQualifiedClassname = fetchTypeFullyQualifiedClassname;
        this.persistencePerspective = persistencePerspective;
        this.entity = entity;
        this.customCriteria = customCriteria;
        this.csrfToken = csrfToken;
    }

    public PersistencePackage() {
        //do nothing
    }

    @Override
    public Property findProperty(String name) {
        return entity.findProperty(name);
    }

    @Override
    public Property[] getProperties() {
        return entity.getProperties();
    }

    @Override
    public Map<String, Property> getPMap() {
        return entity.getPMap();
    }

    public String getCeilingEntityFullyQualifiedClassname() {
        return ceilingEntityFullyQualifiedClassname;
    }

    public void setCeilingEntityFullyQualifiedClassname(String ceilingEntityFullyQualifiedClassname) {
        this.ceilingEntityFullyQualifiedClassname = ceilingEntityFullyQualifiedClassname;
    }

    public String getSecurityCeilingEntityFullyQualifiedClassname() {
        if (StringUtils.isBlank(securityCeilingEntityFullyQualifiedClassname)) {
            return ceilingEntityFullyQualifiedClassname;
        }
        return securityCeilingEntityFullyQualifiedClassname;
    }

    public void setSecurityCeilingEntityFullyQualifiedClassname(
            String securityCeilingEntityFullyQualifiedClassname) {
        this.securityCeilingEntityFullyQualifiedClassname = securityCeilingEntityFullyQualifiedClassname;
    }

    public PersistencePerspective getPersistencePerspective() {
        return persistencePerspective;
    }

    public void setPersistencePerspective(PersistencePerspective persistencePerspective) {
        this.persistencePerspective = persistencePerspective;
    }

    public String[] getCustomCriteria() {
        return customCriteria;
    }

    public void setCustomCriteria(String[] customCriteria) {
        this.customCriteria = customCriteria;
    }

    public void addCustomCriteria(String criteria) {
        customCriteria = ArrayUtils.add(customCriteria, criteria);
    }

    public void removeCustomCriteria(String criteria) {
        int pos = containsCriteria(criteria);
        if (pos >= 0) {
            customCriteria = ArrayUtils.remove(customCriteria, pos);
        }
    }

    public int containsCriteria(String criteria) {
        if (ArrayUtils.isEmpty(customCriteria)) {
            return -1;
        }

        for (int i = 0; i < customCriteria.length; i++) {
            if (customCriteria[i] != null && customCriteria[i].equals(criteria)) {
                return i;
            } else if (customCriteria[i] == null && criteria == null) {
                return i;
            }
        }

        return -1;
    }

    public Entity getEntity() {
        return entity;
    }

    public void setEntity(Entity entity) {
        this.entity = entity;
    }

    public String getCsrfToken() {
        return csrfToken;
    }

    public void setCsrfToken(String csrfToken) {
        this.csrfToken = csrfToken;
    }

    public String getFetchTypeFullyQualifiedClassname() {
        return fetchTypeFullyQualifiedClassname;
    }

    public void setFetchTypeFullyQualifiedClassname(String fetchTypeFullyQualifiedClassname) {
        this.fetchTypeFullyQualifiedClassname = fetchTypeFullyQualifiedClassname;
    }

    public String getSectionEntityField() {
        return sectionEntityField;
    }

    public void setSectionEntityField(String sectionEntityField) {
        this.sectionEntityField = sectionEntityField;
    }

    public String getRequestingEntityName() {
        return requestingEntityName;
    }

    public void setRequestingEntityName(String requestingEntityName) {
        this.requestingEntityName = requestingEntityName;
    }

    public Map<PersistencePerspectiveItemType, PersistencePerspectiveItem> getPersistencePerspectiveItems() {
        if (persistencePerspective != null) {
            return persistencePerspective.getPersistencePerspectiveItems();
        }
        return new HashMap<PersistencePerspectiveItemType, PersistencePerspectiveItem>();
    }

    public Map<String, PersistencePackage> getSubPackages() {
        return subPackages;
    }

    public void setSubPackages(Map<String, PersistencePackage> subPackages) {
        this.subPackages = subPackages;
    }

    public boolean isValidateUnsubmittedProperties() {
        return validateUnsubmittedProperties;
    }

    public void setValidateUnsubmittedProperties(boolean validateUnsubmittedProperties) {
        this.validateUnsubmittedProperties = validateUnsubmittedProperties;
    }

    public SectionCrumb[] getSectionCrumbs() {
        return sectionCrumbs;
    }

    public void setSectionCrumbs(SectionCrumb[] sectionCrumbs) {
        this.sectionCrumbs = sectionCrumbs;
    }

    public SectionCrumb getClosetCrumb(String myCeiling) {
        if (ArrayUtils.isEmpty(sectionCrumbs)) {
            return new SectionCrumb();
        } else {
            SectionCrumb previous = sectionCrumbs[sectionCrumbs.length - 1];
            for (SectionCrumb sectionCrumb : sectionCrumbs) {
                if (sectionCrumb.getSectionIdentifier().equals(myCeiling)) {
                    break;
                } else {
                    previous = sectionCrumb;
                }
            }
            return previous;
        }
    }

    public SectionCrumb getBottomCrumb() {
        if (ArrayUtils.isEmpty(sectionCrumbs)) {
            return new SectionCrumb();
        }
        return sectionCrumbs[sectionCrumbs.length - 1];
    }

    public SectionCrumb getTopCrumb() {
        if (ArrayUtils.isEmpty(sectionCrumbs)) {
            return new SectionCrumb();
        }
        return sectionCrumbs[0];
    }

    /**
     * Internally used field when passing the persistence package through the admin pipeline
     *
     * @return whether or not this persistence package has been exposed to a internal processing step
     */
    public boolean isProcessedInternal() {
        return isProcessedInternal;
    }

    /**
     * Internally used field when passing the persistence package through the admin pipeline
     *
     * @param isProcessedInternal whether or not this persistence package has been exposed to a internal processing step
     */
    public void setProcessedInternal(boolean isProcessedInternal) {
        this.isProcessedInternal = isProcessedInternal;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("PersistencePackage{");
        sb.append("ceilingEntityFullyQualifiedClassname='").append(ceilingEntityFullyQualifiedClassname)
                .append('\'');
        sb.append(", securityCeilingEntityFullyQualifiedClassname='")
                .append(securityCeilingEntityFullyQualifiedClassname).append('\'');
        sb.append(", sectionEntityField='").append(sectionEntityField).append('\'');
        sb.append(", fetchTypeFullyQualifiedClassname='").append(fetchTypeFullyQualifiedClassname).append('\'');
        sb.append(", persistencePerspective=").append(persistencePerspective);
        sb.append(", customCriteria=").append(Arrays.toString(customCriteria));
        sb.append(", entity=").append(entity);
        sb.append(", csrfToken='").append(csrfToken).append('\'');
        sb.append(", requestingEntityName='").append(requestingEntityName).append('\'');
        sb.append(", subPackages=").append(subPackages);
        sb.append(", validateUnsubmittedProperties=").append(validateUnsubmittedProperties);
        sb.append(", sectionCrumbs=").append(Arrays.toString(sectionCrumbs));
        sb.append('}');
        return sb.toString();
    }

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

        PersistencePackage that = (PersistencePackage) o;

        if (ceilingEntityFullyQualifiedClassname != null
                ? !ceilingEntityFullyQualifiedClassname.equals(that.ceilingEntityFullyQualifiedClassname)
                : that.ceilingEntityFullyQualifiedClassname != null)
            return false;
        if (csrfToken != null ? !csrfToken.equals(that.csrfToken) : that.csrfToken != null)
            return false;
        if (!Arrays.equals(customCriteria, that.customCriteria))
            return false;
        if (entity != null ? !entity.equals(that.entity) : that.entity != null)
            return false;
        if (fetchTypeFullyQualifiedClassname != null
                ? !fetchTypeFullyQualifiedClassname.equals(that.fetchTypeFullyQualifiedClassname)
                : that.fetchTypeFullyQualifiedClassname != null)
            return false;
        if (persistencePerspective != null ? !persistencePerspective.equals(that.persistencePerspective)
                : that.persistencePerspective != null)
            return false;
        if (sectionEntityField != null ? !sectionEntityField.equals(that.sectionEntityField)
                : that.sectionEntityField != null)
            return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = ceilingEntityFullyQualifiedClassname != null ? ceilingEntityFullyQualifiedClassname.hashCode()
                : 0;
        result = 31 * result + (sectionEntityField != null ? sectionEntityField.hashCode() : 0);
        result = 31 * result
                + (fetchTypeFullyQualifiedClassname != null ? fetchTypeFullyQualifiedClassname.hashCode() : 0);
        result = 31 * result + (persistencePerspective != null ? persistencePerspective.hashCode() : 0);
        result = 31 * result + (customCriteria != null ? Arrays.hashCode(customCriteria) : 0);
        result = 31 * result + (entity != null ? entity.hashCode() : 0);
        result = 31 * result + (csrfToken != null ? csrfToken.hashCode() : 0);
        return result;
    }
}