de.hybris.platform.b2bacceleratorfacades.company.impl.DefaultCompanyB2BCommerceFacade.java Source code

Java tutorial

Introduction

Here is the source code for de.hybris.platform.b2bacceleratorfacades.company.impl.DefaultCompanyB2BCommerceFacade.java

Source

/*
 * [y] hybris Platform
 *
 * Copyright (c) 2000-2013 hybris AG
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of hybris
 * ("Confidential Information"). You shall not disclose such Confidential
 * Information and shall use it only in accordance with the terms of the
 * license agreement you entered into with hybris.
 * 
 *  
 */
package de.hybris.platform.b2bacceleratorfacades.company.impl;

import static de.hybris.platform.servicelayer.util.ServicesUtil.validateParameterNotNull;

import de.hybris.platform.b2b.model.B2BBudgetModel;
import de.hybris.platform.b2b.model.B2BCostCenterModel;
import de.hybris.platform.b2b.model.B2BCustomerModel;
import de.hybris.platform.b2b.model.B2BPermissionModel;
import de.hybris.platform.b2b.model.B2BUnitModel;
import de.hybris.platform.b2b.model.B2BUserGroupModel;
import de.hybris.platform.b2bacceleratorfacades.company.CompanyB2BCommerceFacade;
import de.hybris.platform.b2bacceleratorfacades.company.data.B2BUnitNodeData;
import de.hybris.platform.b2bacceleratorfacades.company.data.UserData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BBudgetData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BCostCenterData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BPermissionData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BPermissionTypeData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BSelectionData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BUnitData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BUserGroupData;
import de.hybris.platform.b2bacceleratorfacades.order.populators.B2BBudgetReversePopulator;
import de.hybris.platform.b2bacceleratorfacades.order.populators.B2BCostCenterReversePopulator;
import de.hybris.platform.b2bacceleratorfacades.order.populators.B2BCustomerReversePopulator;
import de.hybris.platform.b2bacceleratorfacades.order.populators.B2BPermissionsReversePopulator;
import de.hybris.platform.b2bacceleratorfacades.order.populators.B2BUnitReversePopulator;
import de.hybris.platform.b2bacceleratorservices.company.B2BCommerceB2BUserGroupService;
import de.hybris.platform.b2bacceleratorservices.company.B2BCommerceBudgetService;
import de.hybris.platform.b2bacceleratorservices.company.B2BCommerceCostCenterService;
import de.hybris.platform.b2bacceleratorservices.company.B2BCommercePermissionService;
import de.hybris.platform.b2bacceleratorservices.company.B2BCommerceUnitService;
import de.hybris.platform.b2bacceleratorservices.company.B2BCommerceUserService;
import de.hybris.platform.b2bacceleratorservices.company.CompanyB2BCommerceService;
import de.hybris.platform.b2bacceleratorservices.enums.B2BPermissionTypeEnum;
import de.hybris.platform.b2bacceleratorservices.strategies.B2BUserGroupsLookUpStrategy;
import de.hybris.platform.commercefacades.user.data.AddressData;
import de.hybris.platform.commercefacades.user.data.CustomerData;
import de.hybris.platform.commerceservices.search.pagedata.PageableData;
import de.hybris.platform.commerceservices.search.pagedata.SearchPageData;
import de.hybris.platform.converters.Converters;
import de.hybris.platform.converters.Populator;
import de.hybris.platform.core.model.c2l.CurrencyModel;
import de.hybris.platform.core.model.security.PrincipalGroupModel;
import de.hybris.platform.core.model.user.AddressModel;
import de.hybris.platform.enumeration.EnumerationService;
import de.hybris.platform.servicelayer.dto.converter.Converter;
import de.hybris.platform.servicelayer.model.ModelService;
import de.hybris.platform.servicelayer.user.UserService;
import de.hybris.platform.store.BaseStoreModel;
import de.hybris.platform.store.services.BaseStoreService;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.PredicateUtils;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.util.Assert;

/**
 * A facade for organization management.
 */
public class DefaultCompanyB2BCommerceFacade implements CompanyB2BCommerceFacade {
    private CompanyB2BCommerceService companyB2BCommerceService;
    private UserService userService;
    private Converter<B2BCustomerModel, UserData> b2BUserConverter;
    private Converter<B2BUnitModel, B2BUnitNodeData> unitTreeConverter;
    private Converter<B2BUnitModel, B2BUnitData> b2BUnitConverter;
    private Converter<B2BCostCenterModel, B2BCostCenterData> b2BCostCenterConverter;
    private Converter<B2BCustomerModel, CustomerData> b2BCustomerConverter;
    private Converter<B2BBudgetModel, B2BBudgetData> b2BBudgetConverter;
    private Converter<B2BPermissionModel, B2BPermissionData> b2BPermissionConverter;
    private Converter<B2BUserGroupModel, B2BUserGroupData> b2BUserGroupConverter;
    private Populator<AddressData, AddressModel> addressReversePopulator;
    private B2BUserGroupsLookUpStrategy b2BUserGroupsLookUpStrategy;
    private B2BBudgetReversePopulator b2BBudgetReversePopulator;
    private B2BCostCenterReversePopulator b2BCostCenterReversePopulator;
    private Converter<B2BPermissionTypeEnum, B2BPermissionTypeData> b2BPermissionTypeDataConverter;
    private B2BPermissionsReversePopulator b2BPermissionReversePopulator;
    private EnumerationService enumerationService;
    private B2BCommerceUserService b2BCommerceUserService;
    private B2BCommerceUnitService b2BCommerceUnitService;
    private B2BCommercePermissionService b2BCommercePermissionService;
    private B2BCommerceBudgetService b2BCommerceBudgetService;
    private B2BCommerceCostCenterService b2BCommerceCostCenterService;
    private B2BCommerceB2BUserGroupService b2BCommerceB2BUserGroupService;
    private B2BCustomerReversePopulator b2BCustomerReversePopulator;
    private B2BUnitReversePopulator b2BUnitReversePopulator;
    private BaseStoreService baseStoreService;

    private ModelService modelService;

    @Override
    public List<B2BUnitNodeData> getBranchNodes() {
        return Converters.convertAll(getB2BCommerceUnitService().getBranch(), getUnitTreeConverter());
    }

    @Override
    public B2BUnitData getParentUnit() {
        final B2BUnitModel parentUnit = getB2BCommerceUnitService().getParentUnit();
        if (parentUnit != null) {
            return this.getB2BUnitConverter().convert(parentUnit);
        } else {
            return null;
        }
    }

    @Override
    public B2BUnitData getUnitForUid(final String uid) {
        final B2BUnitModel unitForUid = getCompanyB2BCommerceService().getUnitForUid(uid);
        return (unitForUid != null ? this.getB2BUnitConverter().convert(unitForUid) : null);
    }

    @Override
    public List<String> getAllCurrencies() {
        final List<CurrencyModel> currencies = (List<CurrencyModel>) getCompanyB2BCommerceService()
                .getAllCurrencies();
        final List<String> currencyIsoCodeList = new ArrayList<String>(currencies.size());
        for (final CurrencyModel currencyModel : currencies) {
            currencyIsoCodeList.add(currencyModel.getIsocode());
        }
        return currencyIsoCodeList;
    }

    @Override
    public CustomerData getCustomerDataForUid(final String uid) {
        Assert.hasText(uid, "The field [uid] cannot be empty");
        final B2BCustomerModel customerModel = getCompanyB2BCommerceService().getCustomerForUid(uid);
        validateParameterNotNull(customerModel, String.format("Customer for uid %s not found", uid));
        return getB2BCustomerConverter().convert(customerModel);
    }

    @Override
    public Map<String, String> getBusinessProcesses() {
        return this.getCompanyB2BCommerceService().getBusinessProcesses();
    }

    @Override
    public List<String> getUserGroups() {
        return getB2BUserGroupsLookUpStrategy().getUserGroups();
    }

    @Override
    public SearchPageData<B2BBudgetData> getPagedBudgets(final PageableData pageableData) {
        final SearchPageData<B2BBudgetModel> b2BBudgets = getB2BCommerceBudgetService()
                .findPagedBudgets(pageableData);
        return convertPageData(b2BBudgets, getB2BBudgetConverter());
    }

    @Override
    public B2BBudgetData getBudgetDataForCode(final String budgetCode) {
        B2BBudgetData b2BBudgetData = null;
        final B2BBudgetModel budgetModel = getB2BCommerceBudgetService().getBudgetModelForCode(budgetCode);
        if (budgetModel != null) {
            b2BBudgetData = getB2BBudgetConverter().convert(budgetModel);
            if (CollectionUtils.isNotEmpty(budgetModel.getCostCenters())) {
                b2BBudgetData.setCostCenters(
                        Converters.convertAll(budgetModel.getCostCenters(), getB2BCostCenterConverter()));
            }
        }
        return b2BBudgetData;
    }

    @Override
    public String getCurrentStore() {
        final BaseStoreModel baseStore = getBaseStoreService().getCurrentBaseStore();
        return baseStore.getName();
    }

    protected <S, T> SearchPageData<T> convertPageData(final SearchPageData<S> source,
            final Converter<S, T> converter) {
        final SearchPageData<T> result = new SearchPageData<T>();
        result.setPagination(source.getPagination());
        result.setSorts(source.getSorts());
        result.setResults(Converters.convertAll(source.getResults(), converter));
        return result;
    }

    protected B2BSelectionData createB2BSelectionData(final String code, final boolean selected,
            final boolean active) {
        final B2BSelectionData b2BSelectionData = new B2BSelectionData();
        b2BSelectionData.setId(code);
        b2BSelectionData.setNormalizedCode(code == null ? null : code.replaceAll("\\W", "_"));
        b2BSelectionData.setSelected(selected);
        b2BSelectionData.setActive(active);
        return b2BSelectionData;
    }

    protected B2BSelectionData populateRolesForCustomer(final B2BCustomerModel customerModel,
            final B2BSelectionData b2BSelectionData) {
        final List<String> roles = new ArrayList<String>();
        final Set<PrincipalGroupModel> roleModels = new HashSet<PrincipalGroupModel>(customerModel.getGroups());
        CollectionUtils.filter(roleModels,
                PredicateUtils.notPredicate(PredicateUtils.instanceofPredicate(B2BUnitModel.class)));
        CollectionUtils.filter(roleModels,
                PredicateUtils.notPredicate(PredicateUtils.instanceofPredicate(B2BUserGroupModel.class)));

        for (final PrincipalGroupModel role : roleModels) {
            roles.add(role.getUid());
        }
        b2BSelectionData.setRoles(roles);

        return b2BSelectionData;
    }

    protected <T extends CompanyB2BCommerceService> T getCompanyB2BCommerceService() {
        return (T) companyB2BCommerceService;
    }

    @Required
    public void setCompanyB2BCommerceService(final CompanyB2BCommerceService companyB2BCommerceService) {
        this.companyB2BCommerceService = companyB2BCommerceService;
    }

    protected Converter<B2BCustomerModel, UserData> getB2BUserConverter() {
        return b2BUserConverter;
    }

    @Required
    public void setB2BUserConverter(final Converter<B2BCustomerModel, UserData> b2BUserConverter) {
        this.b2BUserConverter = b2BUserConverter;
    }

    protected Converter<B2BUnitModel, B2BUnitNodeData> getUnitTreeConverter() {
        return unitTreeConverter;
    }

    @Required
    public void setUnitTreeConverter(final Converter<B2BUnitModel, B2BUnitNodeData> unitTreeConverter) {
        this.unitTreeConverter = unitTreeConverter;
    }

    protected Converter<B2BUnitModel, B2BUnitData> getB2BUnitConverter() {
        return b2BUnitConverter;
    }

    @Required
    public void setB2BUnitConverter(final Converter<B2BUnitModel, B2BUnitData> b2BUnitConverter) {
        this.b2BUnitConverter = b2BUnitConverter;
    }

    protected Converter<B2BCostCenterModel, B2BCostCenterData> getB2BCostCenterConverter() {
        return b2BCostCenterConverter;
    }

    @Required
    public void setB2BCostCenterConverter(
            final Converter<B2BCostCenterModel, B2BCostCenterData> b2bCostCenterConverter) {
        b2BCostCenterConverter = b2bCostCenterConverter;
    }

    protected Converter<B2BCustomerModel, CustomerData> getB2BCustomerConverter() {
        return b2BCustomerConverter;
    }

    @Required
    public void setB2BCustomerConverter(final Converter<B2BCustomerModel, CustomerData> b2bCustomerConverter) {
        b2BCustomerConverter = b2bCustomerConverter;
    }

    protected Converter<B2BBudgetModel, B2BBudgetData> getB2BBudgetConverter() {
        return b2BBudgetConverter;
    }

    @Required
    public void setB2BBudgetConverter(final Converter<B2BBudgetModel, B2BBudgetData> b2bBudgetConverter) {
        b2BBudgetConverter = b2bBudgetConverter;
    }

    protected Populator<AddressData, AddressModel> getAddressReversePopulator() {
        return addressReversePopulator;
    }

    @Required
    public void setAddressReversePopulator(final Populator<AddressData, AddressModel> addressReversePopulator) {
        this.addressReversePopulator = addressReversePopulator;
    }

    protected Converter<B2BPermissionModel, B2BPermissionData> getB2BPermissionConverter() {
        return b2BPermissionConverter;
    }

    @Required
    public void setB2BPermissionConverter(
            final Converter<B2BPermissionModel, B2BPermissionData> b2BPermissionConverter) {
        this.b2BPermissionConverter = b2BPermissionConverter;
    }

    protected UserService getUserService() {
        return userService;
    }

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

    protected B2BUserGroupsLookUpStrategy getB2BUserGroupsLookUpStrategy() {
        return b2BUserGroupsLookUpStrategy;
    }

    @Required
    public void setB2BUserGroupsLookUpStrategy(final B2BUserGroupsLookUpStrategy b2BUserGroupsLookUpStrategy) {
        this.b2BUserGroupsLookUpStrategy = b2BUserGroupsLookUpStrategy;
    }

    protected B2BBudgetReversePopulator getB2BBudgetReversePopulator() {
        return b2BBudgetReversePopulator;
    }

    @Required
    public void setB2BBudgetReversePopulator(final B2BBudgetReversePopulator b2bBudgetReversePopulator) {
        b2BBudgetReversePopulator = b2bBudgetReversePopulator;
    }

    protected B2BCostCenterReversePopulator getB2BCostCenterReversePopulator() {
        return b2BCostCenterReversePopulator;
    }

    @Required
    public void setB2BCostCenterReversePopulator(
            final B2BCostCenterReversePopulator b2bCostCenterReversePopulator) {
        b2BCostCenterReversePopulator = b2bCostCenterReversePopulator;
    }

    protected Converter<B2BUserGroupModel, B2BUserGroupData> getB2BUserGroupConverter() {
        return b2BUserGroupConverter;
    }

    @Required
    public void setB2BUserGroupConverter(
            final Converter<B2BUserGroupModel, B2BUserGroupData> b2BUserGroupConverter) {
        this.b2BUserGroupConverter = b2BUserGroupConverter;
    }

    protected Converter<B2BPermissionTypeEnum, B2BPermissionTypeData> getB2BPermissionTypeDataConverter() {
        return b2BPermissionTypeDataConverter;
    }

    @Required
    public void setB2BPermissionTypeDataConverter(
            final Converter<B2BPermissionTypeEnum, B2BPermissionTypeData> b2bPermissionTypeDataConverter) {
        b2BPermissionTypeDataConverter = b2bPermissionTypeDataConverter;
    }

    /**
     * @return the b2bCustomerReversePopulator
     */
    protected B2BCustomerReversePopulator getB2BCustomerReversePopulator() {
        return b2BCustomerReversePopulator;
    }

    /**
     * @param b2BCustomerReversePopulator
     *           the b2bCustomerReversePopulator to set
     */
    @Required
    public void setB2BCustomerReversePopulator(final B2BCustomerReversePopulator b2BCustomerReversePopulator) {
        this.b2BCustomerReversePopulator = b2BCustomerReversePopulator;
    }

    protected EnumerationService getEnumerationService() {
        return enumerationService;
    }

    @Required
    public void setEnumerationService(final EnumerationService enumerationService) {
        this.enumerationService = enumerationService;
    }

    protected B2BPermissionsReversePopulator getB2BPermissionReversePopulator() {
        return b2BPermissionReversePopulator;
    }

    @Required
    public void setB2BPermissionReversePopulator(
            final B2BPermissionsReversePopulator b2bPermissionReversePopulator) {
        b2BPermissionReversePopulator = b2bPermissionReversePopulator;
    }

    protected B2BCommerceUserService getB2BCommerceUserService() {
        return b2BCommerceUserService;
    }

    @Required
    public void setB2BCommerceUserService(final B2BCommerceUserService b2BCommerceUserService) {
        this.b2BCommerceUserService = b2BCommerceUserService;
    }

    protected B2BCommerceUnitService getB2BCommerceUnitService() {
        return b2BCommerceUnitService;
    }

    @Required
    public void setB2BCommerceUnitService(final B2BCommerceUnitService b2BCommerceUnitService) {
        this.b2BCommerceUnitService = b2BCommerceUnitService;
    }

    protected B2BCommercePermissionService getB2BCommercePermissionService() {
        return b2BCommercePermissionService;
    }

    @Required
    public void setB2BCommercePermissionService(final B2BCommercePermissionService b2BCommercePermissionService) {
        this.b2BCommercePermissionService = b2BCommercePermissionService;
    }

    protected B2BCommerceBudgetService getB2BCommerceBudgetService() {
        return b2BCommerceBudgetService;
    }

    @Required
    public void setB2BCommerceBudgetService(final B2BCommerceBudgetService b2BCommerceBudgetService) {
        this.b2BCommerceBudgetService = b2BCommerceBudgetService;
    }

    protected B2BCommerceCostCenterService getB2BCommerceCostCenterService() {
        return b2BCommerceCostCenterService;
    }

    @Required
    public void setB2BCommerceCostCenterService(final B2BCommerceCostCenterService b2BCommerceCostCenterService) {
        this.b2BCommerceCostCenterService = b2BCommerceCostCenterService;
    }

    protected B2BCommerceB2BUserGroupService getB2BCommerceB2BUserGroupService() {
        return b2BCommerceB2BUserGroupService;
    }

    @Required
    public void setB2BCommerceB2BUserGroupService(
            final B2BCommerceB2BUserGroupService b2BCommerceB2BUserGroupService) {
        this.b2BCommerceB2BUserGroupService = b2BCommerceB2BUserGroupService;
    }

    protected ModelService getModelService() {
        return modelService;
    }

    @Required
    public void setModelService(final ModelService modelService) {
        this.modelService = modelService;
    }

    /**
     * @return the b2BUnitReversePopulator
     */
    protected B2BUnitReversePopulator getB2BUnitReversePopulator() {
        return b2BUnitReversePopulator;
    }

    /**
     * @param b2bUnitReversePopulator
     *           the b2BUnitReversePopulator to set
     */
    @Required
    public void setB2BUnitReversePopulator(final B2BUnitReversePopulator b2bUnitReversePopulator) {
        b2BUnitReversePopulator = b2bUnitReversePopulator;
    }

    public BaseStoreService getBaseStoreService() {
        return baseStoreService;
    }

    @Required
    public void setBaseStoreService(final BaseStoreService baseStoreService) {
        this.baseStoreService = baseStoreService;
    }
}