io.sphere.sdk.carts.LineItemImpl Maven / Gradle / Ivy
package io.sphere.sdk.carts;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.sphere.sdk.cartdiscounts.DiscountedLineItemPrice;
import io.sphere.sdk.cartdiscounts.DiscountedLineItemPriceForQuantity;
import io.sphere.sdk.channels.Channel;
import io.sphere.sdk.json.SphereJsonUtils;
import io.sphere.sdk.models.LocalizedString;
import io.sphere.sdk.models.Reference;
import io.sphere.sdk.products.Price;
import io.sphere.sdk.products.ProductVariant;
import io.sphere.sdk.taxcategories.TaxRate;
import io.sphere.sdk.types.CustomFields;
import javax.annotation.Nullable;
import javax.money.MonetaryAmount;
import java.util.List;
import java.util.Set;
import static java.util.Collections.emptyList;
final class LineItemImpl extends LineItemLikeImpl implements LineItem {
private final String productId;
private final LocalizedString name;
@Nullable
private final LocalizedString productSlug;
private final ProductVariant variant;
private final Price price;
@Nullable
private final TaxRate taxRate;
@Nullable
private final Reference supplyChannel;
@Nullable
private final Reference distributionChannel;
@Nullable
private final CustomFields custom;
private final MonetaryAmount totalPrice;
private final List discountedPricePerQuantity;
@Nullable
private final TaxedItemPrice taxedPrice;
@JsonCreator
LineItemImpl(final String id, final String productId, final LocalizedString name,
final JsonNode variant, final Price price, final Long quantity,
final Set state, @Nullable final TaxRate taxRate,
@Nullable final Reference supplyChannel, final DiscountedLineItemPrice discountedPrice,
@Nullable final LocalizedString productSlug, @Nullable final Reference distributionChannel,
@Nullable final CustomFields custom, final MonetaryAmount totalPrice,
final List discountedPricePerQuantity,
@Nullable final TaxedItemPrice taxedPrice) {
super(id, state, quantity, discountedPrice);
this.productId = productId;
this.name = name;
this.taxedPrice = taxedPrice;
if (variant instanceof ObjectNode) {
((ObjectNode) variant).put("productId", productId);
}
this.variant = SphereJsonUtils.readObject(variant, ProductVariant.class);
this.price = price;
this.taxRate = taxRate;
this.supplyChannel = supplyChannel;
this.productSlug = productSlug;
this.distributionChannel = distributionChannel;
this.custom = custom;
this.totalPrice = totalPrice;
this.discountedPricePerQuantity = discountedPricePerQuantity != null ? discountedPricePerQuantity : emptyList();
}
@Override
public String getProductId() {
return productId;
}
@Override
public LocalizedString getName() {
return name;
}
@Override
public ProductVariant getVariant() {
return variant;
}
@Override
public Price getPrice() {
return price;
}
@Override
@Nullable
public TaxRate getTaxRate() {
return taxRate;
}
@Nullable
@Override
public Reference getSupplyChannel() {
return supplyChannel;
}
@Nullable
@Override
public Reference getDistributionChannel() {
return distributionChannel;
}
@Override
@Nullable
public LocalizedString getProductSlug() {
return productSlug;
}
@Override
@Nullable
public CustomFields getCustom() {
return custom;
}
@Override
public MonetaryAmount getTotalPrice() {
return totalPrice;
}
@Override
public List getDiscountedPricePerQuantity() {
return discountedPricePerQuantity;
}
@Override
@Nullable
public TaxedItemPrice getTaxedPrice() {
return taxedPrice;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy