package org.edx.mobile.model.api; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import org.edx.mobile.social.SocialMember; import org.edx.mobile.util.UnicodeCharacters; import org.edx.mobile.util.UrlUtil; import org.edx.mobile.util.images.CourseCardUtils; import java.io.Serializable; import java.util.List; @SuppressWarnings("serial") public class CourseEntry implements Serializable { private List<SocialMember> members_list; private LatestUpdateModel latest_updates; private String start; // start date private String course_image; private String end; // completion date private String start_display; private StartType start_type; @NonNull private String name; private String org; private String video_outline; private String course_about; private String course_updates; private String course_handouts; private String subscription_id; private String course_url; private String id; private String number; private String discussion_url; private SocialURLModel social_urls; private CoursewareAccess courseware_access; public LatestUpdateModel getLatest_updates() { return latest_updates; } public void setLatest_updates(LatestUpdateModel latest_updates) { this.latest_updates = latest_updates; } public String getStart() { return start; } public void setStart(String start) { this.start = start; } @Nullable public String getCourse_image(@Nullable String baseURL) { return UrlUtil.makeAbsolute(course_image, baseURL); } public void setCourse_image(String course_image) { this.course_image = course_image; } public String getEnd() { return end; } public void setEnd(String end) { this.end = end; } public String getStartDisplay() { return start_display; } public void setStartDisplay(String start_display) { this.start_display = start_display; } public StartType getStartType() { if(start_type == null) start_type = StartType.EMPTY; return start_type; } public void setStartType(StartType start_type) { this.start_type = start_type; } @NonNull public String getName() { return name.replaceAll("-", String.valueOf(UnicodeCharacters.NON_BREAKING_HYPHEN)); } public void setName(@NonNull String name) { this.name = name; } public String getOrg() { return org; } public void setOrg(String org) { this.org = org; } public String getVideo_outline() { return video_outline; } public void setVideo_outline(String video_outline) { this.video_outline = video_outline; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getDiscussionUrl(){ return discussion_url; } public void setDiscussionUrl(String url){ discussion_url = url; } public CoursewareAccess getCoursewareAccess() { return courseware_access; } public void setCoursewareAccess(CoursewareAccess access) { this.courseware_access = access; } public boolean isStarted() { return CourseCardUtils.isStarted(start); } public boolean isEnded() { return CourseCardUtils.isEnded(end); } public boolean hasUpdates() { // check if latest updates available, return true if available if (latest_updates == null) return false; return (latest_updates.getVideo() != null); } public List<SocialMember> getMembers_list() { return members_list; } public void setMembers_list(List<SocialMember> members_list) { this.members_list = members_list; } public String getCourse_about() { return course_about; } public void setCourse_about(String course_about) { this.course_about = course_about; } /** * Returns URL for announcements or updates. * @return */ public String getCourse_updates() { return course_updates; } public void setCourse_updates(String course_updates) { this.course_updates = course_updates; } /** * Returns URL for handouts. * @return */ public String getCourse_handouts() { return course_handouts; } public void setCourse_handouts(String course_handouts) { this.course_handouts = course_handouts; } /** * the unique channel id, for notification service * @return */ public String getSubscription_id() { return subscription_id; } public void setSubscription_id(String subscription_id) { this.subscription_id = subscription_id; } public String getCourse_url() { return course_url; } public void setCourse_url(String course_url) { this.course_url = course_url; } public String getDescription() { return CourseCardUtils.getDescription(org, number, null); } public String getDescriptionWithStartDate(Context context) { return CourseCardUtils.getDescription(org, number, CourseCardUtils.getFormattedDate(context, this)); } }