001 002package com.commercetools.api.models.category; 003 004import java.util.*; 005import java.util.function.Function; 006 007import javax.annotation.Nullable; 008 009import io.vrap.rmf.base.client.Builder; 010import io.vrap.rmf.base.client.utils.Generated; 011 012/** 013 * CategoryAddAssetActionBuilder 014 * <hr> 015 * Example to create an instance using the builder pattern 016 * <div class=code-example> 017 * <pre><code class='java'> 018 * CategoryAddAssetAction categoryAddAssetAction = CategoryAddAssetAction.builder() 019 * .asset(assetBuilder -> assetBuilder) 020 * .build() 021 * </code></pre> 022 * </div> 023 */ 024@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 025public class CategoryAddAssetActionBuilder implements Builder<CategoryAddAssetAction> { 026 027 private com.commercetools.api.models.common.AssetDraft asset; 028 029 @Nullable 030 private Integer position; 031 032 /** 033 * <p>Value to append.</p> 034 * @param builder function to build the asset value 035 * @return Builder 036 */ 037 038 public CategoryAddAssetActionBuilder asset( 039 Function<com.commercetools.api.models.common.AssetDraftBuilder, com.commercetools.api.models.common.AssetDraftBuilder> builder) { 040 this.asset = builder.apply(com.commercetools.api.models.common.AssetDraftBuilder.of()).build(); 041 return this; 042 } 043 044 /** 045 * <p>Value to append.</p> 046 * @param builder function to build the asset value 047 * @return Builder 048 */ 049 050 public CategoryAddAssetActionBuilder withAsset( 051 Function<com.commercetools.api.models.common.AssetDraftBuilder, com.commercetools.api.models.common.AssetDraft> builder) { 052 this.asset = builder.apply(com.commercetools.api.models.common.AssetDraftBuilder.of()); 053 return this; 054 } 055 056 /** 057 * <p>Value to append.</p> 058 * @param asset value to be set 059 * @return Builder 060 */ 061 062 public CategoryAddAssetActionBuilder asset(final com.commercetools.api.models.common.AssetDraft asset) { 063 this.asset = asset; 064 return this; 065 } 066 067 /** 068 * <p>Position in the array at which the Asset should be put. When specified, the value must be between <code>0</code> and the total number of Assets minus <code>1</code>.</p> 069 * @param position value to be set 070 * @return Builder 071 */ 072 073 public CategoryAddAssetActionBuilder position(@Nullable final Integer position) { 074 this.position = position; 075 return this; 076 } 077 078 /** 079 * <p>Value to append.</p> 080 * @return asset 081 */ 082 083 public com.commercetools.api.models.common.AssetDraft getAsset() { 084 return this.asset; 085 } 086 087 /** 088 * <p>Position in the array at which the Asset should be put. When specified, the value must be between <code>0</code> and the total number of Assets minus <code>1</code>.</p> 089 * @return position 090 */ 091 092 @Nullable 093 public Integer getPosition() { 094 return this.position; 095 } 096 097 /** 098 * builds CategoryAddAssetAction with checking for non-null required values 099 * @return CategoryAddAssetAction 100 */ 101 public CategoryAddAssetAction build() { 102 Objects.requireNonNull(asset, CategoryAddAssetAction.class + ": asset is missing"); 103 return new CategoryAddAssetActionImpl(asset, position); 104 } 105 106 /** 107 * builds CategoryAddAssetAction without checking for non-null required values 108 * @return CategoryAddAssetAction 109 */ 110 public CategoryAddAssetAction buildUnchecked() { 111 return new CategoryAddAssetActionImpl(asset, position); 112 } 113 114 /** 115 * factory method for an instance of CategoryAddAssetActionBuilder 116 * @return builder 117 */ 118 public static CategoryAddAssetActionBuilder of() { 119 return new CategoryAddAssetActionBuilder(); 120 } 121 122 /** 123 * create builder for CategoryAddAssetAction instance 124 * @param template instance with prefilled values for the builder 125 * @return builder 126 */ 127 public static CategoryAddAssetActionBuilder of(final CategoryAddAssetAction template) { 128 CategoryAddAssetActionBuilder builder = new CategoryAddAssetActionBuilder(); 129 builder.asset = template.getAsset(); 130 builder.position = template.getPosition(); 131 return builder; 132 } 133 134}