001 002package com.commercetools.history.models.common; 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 * ProductVariantAvailabilityBuilder 012 * <hr> 013 * Example to create an instance using the builder pattern 014 * <div class=code-example> 015 * <pre><code class='java'> 016 * ProductVariantAvailability productVariantAvailability = ProductVariantAvailability.builder() 017 * .isOnStock(true) 018 * .restockableInDays(1) 019 * .availableQuantity(1) 020 * .channels(channelsBuilder -> channelsBuilder) 021 * .build() 022 * </code></pre> 023 * </div> 024 */ 025@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 026public class ProductVariantAvailabilityBuilder implements Builder<ProductVariantAvailability> { 027 028 private Boolean isOnStock; 029 030 private Integer restockableInDays; 031 032 private Integer availableQuantity; 033 034 private com.commercetools.history.models.common.ProductVariantChannelAvailabilityMap channels; 035 036 /** 037 * set the value to the isOnStock 038 * @param isOnStock value to be set 039 * @return Builder 040 */ 041 042 public ProductVariantAvailabilityBuilder isOnStock(final Boolean isOnStock) { 043 this.isOnStock = isOnStock; 044 return this; 045 } 046 047 /** 048 * set the value to the restockableInDays 049 * @param restockableInDays value to be set 050 * @return Builder 051 */ 052 053 public ProductVariantAvailabilityBuilder restockableInDays(final Integer restockableInDays) { 054 this.restockableInDays = restockableInDays; 055 return this; 056 } 057 058 /** 059 * set the value to the availableQuantity 060 * @param availableQuantity value to be set 061 * @return Builder 062 */ 063 064 public ProductVariantAvailabilityBuilder availableQuantity(final Integer availableQuantity) { 065 this.availableQuantity = availableQuantity; 066 return this; 067 } 068 069 /** 070 * set the value to the channels using the builder function 071 * @param builder function to build the channels value 072 * @return Builder 073 */ 074 075 public ProductVariantAvailabilityBuilder channels( 076 Function<com.commercetools.history.models.common.ProductVariantChannelAvailabilityMapBuilder, com.commercetools.history.models.common.ProductVariantChannelAvailabilityMapBuilder> builder) { 077 this.channels = builder 078 .apply(com.commercetools.history.models.common.ProductVariantChannelAvailabilityMapBuilder.of()) 079 .build(); 080 return this; 081 } 082 083 /** 084 * set the value to the channels using the builder function 085 * @param builder function to build the channels value 086 * @return Builder 087 */ 088 089 public ProductVariantAvailabilityBuilder withChannels( 090 Function<com.commercetools.history.models.common.ProductVariantChannelAvailabilityMapBuilder, com.commercetools.history.models.common.ProductVariantChannelAvailabilityMap> builder) { 091 this.channels = builder 092 .apply(com.commercetools.history.models.common.ProductVariantChannelAvailabilityMapBuilder.of()); 093 return this; 094 } 095 096 /** 097 * set the value to the channels 098 * @param channels value to be set 099 * @return Builder 100 */ 101 102 public ProductVariantAvailabilityBuilder channels( 103 final com.commercetools.history.models.common.ProductVariantChannelAvailabilityMap channels) { 104 this.channels = channels; 105 return this; 106 } 107 108 /** 109 * value of isOnStock} 110 * @return isOnStock 111 */ 112 113 public Boolean getIsOnStock() { 114 return this.isOnStock; 115 } 116 117 /** 118 * value of restockableInDays} 119 * @return restockableInDays 120 */ 121 122 public Integer getRestockableInDays() { 123 return this.restockableInDays; 124 } 125 126 /** 127 * value of availableQuantity} 128 * @return availableQuantity 129 */ 130 131 public Integer getAvailableQuantity() { 132 return this.availableQuantity; 133 } 134 135 /** 136 * value of channels} 137 * @return channels 138 */ 139 140 public com.commercetools.history.models.common.ProductVariantChannelAvailabilityMap getChannels() { 141 return this.channels; 142 } 143 144 /** 145 * builds ProductVariantAvailability with checking for non-null required values 146 * @return ProductVariantAvailability 147 */ 148 public ProductVariantAvailability build() { 149 Objects.requireNonNull(isOnStock, ProductVariantAvailability.class + ": isOnStock is missing"); 150 Objects.requireNonNull(restockableInDays, ProductVariantAvailability.class + ": restockableInDays is missing"); 151 Objects.requireNonNull(availableQuantity, ProductVariantAvailability.class + ": availableQuantity is missing"); 152 Objects.requireNonNull(channels, ProductVariantAvailability.class + ": channels is missing"); 153 return new ProductVariantAvailabilityImpl(isOnStock, restockableInDays, availableQuantity, channels); 154 } 155 156 /** 157 * builds ProductVariantAvailability without checking for non-null required values 158 * @return ProductVariantAvailability 159 */ 160 public ProductVariantAvailability buildUnchecked() { 161 return new ProductVariantAvailabilityImpl(isOnStock, restockableInDays, availableQuantity, channels); 162 } 163 164 /** 165 * factory method for an instance of ProductVariantAvailabilityBuilder 166 * @return builder 167 */ 168 public static ProductVariantAvailabilityBuilder of() { 169 return new ProductVariantAvailabilityBuilder(); 170 } 171 172 /** 173 * create builder for ProductVariantAvailability instance 174 * @param template instance with prefilled values for the builder 175 * @return builder 176 */ 177 public static ProductVariantAvailabilityBuilder of(final ProductVariantAvailability template) { 178 ProductVariantAvailabilityBuilder builder = new ProductVariantAvailabilityBuilder(); 179 builder.isOnStock = template.getIsOnStock(); 180 builder.restockableInDays = template.getRestockableInDays(); 181 builder.availableQuantity = template.getAvailableQuantity(); 182 builder.channels = template.getChannels(); 183 return builder; 184 } 185 186}