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 * ParcelBuilder 012 * <hr> 013 * Example to create an instance using the builder pattern 014 * <div class=code-example> 015 * <pre><code class='java'> 016 * Parcel parcel = Parcel.builder() 017 * .id("{id}") 018 * .createdAt("{createdAt}") 019 * .measurements(measurementsBuilder -> measurementsBuilder) 020 * .trackingData(trackingDataBuilder -> trackingDataBuilder) 021 * .plusItems(itemsBuilder -> itemsBuilder) 022 * .build() 023 * </code></pre> 024 * </div> 025 */ 026@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 027public class ParcelBuilder implements Builder<Parcel> { 028 029 private String id; 030 031 private String createdAt; 032 033 private com.commercetools.history.models.common.ParcelMeasurements measurements; 034 035 private com.commercetools.history.models.common.TrackingData trackingData; 036 037 private java.util.List<com.commercetools.history.models.common.DeliveryItem> items; 038 039 /** 040 * set the value to the id 041 * @param id value to be set 042 * @return Builder 043 */ 044 045 public ParcelBuilder id(final String id) { 046 this.id = id; 047 return this; 048 } 049 050 /** 051 * set the value to the createdAt 052 * @param createdAt value to be set 053 * @return Builder 054 */ 055 056 public ParcelBuilder createdAt(final String createdAt) { 057 this.createdAt = createdAt; 058 return this; 059 } 060 061 /** 062 * set the value to the measurements using the builder function 063 * @param builder function to build the measurements value 064 * @return Builder 065 */ 066 067 public ParcelBuilder measurements( 068 Function<com.commercetools.history.models.common.ParcelMeasurementsBuilder, com.commercetools.history.models.common.ParcelMeasurementsBuilder> builder) { 069 this.measurements = builder.apply(com.commercetools.history.models.common.ParcelMeasurementsBuilder.of()) 070 .build(); 071 return this; 072 } 073 074 /** 075 * set the value to the measurements using the builder function 076 * @param builder function to build the measurements value 077 * @return Builder 078 */ 079 080 public ParcelBuilder withMeasurements( 081 Function<com.commercetools.history.models.common.ParcelMeasurementsBuilder, com.commercetools.history.models.common.ParcelMeasurements> builder) { 082 this.measurements = builder.apply(com.commercetools.history.models.common.ParcelMeasurementsBuilder.of()); 083 return this; 084 } 085 086 /** 087 * set the value to the measurements 088 * @param measurements value to be set 089 * @return Builder 090 */ 091 092 public ParcelBuilder measurements(final com.commercetools.history.models.common.ParcelMeasurements measurements) { 093 this.measurements = measurements; 094 return this; 095 } 096 097 /** 098 * set the value to the trackingData using the builder function 099 * @param builder function to build the trackingData value 100 * @return Builder 101 */ 102 103 public ParcelBuilder trackingData( 104 Function<com.commercetools.history.models.common.TrackingDataBuilder, com.commercetools.history.models.common.TrackingDataBuilder> builder) { 105 this.trackingData = builder.apply(com.commercetools.history.models.common.TrackingDataBuilder.of()).build(); 106 return this; 107 } 108 109 /** 110 * set the value to the trackingData using the builder function 111 * @param builder function to build the trackingData value 112 * @return Builder 113 */ 114 115 public ParcelBuilder withTrackingData( 116 Function<com.commercetools.history.models.common.TrackingDataBuilder, com.commercetools.history.models.common.TrackingData> builder) { 117 this.trackingData = builder.apply(com.commercetools.history.models.common.TrackingDataBuilder.of()); 118 return this; 119 } 120 121 /** 122 * set the value to the trackingData 123 * @param trackingData value to be set 124 * @return Builder 125 */ 126 127 public ParcelBuilder trackingData(final com.commercetools.history.models.common.TrackingData trackingData) { 128 this.trackingData = trackingData; 129 return this; 130 } 131 132 /** 133 * set values to the items 134 * @param items value to be set 135 * @return Builder 136 */ 137 138 public ParcelBuilder items(final com.commercetools.history.models.common.DeliveryItem... items) { 139 this.items = new ArrayList<>(Arrays.asList(items)); 140 return this; 141 } 142 143 /** 144 * set value to the items 145 * @param items value to be set 146 * @return Builder 147 */ 148 149 public ParcelBuilder items(final java.util.List<com.commercetools.history.models.common.DeliveryItem> items) { 150 this.items = items; 151 return this; 152 } 153 154 /** 155 * add values to the items 156 * @param items value to be set 157 * @return Builder 158 */ 159 160 public ParcelBuilder plusItems(final com.commercetools.history.models.common.DeliveryItem... items) { 161 if (this.items == null) { 162 this.items = new ArrayList<>(); 163 } 164 this.items.addAll(Arrays.asList(items)); 165 return this; 166 } 167 168 /** 169 * add the value to the items using the builder function 170 * @param builder function to build the items value 171 * @return Builder 172 */ 173 174 public ParcelBuilder plusItems( 175 Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItemBuilder> builder) { 176 if (this.items == null) { 177 this.items = new ArrayList<>(); 178 } 179 this.items.add(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()).build()); 180 return this; 181 } 182 183 /** 184 * set the value to the items using the builder function 185 * @param builder function to build the items value 186 * @return Builder 187 */ 188 189 public ParcelBuilder withItems( 190 Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItemBuilder> builder) { 191 this.items = new ArrayList<>(); 192 this.items.add(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()).build()); 193 return this; 194 } 195 196 /** 197 * add the value to the items using the builder function 198 * @param builder function to build the items value 199 * @return Builder 200 */ 201 202 public ParcelBuilder addItems( 203 Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItem> builder) { 204 return plusItems(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of())); 205 } 206 207 /** 208 * set the value to the items using the builder function 209 * @param builder function to build the items value 210 * @return Builder 211 */ 212 213 public ParcelBuilder setItems( 214 Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItem> builder) { 215 return items(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of())); 216 } 217 218 /** 219 * value of id} 220 * @return id 221 */ 222 223 public String getId() { 224 return this.id; 225 } 226 227 /** 228 * value of createdAt} 229 * @return createdAt 230 */ 231 232 public String getCreatedAt() { 233 return this.createdAt; 234 } 235 236 /** 237 * value of measurements} 238 * @return measurements 239 */ 240 241 public com.commercetools.history.models.common.ParcelMeasurements getMeasurements() { 242 return this.measurements; 243 } 244 245 /** 246 * value of trackingData} 247 * @return trackingData 248 */ 249 250 public com.commercetools.history.models.common.TrackingData getTrackingData() { 251 return this.trackingData; 252 } 253 254 /** 255 * value of items} 256 * @return items 257 */ 258 259 public java.util.List<com.commercetools.history.models.common.DeliveryItem> getItems() { 260 return this.items; 261 } 262 263 /** 264 * builds Parcel with checking for non-null required values 265 * @return Parcel 266 */ 267 public Parcel build() { 268 Objects.requireNonNull(id, Parcel.class + ": id is missing"); 269 Objects.requireNonNull(createdAt, Parcel.class + ": createdAt is missing"); 270 Objects.requireNonNull(measurements, Parcel.class + ": measurements is missing"); 271 Objects.requireNonNull(trackingData, Parcel.class + ": trackingData is missing"); 272 Objects.requireNonNull(items, Parcel.class + ": items is missing"); 273 return new ParcelImpl(id, createdAt, measurements, trackingData, items); 274 } 275 276 /** 277 * builds Parcel without checking for non-null required values 278 * @return Parcel 279 */ 280 public Parcel buildUnchecked() { 281 return new ParcelImpl(id, createdAt, measurements, trackingData, items); 282 } 283 284 /** 285 * factory method for an instance of ParcelBuilder 286 * @return builder 287 */ 288 public static ParcelBuilder of() { 289 return new ParcelBuilder(); 290 } 291 292 /** 293 * create builder for Parcel instance 294 * @param template instance with prefilled values for the builder 295 * @return builder 296 */ 297 public static ParcelBuilder of(final Parcel template) { 298 ParcelBuilder builder = new ParcelBuilder(); 299 builder.id = template.getId(); 300 builder.createdAt = template.getCreatedAt(); 301 builder.measurements = template.getMeasurements(); 302 builder.trackingData = template.getTrackingData(); 303 builder.items = template.getItems(); 304 return builder; 305 } 306 307}