Skip to content
This repository has been archived by the owner on Feb 1, 2021. It is now read-only.

Commit

Permalink
Merge pull request #35 from daniel-sc/new_filter
Browse files Browse the repository at this point in the history
adding support for filter operation
  • Loading branch information
cmchase authored Mar 6, 2017
2 parents 60da00d + 1291f89 commit 3f8eba2
Show file tree
Hide file tree
Showing 8 changed files with 188 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/main/java/com/podio/item/ItemAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.podio.filter.ExternalIdFilterBy;
import com.podio.filter.FilterByValue;
import com.podio.filter.SortBy;
import com.podio.item.filter.ItemFilter;
import com.sun.jersey.api.client.GenericType;
import com.sun.jersey.api.client.WebResource;

Expand Down Expand Up @@ -266,6 +267,11 @@ public List<ItemRevision> getItemRevisions(int itemId) {
});
}

public ItemsResponse filterItems(int appId, ItemFilter filter) {
return getResourceFactory().getApiResource("/item/app/" + appId + "/filter/")
.entity(filter, MediaType.APPLICATION_JSON_TYPE).post(ItemsResponse.class);
}

/**
* Returns the items on app matching the given filters.
*
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/podio/item/ItemBadge.java
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ public int getFiles() {
return files;
}

@JsonProperty("file_count")
public void setFiles(int files) {
this.files = files;
}
Expand Down
17 changes: 16 additions & 1 deletion src/main/java/com/podio/item/filter/Filter.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
package com.podio.item.filter;

public class Filter {
import org.codehaus.jackson.annotate.JsonProperty;

public abstract class Filter<VALUES> {

private final String key;

Filter(String key) {
this.key = key;
}

@JsonProperty("values")
public abstract VALUES getValues();

@JsonProperty("key")
public String getKey() {
return key;
}
}
28 changes: 28 additions & 0 deletions src/main/java/com/podio/item/filter/FilterCreatedOn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.podio.item.filter;

import org.codehaus.jackson.annotate.JsonProperty;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FilterCreatedOn extends Filter<FilterInterval> {

/** non-static to allow for multi threading */
private final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");

private final FilterInterval values;

public FilterCreatedOn(Date from, Date to) {
super("created_on");
values = new FilterInterval();
values.setFrom(from != null ? DATE_FORMAT.format(from) : null);
values.setTo(to != null ? DATE_FORMAT.format(to) : null);
}

@Override
@JsonProperty("values")
public FilterInterval getValues() {
return values;
}
}
25 changes: 25 additions & 0 deletions src/main/java/com/podio/item/filter/FilterDateField.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.podio.item.filter;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FilterDateField extends FilterFieldValue<FilterInterval> {

/** non-static to allow for multi threading */
private final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");

private final FilterInterval values;

public FilterDateField(int fieldId, Date from, Date to) {
super(fieldId);
values = new FilterInterval();
values.setFrom(from != null ? DATE_FORMAT.format(from) : null);
values.setTo(to != null ? DATE_FORMAT.format(to) : null);
}

@Override
public FilterInterval getValues() {
return values;
}
}
8 changes: 8 additions & 0 deletions src/main/java/com/podio/item/filter/FilterFieldValue.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.podio.item.filter;

public abstract class FilterFieldValue<VALUES> extends Filter<VALUES> {

public FilterFieldValue(int fieldId) {
super(String.valueOf(fieldId));
}
}
26 changes: 26 additions & 0 deletions src/main/java/com/podio/item/filter/FilterInterval.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.podio.item.filter;

import org.codehaus.jackson.annotate.JsonProperty;

public class FilterInterval {

private String from;
private String to;

@JsonProperty("from")
public String getFrom() {
return from;
}

public void setFrom(String from) {
this.from = from;
}
@JsonProperty("to")
public String getTo() {
return to;
}

public void setTo(String to) {
this.to = to;
}
}
78 changes: 78 additions & 0 deletions src/main/java/com/podio/item/filter/ItemFilter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package com.podio.item.filter;

import org.codehaus.jackson.annotate.JsonProperty;

import java.util.ArrayList;
import java.util.List;

public class ItemFilter {

private String sortBy;
private Boolean sortDesc;
private Integer limit;
private Integer offset;
private List<Filter> filters;

public ItemFilter() {
filters = new ArrayList<Filter>();
}

/**
* Creates a copy (actual filters are only shallow copy!)
* @param filter
*/
public ItemFilter(ItemFilter filter) {
this();
sortBy = filter.getSortBy();
sortDesc = filter.getSortDesc();
limit = filter.getLimit();
offset = filter.getOffset();
filters = filter.getFilters();
}


@JsonProperty("sort_by")
public String getSortBy() {
return sortBy;
}

public void setSortBy(String sortBy) {
this.sortBy = sortBy;
}

@JsonProperty("sort_desc")
public Boolean getSortDesc() {
return sortDesc;
}

public void setSortDesc(Boolean sortDesc) {
this.sortDesc = sortDesc;
}

@JsonProperty("limit")
public Integer getLimit() {
return limit;
}

public void setLimit(Integer limit) {
this.limit = limit;
}

@JsonProperty("offset")
public Integer getOffset() {
return offset;
}

public void setOffset(Integer offset) {
this.offset = offset;
}

@JsonProperty("filters")
public List<Filter> getFilters() {
return filters;
}

public void setFilters(List<Filter> filters) {
this.filters = filters;
}
}

0 comments on commit 3f8eba2

Please sign in to comment.