001
002package com.commercetools.api.client;
003
004import java.net.URI;
005import java.time.Duration;
006import java.util.ArrayList;
007import java.util.List;
008import java.util.concurrent.CompletableFuture;
009
010import io.vrap.rmf.base.client.*;
011import io.vrap.rmf.base.client.utils.Generated;
012
013import org.apache.commons.lang3.builder.EqualsBuilder;
014import org.apache.commons.lang3.builder.HashCodeBuilder;
015
016/**
017 *  <p>Create an Order by Import</p>
018 *
019 * <hr>
020 * <div class=code-example>
021 * <pre><code class='java'>{@code
022 *   CompletableFuture<ApiHttpResponse<com.commercetools.api.models.order.Order>> result = apiRoot
023 *            .withProjectKey("{projectKey}")
024 *            .orders()
025 *            .importOrder()
026 *            .post(null)
027 *            .execute()
028 * }</code></pre>
029 * </div>
030 */
031@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
032public class ByProjectKeyOrdersImportPost extends
033        BodyApiMethod<ByProjectKeyOrdersImportPost, com.commercetools.api.models.order.Order, com.commercetools.api.models.order.OrderImportDraft>
034        implements com.commercetools.api.client.ErrorableTrait<ByProjectKeyOrdersImportPost> {
035
036    private String projectKey;
037
038    private com.commercetools.api.models.order.OrderImportDraft orderImportDraft;
039
040    public ByProjectKeyOrdersImportPost(final ApiHttpClient apiHttpClient, String projectKey,
041            com.commercetools.api.models.order.OrderImportDraft orderImportDraft) {
042        super(apiHttpClient);
043        this.projectKey = projectKey;
044        this.orderImportDraft = orderImportDraft;
045    }
046
047    public ByProjectKeyOrdersImportPost(ByProjectKeyOrdersImportPost t) {
048        super(t);
049        this.projectKey = t.projectKey;
050        this.orderImportDraft = t.orderImportDraft;
051    }
052
053    @Override
054    protected ApiHttpRequest buildHttpRequest() {
055        List<String> params = new ArrayList<>(getQueryParamUriStrings());
056        String httpRequestPath = String.format("%s/orders/import", this.projectKey);
057        if (!params.isEmpty()) {
058            httpRequestPath += "?" + String.join("&", params);
059        }
060        return new ApiHttpRequest(ApiHttpMethod.POST, URI.create(httpRequestPath), getHeaders(),
061            io.vrap.rmf.base.client.utils.json.JsonUtils
062                    .executing(() -> apiHttpClient().getSerializerService().toJsonByteArray(orderImportDraft)));
063
064    }
065
066    @Override
067    public ApiHttpResponse<com.commercetools.api.models.order.Order> executeBlocking(final ApiHttpClient client,
068            final Duration timeout) {
069        return executeBlocking(client, timeout, com.commercetools.api.models.order.Order.class);
070    }
071
072    @Override
073    public CompletableFuture<ApiHttpResponse<com.commercetools.api.models.order.Order>> execute(
074            final ApiHttpClient client) {
075        return execute(client, com.commercetools.api.models.order.Order.class);
076    }
077
078    public String getProjectKey() {
079        return this.projectKey;
080    }
081
082    public void setProjectKey(final String projectKey) {
083        this.projectKey = projectKey;
084    }
085
086    public com.commercetools.api.models.order.OrderImportDraft getBody() {
087        return orderImportDraft;
088    }
089
090    public ByProjectKeyOrdersImportPost withBody(com.commercetools.api.models.order.OrderImportDraft orderImportDraft) {
091        ByProjectKeyOrdersImportPost t = copy();
092        t.orderImportDraft = orderImportDraft;
093        return t;
094    }
095
096    @Override
097    public boolean equals(Object o) {
098        if (this == o)
099            return true;
100
101        if (o == null || getClass() != o.getClass())
102            return false;
103
104        ByProjectKeyOrdersImportPost that = (ByProjectKeyOrdersImportPost) o;
105
106        return new EqualsBuilder().append(projectKey, that.projectKey)
107                .append(orderImportDraft, that.orderImportDraft)
108                .isEquals();
109    }
110
111    @Override
112    public int hashCode() {
113        return new HashCodeBuilder(17, 37).append(projectKey).append(orderImportDraft).toHashCode();
114    }
115
116    @Override
117    protected ByProjectKeyOrdersImportPost copy() {
118        return new ByProjectKeyOrdersImportPost(this);
119    }
120}