001
002package com.commercetools.history.models.common;
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.fasterxml.jackson.annotation.*;
012import com.fasterxml.jackson.databind.annotation.*;
013
014import io.vrap.rmf.base.client.utils.Generated;
015
016/**
017 * ParcelMeasurements
018 *
019 * <hr>
020 * Example to create an instance using the builder pattern
021 * <div class=code-example>
022 * <pre><code class='java'>
023 *     ParcelMeasurements parcelMeasurements = ParcelMeasurements.builder()
024 *             .heightInMillimeter(1)
025 *             .lengthInMillimeter(1)
026 *             .widthInMillimeter(1)
027 *             .weightInGram(1)
028 *             .build()
029 * </code></pre>
030 * </div>
031 */
032@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
033@JsonDeserialize(as = ParcelMeasurementsImpl.class)
034public interface ParcelMeasurements {
035
036    /**
037     *
038     * @return heightInMillimeter
039     */
040    @NotNull
041    @JsonProperty("heightInMillimeter")
042    public Integer getHeightInMillimeter();
043
044    /**
045     *
046     * @return lengthInMillimeter
047     */
048    @NotNull
049    @JsonProperty("lengthInMillimeter")
050    public Integer getLengthInMillimeter();
051
052    /**
053     *
054     * @return widthInMillimeter
055     */
056    @NotNull
057    @JsonProperty("widthInMillimeter")
058    public Integer getWidthInMillimeter();
059
060    /**
061     *
062     * @return weightInGram
063     */
064    @NotNull
065    @JsonProperty("weightInGram")
066    public Integer getWeightInGram();
067
068    /**
069     * set heightInMillimeter
070     * @param heightInMillimeter value to be set
071     */
072
073    public void setHeightInMillimeter(final Integer heightInMillimeter);
074
075    /**
076     * set lengthInMillimeter
077     * @param lengthInMillimeter value to be set
078     */
079
080    public void setLengthInMillimeter(final Integer lengthInMillimeter);
081
082    /**
083     * set widthInMillimeter
084     * @param widthInMillimeter value to be set
085     */
086
087    public void setWidthInMillimeter(final Integer widthInMillimeter);
088
089    /**
090     * set weightInGram
091     * @param weightInGram value to be set
092     */
093
094    public void setWeightInGram(final Integer weightInGram);
095
096    /**
097     * factory method
098     * @return instance of ParcelMeasurements
099     */
100    public static ParcelMeasurements of() {
101        return new ParcelMeasurementsImpl();
102    }
103
104    /**
105     * factory method to create a shallow copy ParcelMeasurements
106     * @param template instance to be copied
107     * @return copy instance
108     */
109    public static ParcelMeasurements of(final ParcelMeasurements template) {
110        ParcelMeasurementsImpl instance = new ParcelMeasurementsImpl();
111        instance.setHeightInMillimeter(template.getHeightInMillimeter());
112        instance.setLengthInMillimeter(template.getLengthInMillimeter());
113        instance.setWidthInMillimeter(template.getWidthInMillimeter());
114        instance.setWeightInGram(template.getWeightInGram());
115        return instance;
116    }
117
118    /**
119     * factory method to create a deep copy of ParcelMeasurements
120     * @param template instance to be copied
121     * @return copy instance
122     */
123    @Nullable
124    public static ParcelMeasurements deepCopy(@Nullable final ParcelMeasurements template) {
125        if (template == null) {
126            return null;
127        }
128        ParcelMeasurementsImpl instance = new ParcelMeasurementsImpl();
129        instance.setHeightInMillimeter(template.getHeightInMillimeter());
130        instance.setLengthInMillimeter(template.getLengthInMillimeter());
131        instance.setWidthInMillimeter(template.getWidthInMillimeter());
132        instance.setWeightInGram(template.getWeightInGram());
133        return instance;
134    }
135
136    /**
137     * builder factory method for ParcelMeasurements
138     * @return builder
139     */
140    public static ParcelMeasurementsBuilder builder() {
141        return ParcelMeasurementsBuilder.of();
142    }
143
144    /**
145     * create builder for ParcelMeasurements instance
146     * @param template instance with prefilled values for the builder
147     * @return builder
148     */
149    public static ParcelMeasurementsBuilder builder(final ParcelMeasurements template) {
150        return ParcelMeasurementsBuilder.of(template);
151    }
152
153    /**
154     * accessor map function
155     * @param <T> mapped type
156     * @param helper function to map the object
157     * @return mapped value
158     */
159    default <T> T withParcelMeasurements(Function<ParcelMeasurements, T> helper) {
160        return helper.apply(this);
161    }
162
163    /**
164     * gives a TypeReference for usage with Jackson DataBind
165     * @return TypeReference
166     */
167    public static com.fasterxml.jackson.core.type.TypeReference<ParcelMeasurements> typeReference() {
168        return new com.fasterxml.jackson.core.type.TypeReference<ParcelMeasurements>() {
169            @Override
170            public String toString() {
171                return "TypeReference<ParcelMeasurements>";
172            }
173        };
174    }
175}