de.hybris.platform.b2bacceleratorfacades.company.populators.B2BUserPopulator.java Source code

Java tutorial

Introduction

Here is the source code for de.hybris.platform.b2bacceleratorfacades.company.populators.B2BUserPopulator.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.populators;

import de.hybris.platform.b2b.model.B2BCustomerModel;
import de.hybris.platform.b2b.model.B2BUnitModel;
import de.hybris.platform.b2b.model.B2BUserGroupModel;
import de.hybris.platform.b2b.services.B2BUnitService;
import de.hybris.platform.b2bacceleratorfacades.company.data.UserData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BUnitData;
import de.hybris.platform.b2bacceleratorservices.strategies.B2BUserGroupsLookUpStrategy;
import de.hybris.platform.converters.Populator;
import de.hybris.platform.core.model.security.PrincipalGroupModel;
import de.hybris.platform.servicelayer.i18n.I18NService;
import de.hybris.platform.servicelayer.user.UserService;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
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.context.MessageSource;

/**
 * Populates {@link UserData} from a {@link B2BCustomerModel}
 */
public class B2BUserPopulator implements Populator<B2BCustomerModel, UserData> {
    private B2BUnitService<B2BUnitModel, B2BCustomerModel> b2BUnitService;
    private UserService userService;
    private MessageSource messageSource;
    private I18NService i18nService;
    private B2BUserGroupsLookUpStrategy b2BUserGroupsLookUpStrategy;

    @Override
    public void populate(final B2BCustomerModel b2BCustomerModel, final UserData userData) {
        final B2BUnitModel parentUnit = getB2BUnitService().getParent(b2BCustomerModel);
        userData.setUid(b2BCustomerModel.getUid());
        userData.setNormalizedUid(userData.getUid().replaceAll("\\W", "_"));
        userData.setName(b2BCustomerModel.getName());
        final B2BUnitData b2BUnitData = new B2BUnitData();
        b2BUnitData.setUid(parentUnit.getUid());
        b2BUnitData.setName(parentUnit.getLocName());
        b2BUnitData.setActive(Boolean.TRUE.equals(parentUnit.getActive()));

        userData.setUnit(b2BUnitData);
        userData.setActive(Boolean.TRUE.equals(b2BCustomerModel.getActive()));
        populateRoles(b2BCustomerModel, userData);
    }

    protected void populateRoles(final B2BCustomerModel source, final UserData target) {
        final List<String> roles = new ArrayList<String>();
        final Set<PrincipalGroupModel> roleModels = new HashSet<PrincipalGroupModel>(source.getGroups());
        CollectionUtils.filter(roleModels,
                PredicateUtils.notPredicate(PredicateUtils.instanceofPredicate(B2BUnitModel.class)));
        CollectionUtils.filter(roleModels,
                PredicateUtils.notPredicate(PredicateUtils.instanceofPredicate(B2BUserGroupModel.class)));

        for (final PrincipalGroupModel role : roleModels) {
            // only display allowed usergroups
            if (getB2BUserGroupsLookUpStrategy().getUserGroups().contains(role.getUid())) {
                roles.add(role.getUid());
            }
        }
        target.setRoles(roles);
    }

    protected B2BUnitService<B2BUnitModel, B2BCustomerModel> getB2BUnitService() {
        return b2BUnitService;
    }

    @Required
    public void setB2BUnitService(final B2BUnitService<B2BUnitModel, B2BCustomerModel> b2BUnitService) {
        this.b2BUnitService = b2BUnitService;
    }

    protected UserService getUserService() {
        return userService;
    }

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

    protected MessageSource getMessageSource() {
        return messageSource;
    }

    @Required
    public void setMessageSource(final MessageSource messageSource) {
        this.messageSource = messageSource;
    }

    protected I18NService getI18nService() {
        return i18nService;
    }

    @Required
    public void setI18nService(final I18NService i18nService) {
        this.i18nService = i18nService;
    }

    protected B2BUserGroupsLookUpStrategy getB2BUserGroupsLookUpStrategy() {
        return b2BUserGroupsLookUpStrategy;
    }

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

}