package org.intermine.app.net.request.get;
/*
* Copyright (C) 2015 InterMine
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. See the LICENSE file for more
* information or http://www.gnu.org/copyleft/lesser.html.
*
*/
import android.content.Context;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.intermine.app.core.Gene;
import org.intermine.app.core.GenesList;
import org.intermine.app.json.GeneSearchResultDeserializer;
import org.intermine.app.net.request.JsonGetRequest;
import java.util.HashMap;
import java.util.Map;
/**
* @author Daria Komkova <Daria_Komkova @ hotmail.com>
*/
public class GeneSearchRequest extends JsonGetRequest<GenesList> {
public static final String JSON_FORMAT = "json";
public static final int DEFAULT_SIZE = 10;
private static final String QUERY_PARAM = "q";
private static final String START_PARAM = "start";
private static final String SIZE_PARAM = "size";
private static final String FORMAT_PARAM = "format";
private static final String FACET_CATEGORY_PARAM = "facet_Category";
private static final String FACET_CATEGORY_VALUE = "Gene";
private String mQuery;
private int mStart;
private String mFormat;
private int mSize;
private String mMineName;
public GeneSearchRequest(Class clazz, Context ctx, String url, Map<String, ?> params) {
super(clazz, ctx, url, params);
}
public GeneSearchRequest(Context ctx, String q, String mineName) {
this(GenesList.class, ctx, null, null);
mQuery = q;
mFormat = JSON_FORMAT;
mSize = DEFAULT_SIZE;
mStart = 0;
mMineName = mineName;
}
@Override
public Gson getMapper() {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(GenesList.class, new GeneSearchResultDeserializer());
return builder.create();
}
public GeneSearchRequest(Context ctx, String q,
String mineName, String format, int start) {
this(ctx, q, mineName);
mFormat = format;
mStart = start;
}
@Override
public String getUrl() {
return getBaseUrl(mMineName) + "/search";
}
@Override
public Map<String, ?> getUrlParams() {
Map<String, String> params = new HashMap<>();
params.put(QUERY_PARAM, mQuery);
params.put(FACET_CATEGORY_PARAM, FACET_CATEGORY_VALUE);
params.put(FORMAT_PARAM, mFormat);
params.put(SIZE_PARAM, String.valueOf(mSize));
params.put(START_PARAM, String.valueOf(mStart));
return params;
}
@Override
public GenesList loadDataFromNetwork() throws Exception {
GenesList result = super.loadDataFromNetwork();
if (null != result && !result.isEmpty()) {
for (Gene gene : result) {
gene.setMine(mMineName);
}
}
return result;
}
public String getQuery() {
return mQuery;
}
public void setQuery(String query) {
mQuery = query;
}
public int getStart() {
return mStart;
}
public void setStart(int start) {
mStart = start;
}
public String getFormat() {
return mFormat;
}
public void setFormat(String format) {
mFormat = format;
}
public int getSize() {
return mSize;
}
public void setSize(int size) {
mSize = size;
}
}