001 002package com.commercetools.api.models.cart; 003 004import java.util.*; 005import java.util.function.Function; 006 007import io.vrap.rmf.base.client.Builder; 008import io.vrap.rmf.base.client.utils.Generated; 009 010/** 011 * CartSetDirectDiscountsActionBuilder 012 * <hr> 013 * Example to create an instance using the builder pattern 014 * <div class=code-example> 015 * <pre><code class='java'> 016 * CartSetDirectDiscountsAction cartSetDirectDiscountsAction = CartSetDirectDiscountsAction.builder() 017 * .plusDiscounts(discountsBuilder -> discountsBuilder) 018 * .build() 019 * </code></pre> 020 * </div> 021 */ 022@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 023public class CartSetDirectDiscountsActionBuilder implements Builder<CartSetDirectDiscountsAction> { 024 025 private java.util.List<com.commercetools.api.models.cart.DirectDiscountDraft> discounts; 026 027 /** 028 * <ul> 029 * <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li> 030 * <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li> 031 * </ul> 032 * @param discounts value to be set 033 * @return Builder 034 */ 035 036 public CartSetDirectDiscountsActionBuilder discounts( 037 final com.commercetools.api.models.cart.DirectDiscountDraft... discounts) { 038 this.discounts = new ArrayList<>(Arrays.asList(discounts)); 039 return this; 040 } 041 042 /** 043 * <ul> 044 * <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li> 045 * <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li> 046 * </ul> 047 * @param discounts value to be set 048 * @return Builder 049 */ 050 051 public CartSetDirectDiscountsActionBuilder discounts( 052 final java.util.List<com.commercetools.api.models.cart.DirectDiscountDraft> discounts) { 053 this.discounts = discounts; 054 return this; 055 } 056 057 /** 058 * <ul> 059 * <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li> 060 * <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li> 061 * </ul> 062 * @param discounts value to be set 063 * @return Builder 064 */ 065 066 public CartSetDirectDiscountsActionBuilder plusDiscounts( 067 final com.commercetools.api.models.cart.DirectDiscountDraft... discounts) { 068 if (this.discounts == null) { 069 this.discounts = new ArrayList<>(); 070 } 071 this.discounts.addAll(Arrays.asList(discounts)); 072 return this; 073 } 074 075 /** 076 * <ul> 077 * <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li> 078 * <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li> 079 * </ul> 080 * @param builder function to build the discounts value 081 * @return Builder 082 */ 083 084 public CartSetDirectDiscountsActionBuilder plusDiscounts( 085 Function<com.commercetools.api.models.cart.DirectDiscountDraftBuilder, com.commercetools.api.models.cart.DirectDiscountDraftBuilder> builder) { 086 if (this.discounts == null) { 087 this.discounts = new ArrayList<>(); 088 } 089 this.discounts.add(builder.apply(com.commercetools.api.models.cart.DirectDiscountDraftBuilder.of()).build()); 090 return this; 091 } 092 093 /** 094 * <ul> 095 * <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li> 096 * <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li> 097 * </ul> 098 * @param builder function to build the discounts value 099 * @return Builder 100 */ 101 102 public CartSetDirectDiscountsActionBuilder withDiscounts( 103 Function<com.commercetools.api.models.cart.DirectDiscountDraftBuilder, com.commercetools.api.models.cart.DirectDiscountDraftBuilder> builder) { 104 this.discounts = new ArrayList<>(); 105 this.discounts.add(builder.apply(com.commercetools.api.models.cart.DirectDiscountDraftBuilder.of()).build()); 106 return this; 107 } 108 109 /** 110 * <ul> 111 * <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li> 112 * <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li> 113 * </ul> 114 * @param builder function to build the discounts value 115 * @return Builder 116 */ 117 118 public CartSetDirectDiscountsActionBuilder addDiscounts( 119 Function<com.commercetools.api.models.cart.DirectDiscountDraftBuilder, com.commercetools.api.models.cart.DirectDiscountDraft> builder) { 120 return plusDiscounts(builder.apply(com.commercetools.api.models.cart.DirectDiscountDraftBuilder.of())); 121 } 122 123 /** 124 * <ul> 125 * <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li> 126 * <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li> 127 * </ul> 128 * @param builder function to build the discounts value 129 * @return Builder 130 */ 131 132 public CartSetDirectDiscountsActionBuilder setDiscounts( 133 Function<com.commercetools.api.models.cart.DirectDiscountDraftBuilder, com.commercetools.api.models.cart.DirectDiscountDraft> builder) { 134 return discounts(builder.apply(com.commercetools.api.models.cart.DirectDiscountDraftBuilder.of())); 135 } 136 137 /** 138 * <ul> 139 * <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li> 140 * <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li> 141 * </ul> 142 * @return discounts 143 */ 144 145 public java.util.List<com.commercetools.api.models.cart.DirectDiscountDraft> getDiscounts() { 146 return this.discounts; 147 } 148 149 /** 150 * builds CartSetDirectDiscountsAction with checking for non-null required values 151 * @return CartSetDirectDiscountsAction 152 */ 153 public CartSetDirectDiscountsAction build() { 154 Objects.requireNonNull(discounts, CartSetDirectDiscountsAction.class + ": discounts is missing"); 155 return new CartSetDirectDiscountsActionImpl(discounts); 156 } 157 158 /** 159 * builds CartSetDirectDiscountsAction without checking for non-null required values 160 * @return CartSetDirectDiscountsAction 161 */ 162 public CartSetDirectDiscountsAction buildUnchecked() { 163 return new CartSetDirectDiscountsActionImpl(discounts); 164 } 165 166 /** 167 * factory method for an instance of CartSetDirectDiscountsActionBuilder 168 * @return builder 169 */ 170 public static CartSetDirectDiscountsActionBuilder of() { 171 return new CartSetDirectDiscountsActionBuilder(); 172 } 173 174 /** 175 * create builder for CartSetDirectDiscountsAction instance 176 * @param template instance with prefilled values for the builder 177 * @return builder 178 */ 179 public static CartSetDirectDiscountsActionBuilder of(final CartSetDirectDiscountsAction template) { 180 CartSetDirectDiscountsActionBuilder builder = new CartSetDirectDiscountsActionBuilder(); 181 builder.discounts = template.getDiscounts(); 182 return builder; 183 } 184 185}