001 002package com.commercetools.api.models.shipping_method; 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 * ZoneRateDraftBuilder 012 * <hr> 013 * Example to create an instance using the builder pattern 014 * <div class=code-example> 015 * <pre><code class='java'> 016 * ZoneRateDraft zoneRateDraft = ZoneRateDraft.builder() 017 * .zone(zoneBuilder -> zoneBuilder) 018 * .plusShippingRates(shippingRatesBuilder -> shippingRatesBuilder) 019 * .build() 020 * </code></pre> 021 * </div> 022 */ 023@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 024public class ZoneRateDraftBuilder implements Builder<ZoneRateDraft> { 025 026 private com.commercetools.api.models.zone.ZoneResourceIdentifier zone; 027 028 private java.util.List<com.commercetools.api.models.shipping_method.ShippingRateDraft> shippingRates; 029 030 /** 031 * <p>Sets the Zone for which the shippng rates are valid.</p> 032 * @param builder function to build the zone value 033 * @return Builder 034 */ 035 036 public ZoneRateDraftBuilder zone( 037 Function<com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder, com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder> builder) { 038 this.zone = builder.apply(com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder.of()).build(); 039 return this; 040 } 041 042 /** 043 * <p>Sets the Zone for which the shippng rates are valid.</p> 044 * @param builder function to build the zone value 045 * @return Builder 046 */ 047 048 public ZoneRateDraftBuilder withZone( 049 Function<com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder, com.commercetools.api.models.zone.ZoneResourceIdentifier> builder) { 050 this.zone = builder.apply(com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder.of()); 051 return this; 052 } 053 054 /** 055 * <p>Sets the Zone for which the shippng rates are valid.</p> 056 * @param zone value to be set 057 * @return Builder 058 */ 059 060 public ZoneRateDraftBuilder zone(final com.commercetools.api.models.zone.ZoneResourceIdentifier zone) { 061 this.zone = zone; 062 return this; 063 } 064 065 /** 066 * <p>Shipping rates for the <code>currencies</code> configured in the Project. The array must not contain two ShippingRates with the same CurrencyCode.</p> 067 * @param shippingRates value to be set 068 * @return Builder 069 */ 070 071 public ZoneRateDraftBuilder shippingRates( 072 final com.commercetools.api.models.shipping_method.ShippingRateDraft... shippingRates) { 073 this.shippingRates = new ArrayList<>(Arrays.asList(shippingRates)); 074 return this; 075 } 076 077 /** 078 * <p>Shipping rates for the <code>currencies</code> configured in the Project. The array must not contain two ShippingRates with the same CurrencyCode.</p> 079 * @param shippingRates value to be set 080 * @return Builder 081 */ 082 083 public ZoneRateDraftBuilder shippingRates( 084 final java.util.List<com.commercetools.api.models.shipping_method.ShippingRateDraft> shippingRates) { 085 this.shippingRates = shippingRates; 086 return this; 087 } 088 089 /** 090 * <p>Shipping rates for the <code>currencies</code> configured in the Project. The array must not contain two ShippingRates with the same CurrencyCode.</p> 091 * @param shippingRates value to be set 092 * @return Builder 093 */ 094 095 public ZoneRateDraftBuilder plusShippingRates( 096 final com.commercetools.api.models.shipping_method.ShippingRateDraft... shippingRates) { 097 if (this.shippingRates == null) { 098 this.shippingRates = new ArrayList<>(); 099 } 100 this.shippingRates.addAll(Arrays.asList(shippingRates)); 101 return this; 102 } 103 104 /** 105 * <p>Shipping rates for the <code>currencies</code> configured in the Project. The array must not contain two ShippingRates with the same CurrencyCode.</p> 106 * @param builder function to build the shippingRates value 107 * @return Builder 108 */ 109 110 public ZoneRateDraftBuilder plusShippingRates( 111 Function<com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder, com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder> builder) { 112 if (this.shippingRates == null) { 113 this.shippingRates = new ArrayList<>(); 114 } 115 this.shippingRates 116 .add(builder.apply(com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder.of()).build()); 117 return this; 118 } 119 120 /** 121 * <p>Shipping rates for the <code>currencies</code> configured in the Project. The array must not contain two ShippingRates with the same CurrencyCode.</p> 122 * @param builder function to build the shippingRates value 123 * @return Builder 124 */ 125 126 public ZoneRateDraftBuilder withShippingRates( 127 Function<com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder, com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder> builder) { 128 this.shippingRates = new ArrayList<>(); 129 this.shippingRates 130 .add(builder.apply(com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder.of()).build()); 131 return this; 132 } 133 134 /** 135 * <p>Shipping rates for the <code>currencies</code> configured in the Project. The array must not contain two ShippingRates with the same CurrencyCode.</p> 136 * @param builder function to build the shippingRates value 137 * @return Builder 138 */ 139 140 public ZoneRateDraftBuilder addShippingRates( 141 Function<com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder, com.commercetools.api.models.shipping_method.ShippingRateDraft> builder) { 142 return plusShippingRates( 143 builder.apply(com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder.of())); 144 } 145 146 /** 147 * <p>Shipping rates for the <code>currencies</code> configured in the Project. The array must not contain two ShippingRates with the same CurrencyCode.</p> 148 * @param builder function to build the shippingRates value 149 * @return Builder 150 */ 151 152 public ZoneRateDraftBuilder setShippingRates( 153 Function<com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder, com.commercetools.api.models.shipping_method.ShippingRateDraft> builder) { 154 return shippingRates(builder.apply(com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder.of())); 155 } 156 157 /** 158 * <p>Sets the Zone for which the shippng rates are valid.</p> 159 * @return zone 160 */ 161 162 public com.commercetools.api.models.zone.ZoneResourceIdentifier getZone() { 163 return this.zone; 164 } 165 166 /** 167 * <p>Shipping rates for the <code>currencies</code> configured in the Project. The array must not contain two ShippingRates with the same CurrencyCode.</p> 168 * @return shippingRates 169 */ 170 171 public java.util.List<com.commercetools.api.models.shipping_method.ShippingRateDraft> getShippingRates() { 172 return this.shippingRates; 173 } 174 175 /** 176 * builds ZoneRateDraft with checking for non-null required values 177 * @return ZoneRateDraft 178 */ 179 public ZoneRateDraft build() { 180 Objects.requireNonNull(zone, ZoneRateDraft.class + ": zone is missing"); 181 Objects.requireNonNull(shippingRates, ZoneRateDraft.class + ": shippingRates is missing"); 182 return new ZoneRateDraftImpl(zone, shippingRates); 183 } 184 185 /** 186 * builds ZoneRateDraft without checking for non-null required values 187 * @return ZoneRateDraft 188 */ 189 public ZoneRateDraft buildUnchecked() { 190 return new ZoneRateDraftImpl(zone, shippingRates); 191 } 192 193 /** 194 * factory method for an instance of ZoneRateDraftBuilder 195 * @return builder 196 */ 197 public static ZoneRateDraftBuilder of() { 198 return new ZoneRateDraftBuilder(); 199 } 200 201 /** 202 * create builder for ZoneRateDraft instance 203 * @param template instance with prefilled values for the builder 204 * @return builder 205 */ 206 public static ZoneRateDraftBuilder of(final ZoneRateDraft template) { 207 ZoneRateDraftBuilder builder = new ZoneRateDraftBuilder(); 208 builder.zone = template.getZone(); 209 builder.shippingRates = template.getShippingRates(); 210 return builder; 211 } 212 213}