Skip to content
This repository was archived by the owner on Feb 1, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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;
}
}