package com.artemzin.qualitymatters.api.entities;
import android.support.annotation.NonNull;
import com.google.auto.value.AutoValue;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.SerializedName;
// This class is immutable, it has correctly implemented hashCode and equals.
// Thanks to AutoValue https://github.com/google/auto/tree/master/value.
@AutoValue
public abstract class Item {
private static final String JSON_PROPERTY_ID = "id";
private static final String JSON_PROPERTY_IMAGE_PREVIEW_URL = "image_preview_url";
private static final String JSON_PROPERTY_TITLE = "title";
private static final String JSON_PROPERTY_SHORT_DESCRIPTION = "short_description";
@NonNull
public static Builder builder() {
return new AutoValue_Item.Builder();
}
@NonNull
public static TypeAdapter<Item> typeAdapter(Gson gson) {
return new AutoValue_Item.GsonTypeAdapter(gson);
}
@NonNull
@SerializedName(JSON_PROPERTY_ID)
public abstract String id();
@NonNull
@SerializedName(JSON_PROPERTY_IMAGE_PREVIEW_URL)
public abstract String imagePreviewUrl();
@NonNull
@SerializedName(JSON_PROPERTY_TITLE)
public abstract String title();
@NonNull
@SerializedName(JSON_PROPERTY_SHORT_DESCRIPTION)
public abstract String shortDescription();
@AutoValue.Builder
public static abstract class Builder {
@NonNull
public abstract Builder id(@NonNull String id);
@NonNull
public abstract Builder imagePreviewUrl(@NonNull String imagePreviewUrl);
@NonNull
public abstract Builder title(@NonNull String title);
@NonNull
public abstract Builder shortDescription(@NonNull String shortDescription);
@NonNull
public abstract Item build();
}
}