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

Java tutorial

Introduction

Here is the source code for de.hybris.platform.b2bacceleratorfacades.company.impl.DefaultB2BCommerceB2BUserGroupFacade.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 static de.hybris.platform.servicelayer.util.ServicesUtil.validateParameterNotNullStandardMessage;

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.B2BCommerceB2BUserGroupFacade;
import de.hybris.platform.b2bacceleratorfacades.company.data.UserData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BPermissionData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BSelectionData;
import de.hybris.platform.b2bacceleratorfacades.order.data.B2BUserGroupData;
import de.hybris.platform.commercefacades.user.data.UserGroupData;
import de.hybris.platform.commerceservices.customer.DuplicateUidException;
import de.hybris.platform.commerceservices.search.pagedata.PageableData;
import de.hybris.platform.commerceservices.search.pagedata.SearchPageData;
import de.hybris.platform.core.model.user.UserGroupModel;
import de.hybris.platform.core.model.user.UserModel;

import org.apache.commons.beanutils.BeanPropertyValueEqualsPredicate;
import org.apache.commons.collections.CollectionUtils;

public class DefaultB2BCommerceB2BUserGroupFacade extends DefaultCompanyB2BCommerceFacade
        implements B2BCommerceB2BUserGroupFacade {

    @Override
    public SearchPageData<UserData> getPagedCustomersForUserGroup(final PageableData pageableData,
            final String usergroupUID) {
        final SearchPageData<UserData> searchPageData = this.getPagedUserData(pageableData);
        // update the results with users that already have been selected.
        final UserGroupModel userGroupModel = getB2BCommerceB2BUserGroupService().getUserGroupForUID(usergroupUID,
                UserGroupModel.class);
        validateParameterNotNull(userGroupModel, String.format("No usergroup found for uid %s", usergroupUID));
        for (final UserData userData : searchPageData.getResults()) {
            final UserModel user = getUserService().getUserForUID(userData.getUid());
            userData.setSelected(CollectionUtils.find(user.getGroups(),
                    new BeanPropertyValueEqualsPredicate(UserModel.UID, userGroupModel.getUid())) != null);
        }
        return searchPageData;
    }

    @Override
    public SearchPageData<B2BPermissionData> getPagedPermissionsForUserGroup(final PageableData pageableData,
            final String usergroupUID) {
        final SearchPageData<B2BPermissionModel> permissions = getB2BCommercePermissionService()
                .getPagedPermissions(pageableData);
        final SearchPageData<B2BPermissionData> searchPageData = convertPageData(permissions,
                getB2BPermissionConverter());
        final B2BUserGroupModel userGroupModel = getCompanyB2BCommerceService().getB2BUserGroupForUid(usergroupUID);
        validateParameterNotNull(userGroupModel, String.format("No usergroup found for uid %s", usergroupUID));
        for (final B2BPermissionData permissionData : searchPageData.getResults()) {
            permissionData.setSelected(
                    CollectionUtils.find(userGroupModel.getPermissions(), new BeanPropertyValueEqualsPredicate(
                            B2BPermissionModel.CODE, permissionData.getCode())) != null);
        }

        return searchPageData;
    }

    @Override
    public B2BSelectionData addPermissionToUserGroup(final String userGroupUid, final String permission) {
        validateParameterNotNullStandardMessage("permission", permission);
        validateParameterNotNullStandardMessage("usergroup", userGroupUid);

        final B2BPermissionModel permissionModel = getB2BCommerceB2BUserGroupService()
                .addPermissionToUserGroup(userGroupUid, permission);
        return createB2BSelectionData(permissionModel.getCode(), true, permissionModel.getActive().booleanValue());
    }

    @Override
    public B2BSelectionData removePermissionFromUserGroup(final String uid, final String permission) {
        validateParameterNotNullStandardMessage("permission", permission);
        validateParameterNotNullStandardMessage("usergroup", uid);

        final B2BPermissionModel permissionModel = getB2BCommerceB2BUserGroupService()
                .removePermissionFromUserGroup(uid, permission);
        return createB2BSelectionData(permissionModel.getCode(), false, permissionModel.getActive().booleanValue());
    }

    @Override
    //TODO: REFACTOR into a ReverseB2BUserGroupPopulator
    public void updateUserGroup(final String userGroupUid, final B2BUserGroupData userGroupData)
            throws DuplicateUidException {
        B2BUserGroupModel userGroupModel = getB2BCommerceB2BUserGroupService().getUserGroupForUID(userGroupUid,
                B2BUserGroupModel.class);
        if (userGroupModel == null) {
            userGroupModel = this.getModelService().create(B2BUserGroupModel.class);
        }
        userGroupModel.setName(userGroupData.getName());
        userGroupModel.setLocName(userGroupData.getName());
        userGroupModel.setUid(userGroupData.getUid());
        if (userGroupData.getUnit() != null) {
            final B2BUnitModel unitModel = this.getCompanyB2BCommerceService()
                    .getUnitForUid(userGroupData.getUnit().getUid());
            userGroupModel.setUnit(unitModel);
        }

        this.getCompanyB2BCommerceService().saveModel(userGroupModel);
    }

    @Override
    public void disableUserGroup(final String userGroupUid) {
        validateParameterNotNullStandardMessage("usergroup id", userGroupUid);
        getB2BCommerceB2BUserGroupService().disableUserGroup(userGroupUid);
    }

    @Override
    public void removeUserGroup(final String userGroupUid) {
        validateParameterNotNullStandardMessage("usergroup id", userGroupUid);
        getB2BCommerceB2BUserGroupService().removeUserGroup(userGroupUid);
    }

    @Override
    public SearchPageData<UserData> getPagedUserData(final PageableData pageableData) {
        final SearchPageData<B2BCustomerModel> customers = getB2BCommerceUserService()
                .getPagedCustomers(pageableData);
        return convertPageData(customers, getB2BUserConverter());
    }

    @Override
    public SearchPageData<B2BUserGroupData> getPagedB2BUserGroups(final PageableData pageableData) {
        final SearchPageData<B2BUserGroupModel> groups = getB2BCommerceB2BUserGroupService()
                .getPagedB2BUserGroups(pageableData);
        final SearchPageData<B2BUserGroupData> searchPageData = convertPageData(groups, getB2BUserGroupConverter());
        return searchPageData;
    }

    @Override
    public B2BUserGroupData getB2BUserGroup(final String uid) {
        validateParameterNotNullStandardMessage("uid", uid);
        final B2BUserGroupModel userGroupModel = getB2BCommerceB2BUserGroupService().getUserGroupForUID(uid,
                B2BUserGroupModel.class);

        if (userGroupModel != null) {
            return this.getB2BUserGroupConverter().convert(userGroupModel);
        }
        return null;
    }

    @Override
    public UserData addMemberToUserGroup(final String usergroup, final String user) {
        validateParameterNotNullStandardMessage("usergroup", usergroup);
        validateParameterNotNullStandardMessage("user", user);

        final B2BCustomerModel customerModel = getB2BCommerceB2BUserGroupService().addMemberToUserGroup(usergroup,
                user);
        final UserData userData = this.getB2BUserConverter().convert(customerModel);
        userData.setSelected(true);
        return userData;
    }

    @Override
    public UserData removeMemberFromUserGroup(final String usergroup, final String user) {
        validateParameterNotNullStandardMessage("usergroup", usergroup);
        validateParameterNotNullStandardMessage("user", user);

        final B2BCustomerModel customerModel = getB2BCommerceB2BUserGroupService()
                .removeMemberFromUserGroup(usergroup, user);
        final UserData userData = this.getB2BUserConverter().convert(customerModel);
        userData.setSelected(false);
        return userData;
    }

    @Override
    public UserGroupData getUserGroupDataForUid(final String uid) {
        final UserGroupModel userGroupForUID = getB2BCommerceB2BUserGroupService().getUserGroupForUID(uid,
                UserGroupModel.class);
        if (userGroupForUID != null) {
            final UserGroupData userGroupData = new UserGroupData();
            userGroupData.setUid(userGroupForUID.getUid());
            userGroupData.setName(userGroupForUID.getName());
            return userGroupData;
        } else {
            return null;
        }
    }
}