Android Open Source - opentraining Open Training Sync Service






From Project

Back to project page opentraining.

License

The source code is released under:

GNU General Public License

If you think the Android project opentraining 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

/**
 * // w ww  .j  a  va 2s.c  o m
 * This is OpenTraining, an Android application for planning your your fitness training.
 * Copyright (C) 2012-2014 Christian Skubich
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program 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
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */

package de.skubware.opentraining.activity.settings.sync;

import java.io.IOException;
import java.util.ArrayList;
import org.json.JSONException;
import de.skubware.opentraining.basic.ExerciseType;
import de.skubware.opentraining.db.DataProvider;
import de.skubware.opentraining.db.IDataProvider;

import android.app.IntentService;
import android.content.Intent;
import android.os.Bundle;
import android.os.ResultReceiver;
import android.util.Log;

/**
 * A service for syncing OpenTraining with wger.
 *
 */
public class OpenTrainingSyncService extends IntentService {
  /** Indicates that the query is running */
  public static final int STATUS_RUNNING_DOWNLOAD_EXERCISES = 1;
  /** Indicates that the query is running */
  public static final int STATUS_RUNNING_DOWNLOAD_LANGUAGE_FILES = 2;
  /** Indicates that the query is running */
  public static final int STATUS_RUNNING_DOWNLOAD_MUSCLE_FILES = 3;  
  /** Indicates that the query is running */
  public static final int STATUS_RUNNING_DOWNLOAD_EQUIPMENT_FILES = 4;
  /** Indicates that the query is running */
  public static final int STATUS_RUNNING_DOWNLOAD_LICENSE_FILES = 5;  
  /** Indicates that the query is running and exercises are parsed */
  public static final int STATUS_RUNNING_CHECKING_EXERCISES = 8;
  /** Indicates that the query is running and images are downloaded */
  public static final int STATUS_RUNNING_DOWNLOADING_IMAGES = 9;  
  /** Indicates that the query is finished*/
  public static final int STATUS_FINISHED = 10;
  /** Indicates that the query could not be executed properly */
  public static final int STATUS_ERROR = 66;
  
  /** Key for intent extra (version of Open Training) */
  public static final String EXTRA_VERSION_CODE = "version";
  /** Key for intent extra (host) */
  public static final String EXTRA_HOST = "host";
  
  /** The path for getting the exercises as JSON */
  public static final String EXERCISE_REQUEST_PATH = "/api/v1/exercise/?status__in=2,4,5&limit=0";
  /** The path for getting the languages as JSON */
  public static final String LANGUAGE_REQUEST_PATH = "/api/v1/language/";
  /** The path for getting the muscles as JSON */
  public static final String MUSCLE_REQUEST_PATH = "/api/v1/muscle/";
  /** The path for getting the equipment as JSON */
  public static final String EQUIPMENT_REQUEST_PATH = "/api/v1/equipment/";
  /** The path for getting the licenses as JSON */
  public static final String LICENSE_REQUEST_PATH = "/api/v1/license/";  
  
  
  /** The used {@link RestClient}. */
  private RestClient mClient;
  
  /** Class that receives the results of this service */
    private ResultReceiver mReceiver;
    
  private String host;
  private int version;
  private int port;

  /** Tag for logging */
  private static final String TAG = "OpenTrainingSyncService";

  
  
  public OpenTrainingSyncService() {
    super(TAG);
    Log.d(TAG, "OpenTrainingSyncService created");
    
  }

  protected void onHandleIntent(Intent intent) {
    Log.d(TAG, "onHandleIntent()");

    version = intent.getIntExtra(EXTRA_VERSION_CODE, -1);
    host = intent.getStringExtra(EXTRA_HOST);

    
    mReceiver = intent.getParcelableExtra("receiver");
        String command = intent.getStringExtra("command");
        Bundle b = new Bundle();
        if(command.equals("query")) {
            try {
              
              // set up REST-Client
              mClient = new RestClient(host, port, "https", version);
              
              // download and parse the exercises
            ArrayList<ExerciseType> allExercises = downloadAndParseExercises();

            // add data to bundle
            b.putSerializable("all_exercises", allExercises);


                mReceiver.send(STATUS_FINISHED, b);
            } catch(Exception e) {
              Log.e(TAG, "Error, could not get exercises from server: " + e.toString(), e);
                b.putString(Intent.EXTRA_TEXT, e.toString());
                mReceiver.send(STATUS_ERROR, b);
            }    
        }
        this.stopSelf();
    }
  
  
  /**
   * Downloads the JSON-files from wger and parses them.
   * 
   * @return the {@link WgerJSONParser} 
   * 
   * @throws IOException
   * @throws JSONException
   */
  private ArrayList<ExerciseType> downloadAndParseExercises() throws IOException, JSONException{
    Log.d(TAG, "getExercisesAsJSON()");
    IDataProvider dataProvider = new DataProvider(this.getApplicationContext());

    // get exercises from server
    mReceiver.send(STATUS_RUNNING_DOWNLOAD_EXERCISES, Bundle.EMPTY);
    String exercisesAsJSON = mClient.get(EXERCISE_REQUEST_PATH);
    Log.v(TAG, "exercisesAsJSON: " + exercisesAsJSON);
    
    // get languages from server
    mReceiver.send(STATUS_RUNNING_DOWNLOAD_LANGUAGE_FILES, Bundle.EMPTY);
    String languagesAsJSON = mClient.get(LANGUAGE_REQUEST_PATH);
    Log.v(TAG, "languagesAsJSON: " + languagesAsJSON);

    // get muscles from server
    mReceiver.send(STATUS_RUNNING_DOWNLOAD_MUSCLE_FILES, Bundle.EMPTY);
    String musclesAsJSON = mClient.get(MUSCLE_REQUEST_PATH);
    Log.v(TAG, "musclesAsJSON: " + musclesAsJSON);

    // get licenses from server
    mReceiver.send(STATUS_RUNNING_DOWNLOAD_LICENSE_FILES, Bundle.EMPTY);
    String licenseAsJSON = mClient.get(LICENSE_REQUEST_PATH);
    Log.v(TAG, "licenseAsJSON: " + licenseAsJSON);
    
    
    // get equipment from server
    mReceiver.send(STATUS_RUNNING_DOWNLOAD_EQUIPMENT_FILES, Bundle.EMPTY);
    String equipmentAsJSON = mClient.get(EQUIPMENT_REQUEST_PATH);
    Log.v(TAG, "equipmentAsJSON: " + equipmentAsJSON);


    // parse exercises, languages and muscles
    mReceiver.send(STATUS_RUNNING_CHECKING_EXERCISES, Bundle.EMPTY);
    WgerJSONParser wgerParser = new WgerJSONParser(exercisesAsJSON, languagesAsJSON, musclesAsJSON, equipmentAsJSON, licenseAsJSON, dataProvider);
    
    ArrayList<ExerciseType.Builder> exerciseBuilderList = wgerParser.getNewExercisesBuilder();

    // get images from server
    mReceiver.send(STATUS_RUNNING_DOWNLOADING_IMAGES, Bundle.EMPTY);
    WgerImageDownloader imageDownloader = new WgerImageDownloader(licenseAsJSON, getApplicationContext(), mClient);
    ArrayList<ExerciseType> newExerciseList = imageDownloader.downloadImages(exerciseBuilderList);

    
      return newExerciseList;
  }


  


}




Java Source Code List

at.technikum.mti.fancycoverflow.FancyCoverFlowAdapter.java
at.technikum.mti.fancycoverflow.FancyCoverFlowItemWrapper.java
at.technikum.mti.fancycoverflow.FancyCoverFlow.java
de.skubware.opentraining.activity.ChangeLogDialog.java
de.skubware.opentraining.activity.DisclaimerDialog.java
de.skubware.opentraining.activity.MainActivity.java
de.skubware.opentraining.activity.NavigationGalleryAdapter.java
de.skubware.opentraining.activity.SelectWorkoutDialogFragment.java
de.skubware.opentraining.activity.WhatsNewDialog.java
de.skubware.opentraining.activity.acra.ACRACrashReportMailer.java
de.skubware.opentraining.activity.acra.ACRAFeedbackMailer.java
de.skubware.opentraining.activity.acra.OpenTrainingApplication.java
de.skubware.opentraining.activity.acra.RequestExerciseUpdate.java
de.skubware.opentraining.activity.create_exercise.CreateExerciseActivity.java
de.skubware.opentraining.activity.create_exercise.CustomSpinner.java
de.skubware.opentraining.activity.create_exercise.DescriptionFragment.java
de.skubware.opentraining.activity.create_exercise.EditImageMetadataDialog.java
de.skubware.opentraining.activity.create_exercise.EquipmentDataFragment.java
de.skubware.opentraining.activity.create_exercise.ExerciseImageListAdapter.java
de.skubware.opentraining.activity.create_exercise.ImageFragment.java
de.skubware.opentraining.activity.create_exercise.MuscleDataFragment.java
de.skubware.opentraining.activity.create_exercise.NameFragment.java
de.skubware.opentraining.activity.create_exercise.SimpleDataFragment.java
de.skubware.opentraining.activity.create_exercise.SpinnerDataFragment.java
de.skubware.opentraining.activity.create_workout.DialogFilterMusclesAndEquipment.java
de.skubware.opentraining.activity.create_workout.DialogWorkoutOverviewFragment.java
de.skubware.opentraining.activity.create_workout.ExerciseDetailOnGestureListener.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeDetailActivity.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeDetailFragment.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeListActivity.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeListAdapter.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeListFragment.java
de.skubware.opentraining.activity.create_workout.SelectMuscleDialog.java
de.skubware.opentraining.activity.create_workout.SendExerciseFeedbackDialogFragment.java
de.skubware.opentraining.activity.create_workout.upload_exercise.ExerciseImage.java
de.skubware.opentraining.activity.create_workout.upload_exercise.UploadExerciseAsyncTask.java
de.skubware.opentraining.activity.create_workout.upload_exercise.UploadExerciseImagesAsyncTask.java
de.skubware.opentraining.activity.create_workout.upload_exercise.WgerRestService.java
de.skubware.opentraining.activity.manage_workouts.RenameWorkoutDialogFragment.java
de.skubware.opentraining.activity.manage_workouts.WorkoutDetailActivity.java
de.skubware.opentraining.activity.manage_workouts.WorkoutDetailFragment.java
de.skubware.opentraining.activity.manage_workouts.WorkoutListActivity.java
de.skubware.opentraining.activity.manage_workouts.WorkoutListFragment.java
de.skubware.opentraining.activity.settings.LicenseDialog.java
de.skubware.opentraining.activity.settings.SettingsActivity.java
de.skubware.opentraining.activity.settings.sync.OpenTrainingSyncResultReceiver.java
de.skubware.opentraining.activity.settings.sync.OpenTrainingSyncService.java
de.skubware.opentraining.activity.settings.sync.RestClient.java
de.skubware.opentraining.activity.settings.sync.SyncFinishedDialog.java
de.skubware.opentraining.activity.settings.sync.WgerImageDownloader.java
de.skubware.opentraining.activity.settings.sync.WgerJSONParser.java
de.skubware.opentraining.activity.start_training.DialogFragmentAddEntry.java
de.skubware.opentraining.activity.start_training.DialogFragmentTrainingEntryTable.java
de.skubware.opentraining.activity.start_training.FExDetailActivity.java
de.skubware.opentraining.activity.start_training.FExDetailFragment.java
de.skubware.opentraining.activity.start_training.FExListActivity.java
de.skubware.opentraining.activity.start_training.FExListAdapter.java
de.skubware.opentraining.activity.start_training.FExListFragment.java
de.skubware.opentraining.activity.start_training.RecoveryTimerManager.java
de.skubware.opentraining.activity.start_training.SwipeDismissListViewTouchListener.java
de.skubware.opentraining.activity.start_training.SwipeDismissTouchListener.java
de.skubware.opentraining.activity.start_training.TrainingEntryListAdapter.java
de.skubware.opentraining.basic.ActivationLevel.java
de.skubware.opentraining.basic.ExerciseTag.java
de.skubware.opentraining.basic.ExerciseType.java
de.skubware.opentraining.basic.FSet.java
de.skubware.opentraining.basic.FitnessExercise.java
de.skubware.opentraining.basic.IExercise.java
de.skubware.opentraining.basic.License.java
de.skubware.opentraining.basic.Muscle.java
de.skubware.opentraining.basic.SportsEquipment.java
de.skubware.opentraining.basic.TrainingEntry.java
de.skubware.opentraining.basic.Translatable.java
de.skubware.opentraining.basic.Workout.java
de.skubware.opentraining.db.Cache.java
de.skubware.opentraining.db.DataHelper.java
de.skubware.opentraining.db.DataProvider.java
de.skubware.opentraining.db.IDataProvider.java
de.skubware.opentraining.db.parser.AbstractJSONParser.java
de.skubware.opentraining.db.parser.ExerciseTagJSONParser.java
de.skubware.opentraining.db.parser.ExerciseTypeXMLParser.java
de.skubware.opentraining.db.parser.IParser.java
de.skubware.opentraining.db.parser.MuscleJSONParser.java
de.skubware.opentraining.db.parser.SportsEquipmentJSONParser.java
de.skubware.opentraining.db.parser.WorkoutXMLParser.java
de.skubware.opentraining.db.parser.XMLSaver.java
de.skubware.opentraining.db.rest.ExerciseImageGSONSerializer.java
de.skubware.opentraining.db.rest.ExerciseTypeGSONSerializer.java
de.skubware.opentraining.db.rest.LanguageGSONDeserializer.java
de.skubware.opentraining.db.rest.MuscleGSONDeserializer.java
de.skubware.opentraining.db.rest.ServerModel.java
de.skubware.opentraining.db.rest.SportsEquipmentGSONDeserializer.java
de.skubware.opentraining.exporter.HTMLExporter.java
de.skubware.opentraining.exporter.LaTeXExporter.java
de.skubware.opentraining.exporter.WorkoutExporter.java