io.sphere.sdk.carts.commands.updateactions.SetCustomLineItemCustomType Maven / Gradle / Ivy
package io.sphere.sdk.carts.commands.updateactions;
import com.fasterxml.jackson.databind.JsonNode;
import io.sphere.sdk.carts.Cart;
import io.sphere.sdk.types.customupdateactions.SetCustomTypeBase;
import javax.annotation.Nullable;
import java.util.Collections;
import java.util.Map;
/**
* Sets or removes a custom type in a custom line item.
*
* @see io.sphere.sdk.types.Custom
*/
public class SetCustomLineItemCustomType extends SetCustomTypeBase {
private final String customLineItemId;
private SetCustomLineItemCustomType(@Nullable final String typeId, @Nullable final String typeKey, @Nullable final Map fields, final String customLineItemId) {
super("setCustomLineItemCustomType", typeId, typeKey, fields);
this.customLineItemId = customLineItemId;
}
public static SetCustomLineItemCustomType ofTypeKeyAndObjects(final String typeKey, final Map fields, final String customLineItemId) {
final Map fieldsJson = mapObjectToJsonMap(fields);
return ofTypeKeyAndJson(typeKey, fieldsJson, customLineItemId);
}
public static SetCustomLineItemCustomType ofTypeIdAndObjects(final String typeId, final Map fields, final String customLineItemId) {
final Map fieldsJson = mapObjectToJsonMap(fields);
return ofTypeIdAndJson(typeId, fieldsJson, customLineItemId);
}
public static SetCustomLineItemCustomType ofTypeIdAndObjects(final String typeId, final String fieldName, final Object value, final String customLineItemId) {
final Map fields = Collections.singletonMap(fieldName, value);
return ofTypeIdAndObjects(typeId, fields, customLineItemId);
}
public static SetCustomLineItemCustomType ofTypeIdAndJson(final String typeId, final Map fields, final String customLineItemId) {
return new SetCustomLineItemCustomType(typeId, null, fields, customLineItemId);
}
public static SetCustomLineItemCustomType ofTypeKeyAndJson(final String typeKey, final Map fields, final String customLineItemId) {
return new SetCustomLineItemCustomType(null, typeKey, fields, customLineItemId);
}
public static SetCustomLineItemCustomType ofRemoveType(final String customLineItemId) {
return new SetCustomLineItemCustomType(null, null, null, customLineItemId);
}
public String getCustomLineItemId() {
return customLineItemId;
}
}