Package org.broadleafcommerce.core.order.service.legacy

Source Code of org.broadleafcommerce.core.order.service.legacy.LegacyCartServiceImpl

/*
* #%L
* BroadleafCommerce Framework
* %%
* 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.core.order.service.legacy;

import org.broadleafcommerce.core.order.domain.Order;
import org.broadleafcommerce.core.order.domain.OrderItem;
import org.broadleafcommerce.core.order.service.call.MergeCartResponse;
import org.broadleafcommerce.core.order.service.call.OrderItemRequestDTO;
import org.broadleafcommerce.core.order.service.call.ReconstructCartResponse;
import org.broadleafcommerce.core.order.service.exception.AddToCartException;
import org.broadleafcommerce.core.order.service.exception.ItemNotFoundException;
import org.broadleafcommerce.core.order.service.exception.RemoveFromCartException;
import org.broadleafcommerce.core.order.service.exception.UpdateCartException;
import org.broadleafcommerce.core.pricing.service.exception.PricingException;
import org.broadleafcommerce.profile.core.domain.Customer;
import org.broadleafcommerce.profile.core.service.CustomerService;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/*
* TODO setup other BLC items to be JMX managed resources like this one. This would include other services, and singleton beans
* that are configured via Spring and property files (i.e. payment modules, etc...)
*/
/**
* This legacy implementation should no longer be used as of 2.0
*
* The new interface and implementation are OrderService and OrderServiceImpl
*
* @deprecated
*/
@Deprecated
public class LegacyCartServiceImpl extends LegacyOrderServiceImpl implements LegacyCartService {

    @Resource(name="blCustomerService")
    protected CustomerService customerService;

    public Order addAllItemsToCartFromNamedOrder(Order namedOrder) throws PricingException {
        return addAllItemsToCartFromNamedOrder(namedOrder, true);
    }

    public Order addAllItemsToCartFromNamedOrder(Order namedOrder, boolean priceOrder) throws PricingException {
        Order cartOrder = orderDao.readCartForCustomer(namedOrder.getCustomer());
        if (cartOrder == null) {
            cartOrder = createNewCartForCustomer(namedOrder.getCustomer());
        }
        List<OrderItem> items = new ArrayList<OrderItem>(namedOrder.getOrderItems());
        for (int i = 0; i < items.size(); i++) {
            OrderItem orderItem = items.get(i);

            // only run pricing routines on the last item.
            boolean shouldPriceOrder = (priceOrder && (i == items.size() -1));
            if (moveNamedOrderItems) {
                moveItemToOrder(namedOrder, cartOrder, orderItem, shouldPriceOrder);
            } else {
                addOrderItemToOrder(cartOrder, orderItem, shouldPriceOrder);
            }
           
        }
        return cartOrder;
    }
   
    public OrderItem moveItemToCartFromNamedOrder(Long customerId, String orderName, Long orderItemId, Integer quantity) throws PricingException {
        return moveItemToCartFromNamedOrder(customerId, orderName, orderItemId, quantity, true);
    }

    public OrderItem moveItemToCartFromNamedOrder(Long customerId, String orderName, Long orderItemId, Integer quantity, boolean priceOrder) throws PricingException {
        Order wishlistOrder = findNamedOrderForCustomer(orderName, customerService.createCustomerFromId(customerId));
        OrderItem orderItem = orderItemService.readOrderItemById(orderItemId);
        orderItem.setQuantity(quantity);
        return moveItemToCartFromNamedOrder(wishlistOrder, orderItem, priceOrder);
    }
   
    public OrderItem moveItemToCartFromNamedOrder(Order namedOrder, OrderItem orderItem) throws PricingException {
        return moveItemToCartFromNamedOrder(namedOrder, orderItem, true);
    }

    public OrderItem moveItemToCartFromNamedOrder(Order namedOrder, OrderItem orderItem, boolean priceOrder) throws PricingException {
        Order cartOrder = orderDao.readCartForCustomer(namedOrder.getCustomer());
        if (cartOrder == null) {
            cartOrder = createNewCartForCustomer(namedOrder.getCustomer());
        }
        if (moveNamedOrderItems) {
            moveItemToOrder(namedOrder, cartOrder, orderItem, priceOrder);
            if (namedOrder.getOrderItems().size() == 0 && deleteEmptyNamedOrders) {
                cancelOrder(namedOrder);
            }
        } else {
            orderItem = addOrderItemToOrder(cartOrder, orderItem, priceOrder);
        }
       
        return orderItem;
    }
   
    public Order moveAllItemsToCartFromNamedOrder(Order namedOrder) throws PricingException {
        return moveAllItemsToCartFromNamedOrder(namedOrder, true);
    }

    public Order moveAllItemsToCartFromNamedOrder(Order namedOrder, boolean priceOrder) throws PricingException {
        Order cartOrder = addAllItemsToCartFromNamedOrder(namedOrder, priceOrder);
        if (deleteEmptyNamedOrders) {
            cancelOrder(namedOrder);
        }
        return cartOrder;
    }

    public MergeCartResponse mergeCart(Customer customer, Order anonymousCart) throws PricingException {
        return mergeCart(customer, anonymousCart, true);
    }

    public ReconstructCartResponse reconstructCart(Customer customer) throws PricingException {
        return reconstructCart(customer, true);
    }

    public MergeCartResponse mergeCart(Customer customer, Order anonymousCart, boolean priceOrder) throws PricingException {
        try {
            return mergeCartService.mergeCart(customer, anonymousCart, priceOrder);
        } catch (RemoveFromCartException e) {
            // This should not happen as this service should be configured to use the LegacyMergeCartService, which will
            // not throw this exception
            throw new PricingException(e);
        }
    }
   
    public ReconstructCartResponse reconstructCart(Customer customer, boolean priceOrder) throws PricingException {
        try {
            return mergeCartService.reconstructCart(customer, priceOrder);
        } catch (RemoveFromCartException e) {
            // This should not happen as this service should be configured to use the LegacyMergeCartService, which will
            // not throw this exception
            throw new PricingException(e);
        }
    }

    @Override
    public Order addItem(Long orderId, OrderItemRequestDTO orderItemRequestDTO, boolean priceOrder) throws AddToCartException {
        try {
            return addItemToOrder(orderId, orderItemRequestDTO, priceOrder);
        } catch (PricingException e) {
            throw new AddToCartException("Could not add item", e);
        }
    }

    @Override
    public Order updateItemQuantity(Long orderId, OrderItemRequestDTO orderItemRequestDTO, boolean priceOrder) throws UpdateCartException {
        try {
            Order order = findOrderById(orderId);
            updateItemQuantity(order, orderItemRequestDTO);
            return order;
        } catch (PricingException e) {
            throw new UpdateCartException("Could not update cart", e);
        } catch (ItemNotFoundException e) {
            throw new UpdateCartException("Could not update cart", e);
        }
    }

    @Override
    public Order removeItem(Long orderId, Long orderItemId, boolean priceOrder) throws RemoveFromCartException {
        try {
            return removeItemFromOrder(orderId, orderItemId, priceOrder);
        } catch (PricingException e) {
            throw new RemoveFromCartException("Could not remove item", e);
        }
    }
}
TOP

Related Classes of org.broadleafcommerce.core.order.service.legacy.LegacyCartServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.