Android Open Source - PalmaBici Network Synchronizer Task






From Project

Back to project page PalmaBici.

License

The source code is released under:

GNU General Public License

If you think the Android project PalmaBici listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2013 Sergio Garcia Villalonga (yayalose@gmail.com)
 *//from   ww w  .j  av a  2  s  . c  o m
 * This file is part of PalmaBici.
 *
 *    PalmaBici is free software: you can redistribute it and/or modify
 *    it under the terms of the Affero GNU General Public License version 3
 *    as published by the Free Software Foundation.
 *
 *    PalmaBici is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    Affero GNU General Public License for more details
 *    (https://www.gnu.org/licenses/agpl-3.0.html).
 *    
 */

package com.poguico.palmabici.network.synchronizer;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Calendar;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import com.poguico.palmabici.DatabaseManager;
import com.poguico.palmabici.parsers.Parser;
import com.poguico.palmabici.util.NetworkInformation;
import com.poguico.palmabici.util.Station;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

public class NetworkSynchronizerTask {
  private static final int    HTTP_STATUS_OK = 200;
  private static final String STR_HTTP_STATUS_OK = "200";
  private static final String STR_HTTP_STATUS_NOT_FOUND = "404";
  private static final String URL = "http://api.citybik.es/bicipalma.json";
  
  public static void synchronize(Context context, NetworkSyncCallback callback) {
    SynchronizeTask task = new SynchronizeTask(context, callback);
    task.execute((Void [])null);
  }
  
  private static class SynchronizeTask extends AsyncTask<Void, Void, String> {
    private Context             context;
    private NetworkSyncCallback callback;
    private NetworkInformation  network;
    
    public SynchronizeTask (Context context, NetworkSyncCallback callback) {
      this.context  = context;
      this.callback = callback;
    }
    
    @Override
    protected String doInBackground(Void... params) {
      long   lastUpdateTime = 0;
      String[] syncResult;
      ArrayList <Station> parsedNetowrk = null;
      DatabaseManager dbManager =
            DatabaseManager.getInstance(context);
      
      syncResult = getNetworkInfo();
      if (syncResult[0].equals("200")) {
        lastUpdateTime = Calendar.getInstance().getTimeInMillis();
        parsedNetowrk  = Parser.parseNetworkJSON(syncResult[1]);
        
        network = NetworkInformation.getInstance(context);
        network.setNetwork(parsedNetowrk);
          network.setLastUpdateTime(lastUpdateTime);
          
          dbManager.saveLastStationNetworkState(parsedNetowrk);
          dbManager.saveLastUpdateTime(lastUpdateTime);
      }
        
      return syncResult[0];
    }
    
    protected void onPostExecute(String result) {
      if (result.equals(STR_HTTP_STATUS_OK)) {
        callback.onNetworkSynchronized(network.getLastUpdateTime());
      } else {
        callback.onNetworkError(result);
      }
    }
  }
  
  private static String[] getNetworkInfo() {
    StringBuilder builder = new StringBuilder();
    HttpClient    client  = new DefaultHttpClient();
    HttpGet     request = new HttpGet(URL);
    String[]      ret     = new String[2];
    String      line;
    
    try {
      HttpResponse response = client.execute(request);
      StatusLine   statusLine = response.getStatusLine();
      ret[0] = String.valueOf(statusLine.getStatusCode());
      if (statusLine.getStatusCode() == HTTP_STATUS_OK) {
        HttpEntity entity = response.getEntity();
        InputStream content = entity.getContent();
        InputStreamReader contentReader = new InputStreamReader(content);
        BufferedReader reader = new BufferedReader(contentReader);
        
        while ((line = reader.readLine()) != null) {
          builder.append(line);
        }
        ret[1] = builder.toString();
      } else {
        Log.e(NetworkSynchronizerTask.class.toString(),
            "Failed to download file");
      }
    } catch (Exception e) {
      ret[0] = STR_HTTP_STATUS_NOT_FOUND;
      e.printStackTrace();
    }
    return ret;
  }
}




Java Source Code List

com.poguico.palmabici.DatabaseManager.java
com.poguico.palmabici.MainActivity.java
com.poguico.palmabici.PreferencesActivity.java
com.poguico.palmabici.ShareActivity.java
com.poguico.palmabici.SynchronizableElement.java
com.poguico.palmabici.WelcomeActivity.java
com.poguico.palmabici.map.OpenStreetMapConstants.java
com.poguico.palmabici.map.ResourceProxyImpl.java
com.poguico.palmabici.map.StationMapFragment.java
com.poguico.palmabici.network.synchronizer.NetworkStationAlarm.java
com.poguico.palmabici.network.synchronizer.NetworkSyncCallback.java
com.poguico.palmabici.network.synchronizer.NetworkSynchronizerTask.java
com.poguico.palmabici.network.synchronizer.NetworkSynchronizer.java
com.poguico.palmabici.notification.NotificationManager.java
com.poguico.palmabici.parsers.Parser.java
com.poguico.palmabici.synchronizers.LocationSynchronizer.java
com.poguico.palmabici.util.BikeLane.java
com.poguico.palmabici.util.Formatter.java
com.poguico.palmabici.util.NetworkInformation.java
com.poguico.palmabici.util.Station.java
com.poguico.palmabici.widgets.CreditsDialog.java
com.poguico.palmabici.widgets.NewFeaturesDialog.java
com.poguico.palmabici.widgets.SidebarMenu.java
com.poguico.palmabici.widgets.StationInfoWidget.java