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

io.sphere.sdk.orders.LineItemImportDraftBuilder Maven / Gradle / Ivy

The newest version!
package io.sphere.sdk.orders;

import io.sphere.sdk.carts.ItemState;
import io.sphere.sdk.channels.Channel;
import io.sphere.sdk.models.*;
import io.sphere.sdk.products.Price;
import io.sphere.sdk.taxcategories.TaxRate;

import java.util.Optional;
import java.util.Set;

public class LineItemImportDraftBuilder extends Base implements Builder {
    private final Optional productId;
    private final LocalizedStrings name;
    private final ProductVariantImportDraft variant;
    private Price price;
    private long quantity;
    private Optional> state = Optional.empty();
    private Optional> supplyChannel = Optional.empty();
    private Optional taxRate = Optional.empty();

    private LineItemImportDraftBuilder(final ProductVariantImportDraft variant, final long quantity, final Price price, final Optional productId, final LocalizedStrings name) {
        this.price = price;
        this.variant = variant;
        this.quantity = quantity;
        this.productId = productId;
        this.name = name;
    }

    public LineItemImportDraftBuilder price(final Price price) {
        this.price = price;
        return this;
    }

    public LineItemImportDraftBuilder quantity(final long quantity) {
        this.quantity = quantity;
        return this;
    }

    public LineItemImportDraftBuilder state(final Optional> state) {
        this.state = state;
        return this;
    }

    public LineItemImportDraftBuilder state(final Set state) {
        return state(Optional.of(state));
    }

    public LineItemImportDraftBuilder supplyChannel(final Optional> supplyChannel) {
        this.supplyChannel = supplyChannel;
        return this;
    }

    public LineItemImportDraftBuilder supplyChannel(final Referenceable supplyChannel) {
        return supplyChannel(Optional.of(supplyChannel.toReference()));
    }

    public LineItemImportDraftBuilder taxRate(final Optional taxRate) {
        this.taxRate = taxRate;
        return this;
    }

    public LineItemImportDraftBuilder taxRate(final TaxRate taxRate) {
        return taxRate(Optional.of(taxRate));
    }

    public static LineItemImportDraftBuilder of(final ProductVariantImportDraft variant, final long quantity, final Price price, final LocalizedStrings name) {
        return new LineItemImportDraftBuilder(variant, quantity, price, variant.getProductId(), name);
    }

    @Override
    public LineItemImportDraft build() {
        return new LineItemImportDraftImpl(name, productId, variant, price, quantity, state, supplyChannel, taxRate);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy