Android Open Source - opentraining Fitness Exercise






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  v  a2s. 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.basic;

import java.io.File;
import java.io.Serializable;
import java.net.URL;
import java.util.*;

/**
 * A FitnessExercise needs an ExerciseType and may have FSets and
 * TrainingEntries.
 * 
 * The differcence between an {@link ExerciseType} and an
 * {@link FitnessExercise} is that the ExerciseType is more abstract. A
 * FitnessExercise is a concrete Exercise the user wants to do, an ExerciseType
 * is a general exercise with a name, description, ...
 * 
 * @author Christian Skubich
 * 
 */
public class FitnessExercise implements IExercise, Serializable {
  /** Default serialVersionUID */
  private static final long serialVersionUID = 1L;

  private ExerciseType mExerciseType;
  private ArrayList<FSet> mFSetList = new ArrayList<FSet>();

  /** The name the user assigned to this exercise */
  private String mCustomName;

  /**
   * For each day there is one TrainingEntry saved in this list. The order of
   * the list should be according to the dates of the entries.
   */
  private ArrayList<TrainingEntry> mTrainingEntryList = new ArrayList<TrainingEntry>();

  /**
   * Constructor of this class
   * 
   * @param exType
   *            The ExerciseType of the new object
   * @param set
   *            The FitnessSets for this FitnessExercise, may be emtpy
   * 
   * @throws NullPointerException
   *             if exType is null
   */
  public FitnessExercise(ExerciseType exType, FSet... set) {
    if (exType == null) {
      throw new NullPointerException();
    }

    for (FSet s : set) {
      if (s == null) {
        throw new NullPointerException();
      }
    }

    // assign given parameters to fields
    this.mExerciseType = exType;
    for (FSet fs : set) {
      this.mFSetList.add(fs);
    }
    this.mCustomName = exType.getLocalizedName();
  }

  /**
   * Getter for the list with TrainingEntries.
   * 
   * @return A list with TrainingEntries
   */
  public List<TrainingEntry> getTrainingEntryList() {
    return mTrainingEntryList;
  }

  @SuppressWarnings("deprecation")
  TrainingEntry addTrainingEntry(Date date) {
    TrainingEntry entry = new TrainingEntry(date);
    this.mTrainingEntryList.add(entry);
    return entry;
  }

  /**
   * Removes the given TrainingEntry
   * 
   * @param entry
   *            The {@link TrainingEntry} to remove
   * @return true if successful, false otherwise
   */
  public boolean removeTrainingEntry(TrainingEntry entry) {
    return this.mTrainingEntryList.remove(entry);
  }

  /**
   * Getter for exType
   * 
   * @return The type of Exercise
   */
  public ExerciseType getExType() {
    return mExerciseType;
  }

  /**
   * Getter for the FitnessSets
   * 
   * @return An unmodifiable List with FitnessSets
   */
  public List<FSet> getFSetList() {
    return Collections.unmodifiableList(this.mFSetList);
  }

  public void setFSetList(List<FSet> fsetList) {
    this.mFSetList = new ArrayList<FSet>(fsetList);
  }

  /**
   * Returns a String representation of this object. This is identical to the
   * {@code customName}.
   * 
   * @return The custumName
   */
  @Override
  public String toString() {
    return mCustomName;
  }

  /**
   * Returns a String that represents this object. Should only be used for
   * debugging.
   * 
   * @return A String that represents this object.
   */
  public String toDebugString() {
    StringBuilder builder = new StringBuilder();

    builder.append("ExerciseType: " + getLocalizedName() + "\n");
    builder.append("Custom name: " + mCustomName + "\n");
    for (FSet set : mFSetList) {
      builder.append("\n FSet: " + set.toString());
    }
    for (TrainingEntry entry : mTrainingEntryList) {
      builder.append("\n TrainingEntry: " + entry.toDebugString());
    }

    return builder.toString();
  }

  /**
   * Setter for {@code customName}
   * 
   * @param newName
   *            The new custom name for this FitnessExercise.
   * 
   * @throws NullPointerException
   *             if argument is null
   */
  public void setCustomName(String newName) {
    if (newName == null)
      throw new NullPointerException("setCustonName() Argument must not be null");

    this.mCustomName = newName;
  }

  /*
   * (non-Javadoc)
   * 
   * @see java.lang.Object#hashCode()
   */
  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((mExerciseType == null) ? 0 : mExerciseType.hashCode());
    result = prime * result + ((mFSetList == null) ? 0 : mFSetList.hashCode());
    return result;
  }

  /**
   * Compares two FitnessExercises. Important: a different customName does not
   * change the result of equals()
   * 
   */
  @Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (!(obj instanceof FitnessExercise)) {
      return false;
    }
    FitnessExercise other = (FitnessExercise) obj;
    if (mExerciseType == null) {
      if (other.mExerciseType != null) {
        return false;
      }
    } else if (!mExerciseType.equals(other.mExerciseType)) {
      return false;
    }
    if (mFSetList == null) {
      if (other.mFSetList != null) {
        return false;
      }
    } else if (!mFSetList.equals(other.mFSetList)) {
      return false;
    }
    return true;
  }

  @Override
  public String getUnlocalizedName() {
    return this.mExerciseType.getUnlocalizedName();
  }

  @Override
  public String getLocalizedName() {
    return this.mExerciseType.getLocalizedName();
  }

  @Override
  public String getDescription() {
    return this.mExerciseType.getDescription();
  }

  @Override
  public List<File> getImagePaths() {
    return this.mExerciseType.getImagePaths();
  }

  @Override
  public File getIconPath() {
    return this.mExerciseType.getIconPath();
  }

  @Override
  public Map<File, License> getImageLicenseMap() {
    return this.mExerciseType.getImageLicenseMap();
  }

  @Override
  public int getImageWidth() {
    return this.mExerciseType.getImageWidth();
  }

  @Override
  public int getImageHeight() {
    return this.mExerciseType.getImageHeight();
  }

  @Override
  public SortedSet<SportsEquipment> getRequiredEquipment() {
    return this.mExerciseType.getRequiredEquipment();
  }

  @Override
  public SortedSet<Muscle> getActivatedMuscles() {
    return this.mExerciseType.getActivatedMuscles();
  }

  @Override
  public Map<Muscle, ActivationLevel> getActivationMap() {
    return this.mExerciseType.getActivationMap();
  }

  @Override
  public SortedSet<ExerciseTag> getTags() {
    return this.mExerciseType.getTags();
  }

  @Override
  public List<URL> getURLs() {
    return this.mExerciseType.getURLs();
  }

  @Override
  public List<String> getHints() {
    return this.mExerciseType.getHints();
  }
  
  /**
   * Returns the last TrainingEntry.
   * 
   * @return The last TrainingEntry
   */
  public TrainingEntry getLastTrainingEntry(){
    if(mTrainingEntryList.isEmpty())
      return null;
    
    return mTrainingEntryList.get(mTrainingEntryList.size() -1);
  }
    
  /**
   * Checks if a Training has been finished. That means that all FSets of the
   * TrainingEntry have been set to the status done. Will also return false if
   * there are no TrainingEntrys.
   * 
   * @param entry
   *            The {@link TrainingEntry} to check
   * 
   * @return true if all FSets of the TrainingEntry have been set to the
   *         status done. Will also return false if there are no
   *         TrainingEntrys.
   */
  public boolean isTrainingEntryFinished(TrainingEntry entry){
    if(!mTrainingEntryList.contains(entry))
        throw new IllegalArgumentException("Entry not contained.");
    if(entry.getFSetList().isEmpty())
      return false;
    
    for(FSet set:entry.getFSetList()){
      if(!entry.hasBeenDone(set))
        return false;
    }
    
    return true;
  }

}




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