001 002package com.commercetools.importapi.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 * <p>A representation of the resource to import. Import resources are similar to draft types, but they only support key references. In general, import resources are more granular then regular resources. They are optimized for incremental updates and therefore have a slightly different structure.</p> 018 * 019 * <hr> 020 * Example to create an instance using the builder pattern 021 * <div class=code-example> 022 * <pre><code class='java'> 023 * ImportResource importResource = ImportResource.builder() 024 * .key("{key}") 025 * .build() 026 * </code></pre> 027 * </div> 028 */ 029@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 030@JsonDeserialize(as = ImportResourceImpl.class) 031public interface ImportResource { 032 033 /** 034 * <p>User-defined unique identifier.</p> 035 * @return key 036 */ 037 @NotNull 038 @JsonProperty("key") 039 public String getKey(); 040 041 /** 042 * <p>User-defined unique identifier.</p> 043 * @param key value to be set 044 */ 045 046 public void setKey(final String key); 047 048 /** 049 * factory method 050 * @return instance of ImportResource 051 */ 052 public static ImportResource of() { 053 return new ImportResourceImpl(); 054 } 055 056 /** 057 * factory method to create a shallow copy ImportResource 058 * @param template instance to be copied 059 * @return copy instance 060 */ 061 public static ImportResource of(final ImportResource template) { 062 ImportResourceImpl instance = new ImportResourceImpl(); 063 instance.setKey(template.getKey()); 064 return instance; 065 } 066 067 /** 068 * factory method to create a deep copy of ImportResource 069 * @param template instance to be copied 070 * @return copy instance 071 */ 072 @Nullable 073 public static ImportResource deepCopy(@Nullable final ImportResource template) { 074 if (template == null) { 075 return null; 076 } 077 if (template instanceof com.commercetools.importapi.models.categories.CategoryImport) { 078 return com.commercetools.importapi.models.categories.CategoryImport 079 .deepCopy((com.commercetools.importapi.models.categories.CategoryImport) template); 080 } 081 if (template instanceof com.commercetools.importapi.models.customers.CustomerImport) { 082 return com.commercetools.importapi.models.customers.CustomerImport 083 .deepCopy((com.commercetools.importapi.models.customers.CustomerImport) template); 084 } 085 if (template instanceof com.commercetools.importapi.models.inventories.InventoryImport) { 086 return com.commercetools.importapi.models.inventories.InventoryImport 087 .deepCopy((com.commercetools.importapi.models.inventories.InventoryImport) template); 088 } 089 if (template instanceof com.commercetools.importapi.models.prices.PriceImport) { 090 return com.commercetools.importapi.models.prices.PriceImport 091 .deepCopy((com.commercetools.importapi.models.prices.PriceImport) template); 092 } 093 if (template instanceof com.commercetools.importapi.models.productdrafts.ProductDraftImport) { 094 return com.commercetools.importapi.models.productdrafts.ProductDraftImport 095 .deepCopy((com.commercetools.importapi.models.productdrafts.ProductDraftImport) template); 096 } 097 if (template instanceof com.commercetools.importapi.models.products.ProductImport) { 098 return com.commercetools.importapi.models.products.ProductImport 099 .deepCopy((com.commercetools.importapi.models.products.ProductImport) template); 100 } 101 if (template instanceof com.commercetools.importapi.models.producttypes.ProductTypeImport) { 102 return com.commercetools.importapi.models.producttypes.ProductTypeImport 103 .deepCopy((com.commercetools.importapi.models.producttypes.ProductTypeImport) template); 104 } 105 if (template instanceof com.commercetools.importapi.models.productvariants.ProductVariantImport) { 106 return com.commercetools.importapi.models.productvariants.ProductVariantImport 107 .deepCopy((com.commercetools.importapi.models.productvariants.ProductVariantImport) template); 108 } 109 if (template instanceof com.commercetools.importapi.models.standalone_prices.StandalonePriceImport) { 110 return com.commercetools.importapi.models.standalone_prices.StandalonePriceImport 111 .deepCopy((com.commercetools.importapi.models.standalone_prices.StandalonePriceImport) template); 112 } 113 if (template instanceof com.commercetools.importapi.models.types.TypeImport) { 114 return com.commercetools.importapi.models.types.TypeImport 115 .deepCopy((com.commercetools.importapi.models.types.TypeImport) template); 116 } 117 ImportResourceImpl instance = new ImportResourceImpl(); 118 instance.setKey(template.getKey()); 119 return instance; 120 } 121 122 /** 123 * builder factory method for ImportResource 124 * @return builder 125 */ 126 public static ImportResourceBuilder builder() { 127 return ImportResourceBuilder.of(); 128 } 129 130 /** 131 * create builder for ImportResource instance 132 * @param template instance with prefilled values for the builder 133 * @return builder 134 */ 135 public static ImportResourceBuilder builder(final ImportResource template) { 136 return ImportResourceBuilder.of(template); 137 } 138 139 /** 140 * accessor map function 141 * @param <T> mapped type 142 * @param helper function to map the object 143 * @return mapped value 144 */ 145 default <T> T withImportResource(Function<ImportResource, T> helper) { 146 return helper.apply(this); 147 } 148 149 /** 150 * gives a TypeReference for usage with Jackson DataBind 151 * @return TypeReference 152 */ 153 public static com.fasterxml.jackson.core.type.TypeReference<ImportResource> typeReference() { 154 return new com.fasterxml.jackson.core.type.TypeReference<ImportResource>() { 155 @Override 156 public String toString() { 157 return "TypeReference<ImportResource>"; 158 } 159 }; 160 } 161}