001 002package com.commercetools.history.models.change_value; 003 004import java.time.*; 005import java.util.*; 006import java.util.function.Function; 007 008import javax.annotation.Nullable; 009import javax.validation.constraints.NotNull; 010 011import com.commercetools.history.models.common.SelectionMode; 012import com.fasterxml.jackson.annotation.*; 013import com.fasterxml.jackson.databind.annotation.*; 014 015import io.vrap.rmf.base.client.utils.Generated; 016 017/** 018 * ChangeTargetMultiBuyLineItemsChangeValue 019 * 020 * <hr> 021 * Example to create an instance using the builder pattern 022 * <div class=code-example> 023 * <pre><code class='java'> 024 * ChangeTargetMultiBuyLineItemsChangeValue changeTargetMultiBuyLineItemsChangeValue = ChangeTargetMultiBuyLineItemsChangeValue.builder() 025 * .predicate("{predicate}") 026 * .triggerQuantity(1) 027 * .discountedQuantity(1) 028 * .maxOccurrence(1) 029 * .selectionMode(SelectionMode.CHEAPEST) 030 * .build() 031 * </code></pre> 032 * </div> 033 */ 034@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 035@JsonDeserialize(as = ChangeTargetMultiBuyLineItemsChangeValueImpl.class) 036public interface ChangeTargetMultiBuyLineItemsChangeValue extends ChangeTargetChangeValue { 037 038 /** 039 * discriminator value for ChangeTargetMultiBuyLineItemsChangeValue 040 */ 041 String MULTI_BUY_LINE_ITEMS = "multiBuyLineItems"; 042 043 /** 044 * 045 * @return type 046 */ 047 @NotNull 048 @JsonProperty("type") 049 public String getType(); 050 051 /** 052 * <p>Valid LineItem target predicate.</p> 053 * @return predicate 054 */ 055 @NotNull 056 @JsonProperty("predicate") 057 public String getPredicate(); 058 059 /** 060 * <p>Quantity of Line Items that triggered the application of the discount.</p> 061 * @return triggerQuantity 062 */ 063 @NotNull 064 @JsonProperty("triggerQuantity") 065 public Integer getTriggerQuantity(); 066 067 /** 068 * <p>Quantity of Line Items discounted per application of this discount.</p> 069 * @return discountedQuantity 070 */ 071 @NotNull 072 @JsonProperty("discountedQuantity") 073 public Integer getDiscountedQuantity(); 074 075 /** 076 * <p>Maximum number of times the discount is applicable.</p> 077 * @return maxOccurrence 078 */ 079 @NotNull 080 @JsonProperty("maxOccurrence") 081 public Integer getMaxOccurrence(); 082 083 /** 084 * <p>SelectionMode based on which particular Line Items were discounted.</p> 085 * @return selectionMode 086 */ 087 @NotNull 088 @JsonProperty("selectionMode") 089 public SelectionMode getSelectionMode(); 090 091 /** 092 * <p>Valid LineItem target predicate.</p> 093 * @param predicate value to be set 094 */ 095 096 public void setPredicate(final String predicate); 097 098 /** 099 * <p>Quantity of Line Items that triggered the application of the discount.</p> 100 * @param triggerQuantity value to be set 101 */ 102 103 public void setTriggerQuantity(final Integer triggerQuantity); 104 105 /** 106 * <p>Quantity of Line Items discounted per application of this discount.</p> 107 * @param discountedQuantity value to be set 108 */ 109 110 public void setDiscountedQuantity(final Integer discountedQuantity); 111 112 /** 113 * <p>Maximum number of times the discount is applicable.</p> 114 * @param maxOccurrence value to be set 115 */ 116 117 public void setMaxOccurrence(final Integer maxOccurrence); 118 119 /** 120 * <p>SelectionMode based on which particular Line Items were discounted.</p> 121 * @param selectionMode value to be set 122 */ 123 124 public void setSelectionMode(final SelectionMode selectionMode); 125 126 /** 127 * factory method 128 * @return instance of ChangeTargetMultiBuyLineItemsChangeValue 129 */ 130 public static ChangeTargetMultiBuyLineItemsChangeValue of() { 131 return new ChangeTargetMultiBuyLineItemsChangeValueImpl(); 132 } 133 134 /** 135 * factory method to create a shallow copy ChangeTargetMultiBuyLineItemsChangeValue 136 * @param template instance to be copied 137 * @return copy instance 138 */ 139 public static ChangeTargetMultiBuyLineItemsChangeValue of(final ChangeTargetMultiBuyLineItemsChangeValue template) { 140 ChangeTargetMultiBuyLineItemsChangeValueImpl instance = new ChangeTargetMultiBuyLineItemsChangeValueImpl(); 141 instance.setPredicate(template.getPredicate()); 142 instance.setTriggerQuantity(template.getTriggerQuantity()); 143 instance.setDiscountedQuantity(template.getDiscountedQuantity()); 144 instance.setMaxOccurrence(template.getMaxOccurrence()); 145 instance.setSelectionMode(template.getSelectionMode()); 146 return instance; 147 } 148 149 /** 150 * factory method to create a deep copy of ChangeTargetMultiBuyLineItemsChangeValue 151 * @param template instance to be copied 152 * @return copy instance 153 */ 154 @Nullable 155 public static ChangeTargetMultiBuyLineItemsChangeValue deepCopy( 156 @Nullable final ChangeTargetMultiBuyLineItemsChangeValue template) { 157 if (template == null) { 158 return null; 159 } 160 ChangeTargetMultiBuyLineItemsChangeValueImpl instance = new ChangeTargetMultiBuyLineItemsChangeValueImpl(); 161 instance.setPredicate(template.getPredicate()); 162 instance.setTriggerQuantity(template.getTriggerQuantity()); 163 instance.setDiscountedQuantity(template.getDiscountedQuantity()); 164 instance.setMaxOccurrence(template.getMaxOccurrence()); 165 instance.setSelectionMode(template.getSelectionMode()); 166 return instance; 167 } 168 169 /** 170 * builder factory method for ChangeTargetMultiBuyLineItemsChangeValue 171 * @return builder 172 */ 173 public static ChangeTargetMultiBuyLineItemsChangeValueBuilder builder() { 174 return ChangeTargetMultiBuyLineItemsChangeValueBuilder.of(); 175 } 176 177 /** 178 * create builder for ChangeTargetMultiBuyLineItemsChangeValue instance 179 * @param template instance with prefilled values for the builder 180 * @return builder 181 */ 182 public static ChangeTargetMultiBuyLineItemsChangeValueBuilder builder( 183 final ChangeTargetMultiBuyLineItemsChangeValue template) { 184 return ChangeTargetMultiBuyLineItemsChangeValueBuilder.of(template); 185 } 186 187 /** 188 * accessor map function 189 * @param <T> mapped type 190 * @param helper function to map the object 191 * @return mapped value 192 */ 193 default <T> T withChangeTargetMultiBuyLineItemsChangeValue( 194 Function<ChangeTargetMultiBuyLineItemsChangeValue, T> helper) { 195 return helper.apply(this); 196 } 197 198 /** 199 * gives a TypeReference for usage with Jackson DataBind 200 * @return TypeReference 201 */ 202 public static com.fasterxml.jackson.core.type.TypeReference<ChangeTargetMultiBuyLineItemsChangeValue> typeReference() { 203 return new com.fasterxml.jackson.core.type.TypeReference<ChangeTargetMultiBuyLineItemsChangeValue>() { 204 @Override 205 public String toString() { 206 return "TypeReference<ChangeTargetMultiBuyLineItemsChangeValue>"; 207 } 208 }; 209 } 210}