package com.truckmuncher.app.customer; import android.app.IntentService; import android.content.Context; import android.content.Intent; import android.support.v4.content.LocalBroadcastManager; import com.truckmuncher.api.search.SearchResponse; import com.truckmuncher.api.search.SearchService; import com.truckmuncher.api.search.SimpleSearchRequest; import com.truckmuncher.api.search.SimpleSearchResponse; import com.truckmuncher.app.App; import com.truckmuncher.app.data.ApiException; import java.util.List; import javax.inject.Inject; import timber.log.Timber; public class SimpleSearchService extends IntentService { public static final String ARG_SEARCH_QUERY = "search_query"; public static final String ARG_MESSAGE = "user_message"; @Inject SearchService searchService; private SimpleSearchServiceHelper serviceHelper; public SimpleSearchService() { super(SimpleSearchService.class.getSimpleName()); serviceHelper = new SimpleSearchServiceHelper(); } public static Intent newIntent(Context context, String searchQuery) { Intent intent = new Intent(context, SimpleSearchService.class); intent.putExtra(ARG_SEARCH_QUERY, searchQuery); return intent; } @Override public void onCreate() { super.onCreate(); App.get(this).inject(this); } @Override protected void onHandleIntent(Intent intent) { String searchQuery = intent.getStringExtra(ARG_SEARCH_QUERY); SimpleSearchRequest request = new SimpleSearchRequest.Builder() .query(searchQuery) .build(); try { SimpleSearchResponse response = searchService.simpleSearch(request); List<SearchResponse> searchResponses = response.searchResponse; String[] truckIds = new String[searchResponses.size()]; for (int i = 0, max = searchResponses.size(); i < max; i++) { truckIds[i] = searchResponses.get(i).truck.id; } serviceHelper.setSearchQueryMatches(this, truckIds); } catch (ApiException e) { Timber.e("Got an error while performing a trucks search."); Intent errorIntent = new Intent(); errorIntent.putExtra(ARG_MESSAGE, e.getMessage()); LocalBroadcastManager.getInstance(SimpleSearchService.this).sendBroadcast(errorIntent); } } }