Skip to content

Commit d8453a2

Browse files
authored
Merge pull request #209 from Ecwid/generalize_nested_classes
Generalize nested classes
2 parents 2442614 + fb378b8 commit d8453a2

7 files changed

Lines changed: 77 additions & 41 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.ecwid.apiclient.v3.dto.common
2+
3+
import com.ecwid.apiclient.v3.dto.product.enums.AttributeValueLocation
4+
import com.ecwid.apiclient.v3.dto.producttype.enums.AttributeType
5+
6+
interface FetchedAttributeValue {
7+
val id: Int?
8+
val name: String?
9+
val type: AttributeType?
10+
val value: String?
11+
val show: AttributeValueLocation?
12+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.ecwid.apiclient.v3.dto.common
2+
3+
import com.ecwid.apiclient.v3.dto.product.enums.AttributeValueAlias
4+
5+
interface UpdatedAttributeValue {
6+
val id: Int?
7+
val alias: AttributeValueAlias?
8+
val name: String?
9+
val value: String?
10+
}

src/main/kotlin/com/ecwid/apiclient/v3/dto/custom/CustomAppRequest.kt

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.ecwid.apiclient.v3.dto.custom
22

33
import com.ecwid.apiclient.v3.dto.cart.result.FetchedCart
4-
import com.ecwid.apiclient.v3.dto.common.ApiRequestDTO
5-
import com.ecwid.apiclient.v3.dto.common.OrderedStringToListStringMap
6-
import com.ecwid.apiclient.v3.dto.common.OrderedStringToStringMap
7-
import com.ecwid.apiclient.v3.dto.common.PictureInfo
4+
import com.ecwid.apiclient.v3.dto.common.*
85
import com.ecwid.apiclient.v3.dto.order.enums.*
96
import com.ecwid.apiclient.v3.dto.product.enums.AttributeValueLocation
107
import com.ecwid.apiclient.v3.dto.producttype.enums.AttributeType
@@ -226,7 +223,10 @@ data class CustomAppRequest(
226223
val applicationLimit: DiscountCouponApplicationLimit? = null,
227224
val creationDate: Date? = null,
228225
val orderCount: Int? = null,
229-
@Deprecated("This field is added for backward compatibility only. Don't use it.", replaceWith = ReplaceWith("catalogLimit"))
226+
@Deprecated(
227+
"This field is added for backward compatibility only. Don't use it.",
228+
replaceWith = ReplaceWith("catalogLimit")
229+
)
230230
val legacyCatalogLimit: DiscountCouponCatalogLimit? = null,
231231
val catalogLimit: DiscountCouponCatalogLimit? = null,
232232
val repeatCustomerOnly: Boolean? = null,
@@ -277,12 +277,16 @@ data class CustomAppRequest(
277277
)
278278

279279
data class AttributeValue(
280-
val id: Int? = null,
281-
val name: String? = null,
282-
val type: AttributeType? = null,
283-
val value: String? = null,
284-
val show: AttributeValueLocation? = null
285-
)
280+
override val id: Int? = null,
281+
override val name: String? = null,
282+
override val type: AttributeType? = null,
283+
override val value: String? = null,
284+
override val show: AttributeValueLocation? = null
285+
) : FetchedAttributeValue {
286+
287+
fun Collection<FetchedAttributeValue>.toOrderAttributeList() = this.map { it as AttributeValue }
288+
289+
}
286290

287291
data class ProductDimensions(
288292
val length: Double? = null,

src/main/kotlin/com/ecwid/apiclient/v3/dto/product/request/UpdatedProduct.kt

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.ecwid.apiclient.v3.dto.product.request
22

3-
import com.ecwid.apiclient.v3.dto.common.NullableUpdatedValue
4-
import com.ecwid.apiclient.v3.dto.common.ApiUpdatedDTO
3+
import com.ecwid.apiclient.v3.dto.common.*
54
import com.ecwid.apiclient.v3.dto.common.ApiUpdatedDTO.ModifyKind
6-
import com.ecwid.apiclient.v3.dto.common.LocalizedValueMap
7-
import com.ecwid.apiclient.v3.dto.common.ProductCondition
85
import com.ecwid.apiclient.v3.dto.product.enums.*
96
import com.ecwid.apiclient.v3.dto.product.result.FetchedProduct
107

@@ -276,11 +273,13 @@ data class UpdatedProduct(
276273
)
277274

278275
data class AttributeValue internal constructor(
279-
val id: Int? = null,
280-
val alias: AttributeValueAlias? = null,
281-
val name: String? = null,
282-
val value: String? = null
283-
) {
276+
override val id: Int? = null,
277+
override val alias: AttributeValueAlias? = null,
278+
override val name: String? = null,
279+
override val value: String? = null
280+
) : UpdatedAttributeValue {
281+
282+
fun Collection<UpdatedAttributeValue>.toProductAttributeList() = this.map { it as AttributeValue }
284283

285284
companion object {
286285

src/main/kotlin/com/ecwid/apiclient/v3/dto/product/result/FetchedProduct.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.ecwid.apiclient.v3.dto.product.result
22

3-
import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO
3+
import com.ecwid.apiclient.v3.dto.common.*
44
import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO.ModifyKind
5-
import com.ecwid.apiclient.v3.dto.common.LocalizedValueMap
6-
import com.ecwid.apiclient.v3.dto.common.PictureInfo
7-
import com.ecwid.apiclient.v3.dto.common.ProductCondition
85
import com.ecwid.apiclient.v3.dto.product.enums.*
96
import com.ecwid.apiclient.v3.dto.product.request.UpdatedProduct
107
import com.ecwid.apiclient.v3.dto.producttype.enums.AttributeType
@@ -238,12 +235,16 @@ data class FetchedProduct(
238235
)
239236

240237
data class AttributeValue(
241-
val id: Int? = null,
242-
val name: String? = null,
243-
val type: AttributeType? = null,
244-
val value: String? = null,
245-
val show: AttributeValueLocation? = null
246-
)
238+
override val id: Int? = null,
239+
override val name: String? = null,
240+
override val type: AttributeType? = null,
241+
override val value: String? = null,
242+
override val show: AttributeValueLocation? = null
243+
) : FetchedAttributeValue {
244+
245+
fun Collection<FetchedAttributeValue>.toProductAttributeList() = this.map { it as AttributeValue }
246+
247+
}
247248

248249
data class RelatedProducts(
249250
val productIds: List<Int>? = null,

src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/UpdatedVariation.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.ecwid.apiclient.v3.dto.variation.request
22

33
import com.ecwid.apiclient.v3.dto.common.ApiUpdatedDTO
44
import com.ecwid.apiclient.v3.dto.common.ApiUpdatedDTO.ModifyKind
5+
import com.ecwid.apiclient.v3.dto.common.UpdatedAttributeValue
56
import com.ecwid.apiclient.v3.dto.product.enums.AttributeValueAlias
67
import com.ecwid.apiclient.v3.dto.product.enums.OutOfStockVisibilityBehaviour
78
import com.ecwid.apiclient.v3.dto.variation.result.FetchedVariation
@@ -34,11 +35,15 @@ data class UpdatedVariation(
3435
) : ApiUpdatedDTO {
3536

3637
data class AttributeValue(
37-
val id: Int? = null,
38-
val alias: AttributeValueAlias? = null,
39-
val name: String? = null,
40-
val value: String? = null
41-
)
38+
override val id: Int? = null,
39+
override val alias: AttributeValueAlias? = null,
40+
override val name: String? = null,
41+
override val value: String? = null
42+
) : UpdatedAttributeValue {
43+
44+
fun Collection<UpdatedAttributeValue>.toVariationAttributeList() = this.map { it as AttributeValue }
45+
46+
}
4247

4348
data class WholesalePrice(
4449
val quantity: Int = 0,

src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/FetchedVariation.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.ecwid.apiclient.v3.dto.variation.result
22

33
import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO
44
import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO.ModifyKind
5+
import com.ecwid.apiclient.v3.dto.common.FetchedAttributeValue
56
import com.ecwid.apiclient.v3.dto.common.LocalizedValueMap
67
import com.ecwid.apiclient.v3.dto.product.enums.AttributeValueLocation
78
import com.ecwid.apiclient.v3.dto.product.enums.OutOfStockVisibilityBehaviour
@@ -49,12 +50,16 @@ data class FetchedVariation(
4950
) : ApiFetchedDTO {
5051

5152
data class AttributeValue(
52-
val id: Int? = null,
53-
val name: String? = null,
54-
val type: AttributeType? = null,
55-
val value: String? = null,
56-
val show: AttributeValueLocation? = null
57-
)
53+
override val id: Int? = null,
54+
override val name: String? = null,
55+
override val type: AttributeType? = null,
56+
override val value: String? = null,
57+
override val show: AttributeValueLocation? = null
58+
) : FetchedAttributeValue {
59+
60+
fun Collection<FetchedAttributeValue>.toVariationAttributeList() = this.map { it as AttributeValue }
61+
62+
}
5863

5964
data class WholesalePrice(
6065
val quantity: Int = 0,

0 commit comments

Comments
 (0)