/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.vinidsl.googleioextended.service; import android.app.Service; import android.content.Intent; import android.os.AsyncTask; import android.os.IBinder; import com.j256.ormlite.android.apptools.OpenHelperManager; import com.vinidsl.googleioextended.broadcast.PushNotificationSender; import com.vinidsl.googleioextended.helper.CurrentClassHelper; import com.vinidsl.googleioextended.helper.DataBaseHelper; import com.vinidsl.googleioextended.helper.PreferencesHelper; import com.vinidsl.googleioextended.model.GdgNotification; import com.vinidsl.googleioextended.model.Talk; import com.vinidsl.googleioextended.rest.WrappedError; import com.vinidsl.googleioextended.rest.talk.TalkListRequest; import com.vinidsl.googleioextended.rest.talk.TalkListResponse; import org.springframework.web.client.HttpClientErrorException; import java.sql.SQLException; public class SynchroService extends Service { public SynchroService() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { new SyncTask().execute(); return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } public class SyncTask extends AsyncTask<Void,Void,TalkListResponse> { private DataBaseHelper dataBaseHelper; private DataBaseHelper getHelper(){ if (this.dataBaseHelper == null) { this.dataBaseHelper = OpenHelperManager.getHelper(SynchroService.this, DataBaseHelper.class); } return this.dataBaseHelper; } @Override protected TalkListResponse doInBackground(Void... params) { PreferencesHelper.putBoolean(PreferencesHelper.IS_SYNC,true,SynchroService.this); TalkListResponse response = new TalkListResponse(); try{ TalkListRequest request = new TalkListRequest(SynchroService.this); response = request.performRequest(); storeTalks(response); }catch (HttpClientErrorException httpClientException) { response.setResponseError(new WrappedError(httpClientException.getStatusCode().value(), httpClientException)); }catch (Exception e){ response.setResponseError(new WrappedError(e)); } return response; } @Override protected void onPostExecute(TalkListResponse response) { super.onPostExecute(response); if(response.hasError()){ System.out.println("error "+response.getResponseError().getThrowable()); }else{ PreferencesHelper.putBoolean(PreferencesHelper.FIRST_SYNC, true, SynchroService.this); if (CurrentClassHelper.getCurrentView(SynchroService.this) == CurrentClassHelper.CURRENT_VIEW_TYPE_SYNCHRO) { GdgNotification notification = new GdgNotification(); notification.setMessage("complete"); PushNotificationSender pushNotificationSender = new PushNotificationSender(notification); pushNotificationSender.pushNotification(SynchroService.this); } } PreferencesHelper.putBoolean(PreferencesHelper.IS_SYNC,false,SynchroService.this); } private void storeTalks(TalkListResponse response){ if(!response.hasError()){ for(Talk talk:response.getTalkList()){ try { talk.setScheduled(false); getHelper().getSpeakerDao().createOrUpdate(talk.getSpeaker()); getHelper().getTalkDao().createOrUpdate(talk); } catch (SQLException e) { e.printStackTrace(); } } } } } }