| package io.prediction; |
| |
| import com.ning.http.client.Request; |
| import com.ning.http.client.RequestBuilder; |
| |
| /** |
| * Get top n similar items request builder for item similarity engine |
| * |
| * @author The PredictionIO Team (<a href="http://prediction.io">http://prediction.io</a>) |
| * @version 0.6.0 |
| * @since 0.6.0 |
| */ |
| |
| public class ItemSimGetTopNRequestBuilder { |
| private String apiUrl; |
| private String apiFormat; |
| private String appkey; |
| private String engine; |
| private String iid; |
| private int n; |
| private String[] itypes; |
| private Double latitude; |
| private Double longitude; |
| private Double within; |
| private String unit; |
| private String[] attributes; |
| |
| /** |
| * Instantiate a request builder with mandatory arguments. |
| * <p> |
| * Do not use this directly. Please refer to "See Also". |
| * |
| * @param apiUrl the API URL |
| * @param apiFormat the return format of the API |
| * @param appkey the new app key to be used |
| * @param engine engine name |
| * @param iid IID |
| * @param n number of recommendations to return |
| * |
| * @see Client#getItemSimGetTopNRequestBuilder |
| */ |
| public ItemSimGetTopNRequestBuilder(String apiUrl, String apiFormat, String appkey, String engine, String iid, int n) { |
| this.apiUrl = apiUrl; |
| this.apiFormat = apiFormat; |
| this.appkey = appkey; |
| this.engine = engine; |
| this.iid = iid; |
| this.n = n; |
| } |
| |
| /** |
| * Add the "itypes" optional argument to the request. |
| * |
| * @param itypes array of item types |
| */ |
| public ItemSimGetTopNRequestBuilder itypes(String[] itypes) { |
| this.itypes = itypes; |
| return this; |
| } |
| |
| /** |
| * Add the "latitude" optional argument to the request. |
| * <p> |
| * Only certain data backend support geospatial indexing. |
| * Please refer to the main documentation for more information. |
| * |
| * @param latitude latitude |
| */ |
| public ItemSimGetTopNRequestBuilder latitude(Double latitude) { |
| this.latitude = latitude; |
| return this; |
| } |
| |
| /** |
| * Add the "longitude" optional argument to the request. |
| * <p> |
| * Only certain data backend support geospatial indexing. |
| * Please refer to the main documentation for more information. |
| * |
| * @param longitude longitude |
| */ |
| public ItemSimGetTopNRequestBuilder longitude(Double longitude) { |
| this.longitude = longitude; |
| return this; |
| } |
| |
| /** |
| * Add the "within" optional argument to the request. |
| * <p> |
| * Only certain data backend support geospatial indexing. |
| * Please refer to the main documentation for more information. |
| * |
| * @param within radius of search from the specified location |
| */ |
| public ItemSimGetTopNRequestBuilder within(Double within) { |
| this.within = within; |
| return this; |
| } |
| |
| /** |
| * Add the "unit" optional argument to the request. |
| * <p> |
| * Only certain data backend support geospatial indexing. |
| * Please refer to the main documentation for more information. |
| * |
| * @param unit unit of "within" (radius) |
| */ |
| public ItemSimGetTopNRequestBuilder unit(String unit) { |
| this.unit = unit; |
| return this; |
| } |
| |
| /** |
| * Add the "attributes" optional argument to the request. |
| * |
| * @param attributes array of item attribute names to be returned with the result |
| */ |
| public ItemSimGetTopNRequestBuilder attributes(String[] attributes) { |
| this.attributes = attributes; |
| return this; |
| } |
| |
| /** |
| * Build a request. |
| * <p> |
| * Do not use this directly. Please refer to "See Also". |
| * |
| * @see Client#getItemSimTopN(ItemSimGetTopNRequestBuilder) |
| * @see Client#getItemSimTopNAsFuture(ItemSimGetTopNRequestBuilder) |
| */ |
| public Request build() { |
| RequestBuilder builder = new RequestBuilder("GET"); |
| builder.setUrl(this.apiUrl + "/engines/itemsim/" + this.engine + "/topn." + this.apiFormat); |
| builder.addQueryParameter("pio_appkey", this.appkey); |
| builder.addQueryParameter("pio_iid", this.iid); |
| builder.addQueryParameter("pio_n", Integer.toString(this.n)); |
| if (this.itypes != null && this.itypes.length > 0) { |
| builder.addQueryParameter("pio_itypes", Utils.arrayToString(this.itypes)); |
| } |
| if (this.latitude != null && this.longitude != null) { |
| builder.addQueryParameter("pio_latlng", this.latitude.toString() + "," + this.longitude.toString()); |
| } |
| if (this.within != null) { |
| builder.addQueryParameter("pio_within", this.within.toString()); |
| } |
| if (this.unit != null) { |
| builder.addQueryParameter("pio_unit", this.unit.toString()); |
| } |
| if (this.attributes != null && this.attributes.length > 0) { |
| builder.addQueryParameter("pio_attributes", Utils.arrayToString(this.attributes)); |
| } |
| return builder.build(); |
| } |
| } |