package org.wikipedia.feed.announcement;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
import org.wikipedia.json.annotations.Required;
import org.wikipedia.model.BaseModel;
import org.wikipedia.util.DateUtil;
import java.text.ParseException;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import static org.apache.commons.lang3.StringUtils.defaultString;
class Announcement extends BaseModel {
public static final String SURVEY = "survey";
public static final String FUNDRAISING = "fundraising";
@SuppressWarnings("unused,NullableProblems") @Required @NonNull private String id;
@SuppressWarnings("unused,NullableProblems") @Required @NonNull private String type;
@SuppressWarnings("unused,NullableProblems") @SerializedName("start_time") @Required @NonNull private String startTime;
@SuppressWarnings("unused,NullableProblems") @SerializedName("end_time") @Required @NonNull private String endTime;
@SuppressWarnings("unused") @NonNull private List<String> platforms = Collections.emptyList();
@SuppressWarnings("unused") @NonNull private List<String> countries = Collections.emptyList();
@SuppressWarnings("unused") @SerializedName("caption_HTML") @Nullable private String footerCaption;
@SuppressWarnings("unused") @SerializedName("image") @Nullable private String imageUrl;
@SuppressWarnings("unused,NullableProblems") @Required @NonNull private String text;
@SuppressWarnings("unused") @Nullable private Action action;
@NonNull String id() {
return id;
}
@NonNull String type() {
return type;
}
@Nullable Date startTime() {
try {
return DateUtil.getIso8601DateFormat().parse(startTime);
} catch (ParseException e) {
return null;
}
}
@Nullable Date endTime() {
try {
return DateUtil.getIso8601DateFormat().parse(endTime);
} catch (ParseException e) {
return null;
}
}
@NonNull List<String> platforms() {
return platforms;
}
@NonNull List<String> countries() {
return countries;
}
@NonNull String text() {
return text;
}
boolean hasAction() {
return action != null;
}
@NonNull String actionTitle() {
return action.title();
}
@NonNull String actionUrl() {
return action.url();
}
boolean hasFooterCaption() {
return !TextUtils.isEmpty(footerCaption);
}
@NonNull String footerCaption() {
return defaultString(footerCaption);
}
boolean hasImageUrl() {
return !TextUtils.isEmpty(imageUrl);
}
@NonNull String imageUrl() {
return defaultString(imageUrl);
}
static class Action {
@SuppressWarnings("unused,NullableProblems") @Required @NonNull private String title;
@SuppressWarnings("unused,NullableProblems") @Required @NonNull private String url;
@NonNull String title() {
return title;
}
@NonNull String url() {
return url;
}
}
}