All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.commercetools.sunrise.sessions.cart.TruncatedMiniCartViewModelFactory Maven / Gradle / Ivy

The newest version!
package com.commercetools.sunrise.sessions.cart;

import com.commercetools.sunrise.framework.injection.RequestScoped;
import com.commercetools.sunrise.framework.viewmodels.formatters.PriceFormatter;
import com.commercetools.sunrise.framework.viewmodels.content.carts.LineItemViewModel;
import com.commercetools.sunrise.framework.viewmodels.content.carts.LineItemViewModelFactory;
import com.commercetools.sunrise.framework.viewmodels.content.carts.MiniCartViewModel;
import com.commercetools.sunrise.framework.viewmodels.content.carts.MiniCartViewModelFactory;
import io.sphere.sdk.carts.Cart;

import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.money.CurrencyUnit;
import java.util.List;

import static java.util.stream.Collectors.toList;

@RequestScoped
public class TruncatedMiniCartViewModelFactory extends MiniCartViewModelFactory {

    private static final int LINE_ITEMS_LIMIT = 5;

    @Inject
    public TruncatedMiniCartViewModelFactory(final CurrencyUnit currency, final PriceFormatter priceFormatter, final LineItemViewModelFactory lineItemViewModelFactory) {
        super(currency, priceFormatter, lineItemViewModelFactory);
    }

    @Override
    protected void fillLineItems(final MiniCartViewModel viewModel, @Nullable final Cart cart) {
        super.fillLineItems(viewModel, cart);
        if (viewModel.getLineItems() != null) {
            viewModel.getLineItems().setList(truncateLineItems(viewModel.getLineItems().getList(), LINE_ITEMS_LIMIT));
        }
    }

    /**
     * Limits the mini cart line item entries to avoid a too large mini cart that won't fit in session.
     * @param lineItemList the line items in cart
     * @param limit the maximum amount of line items to return
     * @return the line items in cart limited up to the given amount
     */
    private List truncateLineItems(final List lineItemList, final int limit) {
        return lineItemList.stream()
                .limit(limit)
                .collect(toList());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy