package com.chrome.codereview.requests; import android.net.Uri; /** * Created by sergeyv on 13/4/14. */ public class SearchOptions { public static enum CloseState { UNKNOWN(1), OPEN(3), CLOSED(2); final int value; CloseState(int value) { this.value = value; } @Override public String toString() { return Integer.toString(value); } } public static class Builder { private String owner; private CloseState closeState = CloseState.UNKNOWN; private boolean withMessages = false; private String reviewer; private String cc; private int limit = 1000; public Builder owner(String owner) { this.owner = owner; return this; } public Builder closeState(CloseState state) { if (state == null) { throw new IllegalArgumentException(); } this.closeState = state; return this; } public Builder withMessages() { this.withMessages = true; return this; } public Builder reviewer(String reviewer) { this.reviewer = reviewer; return this; } public Builder cc(String cc) { this.cc = cc; return this; } public Builder limit(int limit) { this.limit = limit; return this; } public SearchOptions create() { return new SearchOptions(owner, closeState, withMessages, reviewer, cc, limit); } } private final String owner; private final CloseState closeState; private final boolean withMessages; private final String reviewer; private final String cc; private final int limit; public SearchOptions(String owner, CloseState closeState, boolean withMessages, String reviewer, String cc, int limit) { this.owner = owner; this.closeState = closeState; this.withMessages = withMessages; this.reviewer = reviewer; this.cc = cc; this.limit = limit; } public void fillParameters(Uri.Builder builder) { if (owner != null) { builder.appendQueryParameter("owner", owner); } if (closeState != CloseState.UNKNOWN) { builder.appendQueryParameter("closed", closeState.toString()); } if (withMessages) { builder.appendQueryParameter("with_messages", "true"); } if (reviewer != null) { builder.appendQueryParameter("reviewer", reviewer); } if (cc != null) { builder.appendQueryParameter("cc", cc); } if (cc != null) { builder.appendQueryParameter("cc", cc); } builder.appendQueryParameter("limit", limit + ""); } }