
com.github.jobs.resolver.SearchJobsResolver Maven / Gradle / Ivy
package com.github.jobs.resolver;
import android.os.Bundle;
import com.github.jobs.api.GithubJobsApi;
import com.github.bean.Job;
import com.github.bean.Search;
import com.codeslap.groundy.CallResolver;
import com.codeslap.groundy.Groundy;
import com.codeslap.persistence.Persistence;
import com.codeslap.persistence.SqlAdapter;
import com.github.jobs.bean.SearchPack;
import com.github.jobs.bean.SearchesAndJobs;
import java.util.ArrayList;
import java.util.List;
public class SearchJobsResolver extends CallResolver {
private ArrayList mJobs;
public static final String EXTRA_SEARCH_PACK = "com.github.jobs.extra_search_pack";
public static final String DATA_JOBS = "com.github.jobs.data.jobs";
public static final String DATA_SEARCH_PACK = "com.github.jobs.data.search_pack";
@Override
protected void updateData() {
// get parameters
Bundle params = getParameters();
SearchPack searchPack = (SearchPack) params.getParcelable(EXTRA_SEARCH_PACK);
// configure search
Search.Builder builder = new Search.Builder();
builder.setSearch(searchPack.getSearch());
builder.setLocation(searchPack.getLocation());
builder.setFullTime(searchPack.isFullTime());
if (searchPack.getPage() > 0) {
builder.setPage(searchPack.getPage());
}
// execute search
Search search = builder.createSearch();
List jobsList = GithubJobsApi.search(search);
if (jobsList == null) {
return;
}
mJobs = new ArrayList(jobsList);
SqlAdapter sqlAdapter = Persistence.getAdapter(getContext());
// delete old content
if (searchPack.getPage() == 0 && mJobs.size() > 0) {
if (searchPack.isDefault()) {
sqlAdapter.delete(Job.class, null, null);
} else {
SearchesAndJobs sample = new SearchesAndJobs();
sample.setSearchHashCode(searchPack.hashCode());
sqlAdapter.delete(sample);
}
}
// if the search is not the default one, references to cache table too
if (!searchPack.isDefault()) {
List searchCaches = new ArrayList();
for (Job job : mJobs) {
SearchesAndJobs searchesAndJobs = new SearchesAndJobs();
searchesAndJobs.setSearchHashCode(searchPack.hashCode());
searchesAndJobs.setJobId(job.getId());
searchCaches.add(searchesAndJobs);
}
sqlAdapter.storeCollection(searchCaches, null);
}
// persist all data to be able to use it later
sqlAdapter.storeCollection(mJobs, null);
}
@Override
protected void prepareResult() {
SearchPack searchPack = (SearchPack) getParameters().getParcelable(EXTRA_SEARCH_PACK);
Bundle resultData = getResultData();
resultData.putParcelable(DATA_SEARCH_PACK, searchPack);
if (mJobs == null) {
return;
}
resultData.putParcelableArrayList(DATA_JOBS, mJobs);
setResultCode(Groundy.STATUS_FINISHED);
}
@Override
protected boolean keepWifiOn() {
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy