package com.alorma.github.ui.adapter.events; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.alorma.github.R; import com.alorma.github.sdk.bean.dto.response.GithubEvent; import com.alorma.github.sdk.bean.dto.response.events.EventType; import com.alorma.github.ui.adapter.events.holders.CommitCommentEventViewHolder; import com.alorma.github.ui.adapter.events.holders.CreatedBranchEventViewHolder; import com.alorma.github.ui.adapter.events.holders.CreatedRepositoryEventViewHolder; import com.alorma.github.ui.adapter.events.holders.DeletedEventViewHolder; import com.alorma.github.ui.adapter.events.holders.EmptyEventViewHolder; import com.alorma.github.ui.adapter.events.holders.EventViewHolder; import com.alorma.github.ui.adapter.events.holders.ForkEventViewHolder; import com.alorma.github.ui.adapter.events.holders.GollumEventViewHolder; import com.alorma.github.ui.adapter.events.holders.IssueCommentEventViewHolder; import com.alorma.github.ui.adapter.events.holders.IssueEventViewHolder; import com.alorma.github.ui.adapter.events.holders.MemberEventViewHolder; import com.alorma.github.ui.adapter.events.holders.PublicRepoEventViewHolder; import com.alorma.github.ui.adapter.events.holders.PullRequestEventViewHolder; import com.alorma.github.ui.adapter.events.holders.PullRequestReviewCommentEventViewHolder; import com.alorma.github.ui.adapter.events.holders.PushEventViewHolder; import com.alorma.github.ui.adapter.events.holders.ReleaseEventViewHolder; import com.alorma.github.ui.adapter.events.holders.StarredEventViewHolder; import com.alorma.github.ui.adapter.events.holders.WatchedEventViewHolder; public class EventViewHolderFactory { private static final int NO_VIEW = 0; private static final int EVENT_STARRED = 1; private static final int EVENT_WATCHED = 2; private static final int EVENT_CREATED_BRANCH = 3; private static final int EVENT_CREATED_REPOSITORY = 4; private static final int EVENT_ISSUE = 5; private static final int EVENT_ISSUE_COMMENT = 6; private static final int EVENT_FORK = 7; private static final int EVENT_MEMBER = 8; private static final int EVENT_PUBLIC_REPO = 9; private static final int EVENT_PULL_REQUEST = 10; private static final int EVENT_PULL_REQUEST_REVIEW_COMMENT = 11; private static final int EVENT_PUSH = 12; private static final int EVENT_COMMIT_COMMENT = 13; private static final int EVENT_DELETED = 14; private static final int EVENT_RELEASE = 15; private static final int EVENT_GOLLUM = 16; EventViewHolder getViewHolder(LayoutInflater inflater, ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.row_event, parent, false); if (viewType == EVENT_STARRED) { return new StarredEventViewHolder(view); } else if (viewType == EVENT_WATCHED) { return new WatchedEventViewHolder(view); } else if (viewType == EVENT_CREATED_BRANCH) { return new CreatedBranchEventViewHolder(view); } else if (viewType == EVENT_CREATED_REPOSITORY) { return new CreatedRepositoryEventViewHolder(view); } else if (viewType == EVENT_ISSUE) { return new IssueEventViewHolder(view); } else if (viewType == EVENT_ISSUE_COMMENT) { return new IssueCommentEventViewHolder(view); } else if (viewType == EVENT_FORK) { return new ForkEventViewHolder(view); } else if (viewType == EVENT_MEMBER) { return new MemberEventViewHolder(view); } else if (viewType == EVENT_PUBLIC_REPO) { return new PublicRepoEventViewHolder(view); } else if (viewType == EVENT_PULL_REQUEST) { return new PullRequestEventViewHolder(view); } else if (viewType == EVENT_PULL_REQUEST_REVIEW_COMMENT) { return new PullRequestReviewCommentEventViewHolder(view); } else if (viewType == EVENT_PUSH) { return new PushEventViewHolder(view); } else if (viewType == EVENT_COMMIT_COMMENT) { return new CommitCommentEventViewHolder(view); } else if (viewType == EVENT_DELETED) { return new DeletedEventViewHolder(view); } else if (viewType == EVENT_RELEASE) { return new ReleaseEventViewHolder(view); }else if (viewType == EVENT_GOLLUM) { return new GollumEventViewHolder(view); } return new EmptyEventViewHolder(view, null); } public int viewType(GithubEvent event) { if (event.type == EventType.WatchEvent) { if (event.payload.action.equalsIgnoreCase("started")) { return EVENT_STARRED; } else { return EVENT_WATCHED; } } else if (event.type == EventType.CreateEvent) { if (event.payload.ref != null) { return EVENT_CREATED_BRANCH; } else { return EVENT_CREATED_REPOSITORY; } } else if (event.type == EventType.IssuesEvent) { return EVENT_ISSUE; } else if (event.type == EventType.IssueCommentEvent) { return EVENT_ISSUE_COMMENT; } else if (event.type == EventType.ForkEvent) { return EVENT_FORK; } else if (event.type == EventType.MemberEvent) { return EVENT_MEMBER; } else if (event.type == EventType.PullRequestEvent) { return EVENT_PULL_REQUEST; } else if (event.type == EventType.PullRequestReviewCommentEvent) { return EVENT_PULL_REQUEST_REVIEW_COMMENT; } else if (event.type == EventType.PushEvent) { return EVENT_PUSH; } else if (event.type == EventType.CommitCommentEvent) { return EVENT_COMMIT_COMMENT; } else if (event.type == EventType.DeleteEvent) { return EVENT_DELETED; } else if (event.type == EventType.ReleaseEvent) { return EVENT_RELEASE; } else if (event.type == EventType.GollumEvent) { return EVENT_GOLLUM; } else if (event.type == EventType.PublicEvent) { if (event.repo != null) { return EVENT_PUBLIC_REPO; } } return NO_VIEW; } }