001
002package com.commercetools.api.models.product_selection;
003
004import java.util.Arrays;
005import java.util.Optional;
006
007import com.fasterxml.jackson.annotation.JsonCreator;
008import com.fasterxml.jackson.annotation.JsonValue;
009
010import io.vrap.rmf.base.client.JsonEnum;
011import io.vrap.rmf.base.client.utils.Generated;
012
013/**
014 * ProductVariantSelectionTypeEnum
015 */
016@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
017public interface ProductVariantSelectionTypeEnum extends JsonEnum {
018
019    ProductVariantSelectionTypeEnum INCLUSION = ProductVariantSelectionTypeEnumEnum.INCLUSION;
020
021    ProductVariantSelectionTypeEnum EXCLUSION = ProductVariantSelectionTypeEnumEnum.EXCLUSION;
022
023    ProductVariantSelectionTypeEnum INCLUDE_ONLY = ProductVariantSelectionTypeEnumEnum.INCLUDE_ONLY;
024
025    ProductVariantSelectionTypeEnum INCLUDE_ALL_EXCEPT = ProductVariantSelectionTypeEnumEnum.INCLUDE_ALL_EXCEPT;
026
027    /**
028     * possible values of ProductVariantSelectionTypeEnum
029     */
030    enum ProductVariantSelectionTypeEnumEnum implements ProductVariantSelectionTypeEnum {
031        /**
032         * inclusion
033         */
034        INCLUSION("inclusion"),
035
036        /**
037         * exclusion
038         */
039        EXCLUSION("exclusion"),
040
041        /**
042         * includeOnly
043         */
044        INCLUDE_ONLY("includeOnly"),
045
046        /**
047         * includeAllExcept
048         */
049        INCLUDE_ALL_EXCEPT("includeAllExcept");
050        private final String jsonName;
051
052        private ProductVariantSelectionTypeEnumEnum(final String jsonName) {
053            this.jsonName = jsonName;
054        }
055
056        public String getJsonName() {
057            return jsonName;
058        }
059
060        public String toString() {
061            return jsonName;
062        }
063    }
064
065    /**
066     * the JSON value
067     * @return json value
068     */
069    @JsonValue
070    String getJsonName();
071
072    /**
073     * the enum value
074     * @return name
075     */
076    String name();
077
078    /**
079     * convert value to string
080     * @return string representation
081     */
082    String toString();
083
084    /**
085     * factory method for a enum value of ProductVariantSelectionTypeEnum
086     * if no enum has been found an anonymous instance will be created
087     * @param value the enum value to be wrapped
088     * @return enum instance
089     */
090    @JsonCreator
091    public static ProductVariantSelectionTypeEnum findEnum(String value) {
092        return findEnumViaJsonName(value).orElse(new ProductVariantSelectionTypeEnum() {
093            @Override
094            public String getJsonName() {
095                return value;
096            }
097
098            @Override
099            public String name() {
100                return value.toUpperCase();
101            }
102
103            public String toString() {
104                return value;
105            }
106        });
107    }
108
109    /**
110     * method to find enum using the JSON value
111     * @param jsonName the json value to be wrapped
112     * @return optional of enum instance
113     */
114    public static Optional<ProductVariantSelectionTypeEnum> findEnumViaJsonName(String jsonName) {
115        return Arrays.stream(values()).filter(t -> t.getJsonName().equals(jsonName)).findFirst();
116    }
117
118    /**
119     * possible enum values
120     * @return array of possible enum values
121     */
122    public static ProductVariantSelectionTypeEnum[] values() {
123        return ProductVariantSelectionTypeEnumEnum.values();
124    }
125
126}