Skip to content

Commit

Permalink
question methods
Browse files Browse the repository at this point in the history
  • Loading branch information
kevin-montrose committed Feb 20, 2013
1 parent 8955202 commit 4953ac0
Show file tree
Hide file tree
Showing 7 changed files with 346 additions and 2 deletions.
272 changes: 272 additions & 0 deletions src/com/stackexchange/stacman/QuestionMethods.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,276 @@ public Future<StacManResponse<Question>> getAll(String site, String filter, Inte

return client.createApiTask(Types.Question, ub, "/questions");
}

public Future<StacManResponse<Question>> getByIds(String site, Integer[] ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order) {
return getByIds(site, StacManClient.toIter(ids), filter, page, pagesize, fromdate, todate, sort, mindate, maxdate, min, max, order);
}

public Future<StacManResponse<Question>> getByIds(String site, Iterable<Integer> ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order)
{
if(sort == null){
sort = QuestionSort.Default;
}

client.validateString(site, "site");
client.validateEnumerable(ids, "ids");
client.validatePaging(page, pagesize);
client.validateSortMinMax(sort, mindate, maxdate, min, max);

ApiUrlBuilder ub = new ApiUrlBuilder(String.format("/questions/%1$S", StacManClient.join(";", ids)), false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);
ub.addParameter("sort", sort);
ub.addParameter("min", mindate);
ub.addParameter("max", maxdate);
ub.addParameter("min", min);
ub.addParameter("max", max);
ub.addParameter("order", order);

return client.createApiTask(Types.Question, ub, "/questions/{ids}");
}

public Future<StacManResponse<Answer>> getAnswers(String site, Integer[] ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, AnswerSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order){
return getAnswers(site, StacManClient.toIter(ids), filter, page, pagesize, fromdate, todate, sort, mindate, maxdate, min, max, order);
}

public Future<StacManResponse<Answer>> getAnswers(String site, Iterable<Integer> ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, AnswerSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order)
{
if(sort == null){
sort = AnswerSort.Default;
}

client.validateString(site, "site");
client.validateEnumerable(ids, "ids");
client.validatePaging(page, pagesize);
client.validateSortMinMax(sort, mindate, maxdate, min, max);

ApiUrlBuilder ub = new ApiUrlBuilder(String.format("/questions/%1$S/answers", StacManClient.join(";", ids)), false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);
ub.addParameter("sort", sort);
ub.addParameter("min", mindate);
ub.addParameter("max", maxdate);
ub.addParameter("min", min);
ub.addParameter("max", max);
ub.addParameter("order", order);

return client.createApiTask(Types.Answer, ub, "/questions/{ids}/answers");
}

public Future<StacManResponse<Comment>> getComments(String site, Integer[] ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, CommentSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order) {
return getComments(site, StacManClient.toIter(ids), filter, page, pagesize, fromdate, todate, sort, mindate, maxdate, min, max, order);
}

public Future<StacManResponse<Comment>> getComments(String site, Iterable<Integer> ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, CommentSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order)
{
if(sort == null){
sort = CommentSort.Default;
}

client.validateString(site, "site");
client.validateEnumerable(ids, "ids");
client.validatePaging(page, pagesize);
client.validateSortMinMax(sort, mindate, maxdate, min, max);

ApiUrlBuilder ub = new ApiUrlBuilder(String.format("/questions/%1$S/comments", StacManClient.join(";", ids)), false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);
ub.addParameter("sort", sort);
ub.addParameter("min", mindate);
ub.addParameter("max", maxdate);
ub.addParameter("min", min);
ub.addParameter("max", max);
ub.addParameter("order", order);

return client.createApiTask(Types.Comment, ub, "/questions/{ids}/comments");
}

public Future<StacManResponse<Question>> getLinked(String site, Integer[] ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionRelatedSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order) {
return getLinked(site, StacManClient.toIter(ids), filter, page, pagesize, fromdate, todate, sort, mindate, maxdate, min, max, order);
}

public Future<StacManResponse<Question>> getLinked(String site, Iterable<Integer> ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionRelatedSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order)
{
if(sort == null){
sort = QuestionRelatedSort.Default;
}

client.validateString(site, "site");
client.validateEnumerable(ids, "ids");
client.validatePaging(page, pagesize);
client.validateSortMinMax(sort, mindate, maxdate, min, max);

ApiUrlBuilder ub = new ApiUrlBuilder(String.format("/questions/%1$S/linked", StacManClient.join(";", ids)), false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);
ub.addParameter("sort", sort);
ub.addParameter("min", mindate);
ub.addParameter("max", maxdate);
ub.addParameter("min", min);
ub.addParameter("max", max);
ub.addParameter("order", order);

return client.createApiTask(Types.Question, ub, "/questions/{ids}/linked");
}

public Future<StacManResponse<Question>> getRelated(String site, Integer[] ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionRelatedSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order) {
return getRelated(site, StacManClient.toIter(ids), filter, page, pagesize, fromdate, todate, sort, mindate, maxdate, min, max, order);
}

public Future<StacManResponse<Question>> getRelated(String site, Iterable<Integer> ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionRelatedSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order)
{
if(sort == null){
sort = QuestionRelatedSort.Default;
}

client.validateString(site, "site");
client.validateEnumerable(ids, "ids");
client.validatePaging(page, pagesize);
client.validateSortMinMax(sort, mindate, maxdate, min, max);

ApiUrlBuilder ub = new ApiUrlBuilder(String.format("/questions/%1$S/related", StacManClient.join(";", ids)), false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);
ub.addParameter("sort", sort);
ub.addParameter("min", mindate);
ub.addParameter("max", maxdate);
ub.addParameter("min", min);
ub.addParameter("max", max);
ub.addParameter("order", order);

return client.createApiTask(Types.Question, ub, "/questions/{ids}/related");
}

public Future<StacManResponse<QuestionTimeline>> getTimelines(String site, Integer[] ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate) {
return getTimelines(site, StacManClient.toIter(ids), filter, page, pagesize, fromdate, todate);
}

public Future<StacManResponse<QuestionTimeline>> getTimelines(String site, Iterable<Integer> ids, String filter, Integer page, Integer pagesize, Date fromdate, Date todate) {
client.validateString(site, "site");
client.validateEnumerable(ids, "ids");
client.validatePaging(page, pagesize);

ApiUrlBuilder ub = new ApiUrlBuilder(String.format("/questions/%1$S/timeline", StacManClient.join(";", ids)), false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);

return client.createApiTask(Types.QuestionTimeline, ub, "/questions/{ids}/timeline");
}

public Future<StacManResponse<Question>> getFeatured(String site, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order, String tagged) {
if(sort == null){
sort = QuestionSort.Default;
}

client.validateString(site, "site");
client.validatePaging(page, pagesize);
client.validateSortMinMax(sort, mindate, maxdate, min, max);

ApiUrlBuilder ub = new ApiUrlBuilder("/questions/unanswered", false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);
ub.addParameter("sort", sort);
ub.addParameter("min", mindate);
ub.addParameter("max", maxdate);
ub.addParameter("min", min);
ub.addParameter("max", max);
ub.addParameter("order", order);
ub.addParameter("tagged", tagged);

return client.createApiTask(Types.Question, ub, "/questions/unanswered");
}

public Future<StacManResponse<Question>> getUnanswered(String site, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order, String tagged)
{
if(sort == null){
sort = QuestionSort.Default;
}

client.validateString(site, "site");
client.validatePaging(page, pagesize);
client.validateSortMinMax(sort, mindate, maxdate, min, max);

ApiUrlBuilder ub = new ApiUrlBuilder("/questions/featured", false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);
ub.addParameter("sort", sort);
ub.addParameter("min", mindate);
ub.addParameter("max", maxdate);
ub.addParameter("min", min);
ub.addParameter("max", max);
ub.addParameter("order", order);
ub.addParameter("tagged", tagged);

return client.createApiTask(Types.Question, ub, "/questions/featured");
}

public Future<StacManResponse<Question>> getWithNoAnswers(String site, String filter, Integer page, Integer pagesize, Date fromdate, Date todate, QuestionSort sort, Date mindate, Date maxdate, Integer min, Integer max, Order order, String tagged)
{
if(sort == null){
sort = QuestionSort.Default;
}

client.validateString(site, "site");
client.validatePaging(page, pagesize);
client.validateSortMinMax(sort, mindate, maxdate, min, max);

ApiUrlBuilder ub = new ApiUrlBuilder("/questions/no-answers", false);

ub.addParameter("site", site);
ub.addParameter("filter", filter);
ub.addParameter("page", page);
ub.addParameter("pagesize", pagesize);
ub.addParameter("fromdate", fromdate);
ub.addParameter("todate", todate);
ub.addParameter("sort", sort);
ub.addParameter("min", mindate);
ub.addParameter("max", maxdate);
ub.addParameter("min", min);
ub.addParameter("max", max);
ub.addParameter("order", order);
ub.addParameter("tagged", tagged);

return client.createApiTask(Types.Question, ub, "/questions/no-answers");
}
}
23 changes: 23 additions & 0 deletions src/com/stackexchange/stacman/QuestionRelatedSort.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.stackexchange.stacman;

public enum QuestionRelatedSort implements ISortType {
Activity("date"),
Creation("date"),
Votes("integer"),
Rank("none");

public static final QuestionRelatedSort Default = Activity;

private final String type;

public boolean isInteger(){ return type == "integer"; }
public boolean isDate(){ return type == "date"; }
public boolean isString(){ return type == "string"; }
public boolean isNone() { return type == "none"; }
public boolean isBadgeType() { return false; }
public boolean isBadgeRank() { return false; }

QuestionRelatedSort(String type){
this.type = type;
}
}
36 changes: 36 additions & 0 deletions src/com/stackexchange/stacman/QuestionTimeline.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.stackexchange.stacman;

import java.util.Date;
import java.util.UUID;

public final class QuestionTimeline {
private Integer comment_id;
public Integer getCommentId() { return comment_id;}

private long creation_date;
public Date getCreationDate() { return new Date(creation_date); }

private Integer down_vote_count;
public Integer getDownVoteCount() { return down_vote_count; }

private ShallowUser owner;
public ShallowUser getOwner() { return owner; }

private Integer post_id;
public Integer getPostId() { return post_id; }

private int question_id;
public int getQuestionId() { return question_id; }

private String revision_guid;
public UUID getRevisionGuid() { return UUID.fromString(revision_guid); }

private String timeline_type;
public QuestionTimelineType getTimelineType() { return QuestionTimelineType.valueOf(timeline_type); }

private Integer up_vote_count;
public Integer getUpVoteCount() { return up_vote_count; }

private ShallowUser user;
public ShallowUser getUser() { return user; }
}
12 changes: 12 additions & 0 deletions src/com/stackexchange/stacman/QuestionTimelineType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.stackexchange.stacman;

public enum QuestionTimelineType {
Question,
Answer,
Comment,
UnacceptedAnswer,
AcceptedAnswer,
VoteAggregate,
Revision,
PostStateChanged
}
1 change: 1 addition & 0 deletions src/com/stackexchange/stacman/Types.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@ final class Types {
public static final Type UserTimeline = new TypeToken<Wrapper<UserTimeline>>() {}.getType();
public static final Type TopTag = new TypeToken<Wrapper<TopTag>>() {}.getType();
public static final Type NetworkUser = new TypeToken<Wrapper<NetworkUser>>() {}.getType();
public static final Type QuestionTimeline = new TypeToken<Wrapper<QuestionTimeline>>() {}.getType();
}
2 changes: 1 addition & 1 deletion src/com/stackexchange/stacman/UserTimeline.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public final class UserTimeline {
public Integer getSuggestedEditId() { return suggested_edit_id; }

private String timeline_type;
public TimelineType getTimelineType() { return TimelineType.valueOf(timeline_type); }
public UserTimelineType getTimelineType() { return UserTimelineType.valueOf(timeline_type); }

private String title;
public String getTitle() { return title; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.stackexchange.stacman;

public enum TimelineType {
public enum UserTimelineType {
Commented,
Asked,
Answered,
Expand Down

0 comments on commit 4953ac0

Please sign in to comment.