Android Open Source - opentraining X M L Saver






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

/**
 * /*from   w w w. j  a v a2s.co  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.db.parser;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.Map;

import javax.xml.parsers.*;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;

import android.util.Log;

import de.skubware.opentraining.basic.*;
import de.skubware.opentraining.basic.FSet.SetParameter;


/**
 * A class to save plans and exercises as XML files.
 * 
 * 
 */
public class XMLSaver {
  /** Tag for logging */
  public static final String TAG = "XMLSaver";
  
  
  /**
   * Saves a Workout to the given destination.
   * 
   * @param w
   *            The workout to write
   * @param destination
   *            The destination file. If destination is a folder, the file
   *            name will be 'plan.xml'.
   * 
   * @return true, if writing was successful, false otherwise
   */
  public static synchronized boolean writeTrainingPlan(Workout w, File destination) {
    // check arguments
    if (destination.isDirectory()) {
      String filename = w.getName();
      if(filename == null || filename.equals("")){
        filename = "plan";
        Log.w(TAG, "Warning: Trying to save Workout, but did not find a name. Workout: " + w.toDebugString());
      }
      
      destination = new File(destination.toString() + "/" + filename + ".xml");
    }

    boolean success = true;
    // write the Workout to an .xml file with DOM
    DocumentBuilder docBuilder;

    try {
      docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
      Document doc = docBuilder.newDocument();

      // create root element
      Element wE = doc.createElement("Workout");
      wE.setAttribute("name", w.getName());
      wE.setAttribute("rows", Integer.toString(w.getEmptyRows()));

      for (FitnessExercise fEx : w.getFitnessExercises()) {
        // create element for FitnessExercise
        Element fE = doc.createElement("FitnessExercise");
        fE.setAttribute("customname", fEx.toString());

        // create element for ExerciseType
        Element exTypeE = doc.createElement("ExerciseType");
        exTypeE.setAttribute("name", fEx.getExType().getUnlocalizedName());
        // append ExerciseType
        fE.appendChild(exTypeE);

        for (FSet set : fEx.getFSetList()) {
          Element fSetE = doc.createElement("FSet");

          for (SetParameter c : set.getSetParameters()) {
            Element catE = doc.createElement("SetParameter");
            catE.setAttribute("name", c.getName());
            if(! (c instanceof FSet.SetParameter.FreeField) ){
              catE.setAttribute("value", Integer.toString(c.getValue()));
            }else{
              catE.setAttribute("value",c.toString());
            }
            fSetE.appendChild(catE);
          }

          // append FitnessExercise
          fE.appendChild(fSetE);
        }

        for (TrainingEntry entry : fEx.getTrainingEntryList()) {
          Element entryE = doc.createElement("TrainingEntry");
          
          // save date
          if(entry.getDate()!=null){
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
            entryE.setAttribute("date", format.format(entry.getDate()));
          }else{
            entryE.setAttribute("date", "null");
          }

          //TODO refactor
          for (FSet set: entry.getFSetList()) {
            Element fSetE = doc.createElement("FSet");
            fSetE.setAttribute("hasBeenDone", Boolean.toString(entry.hasBeenDone(set)) );
            for (SetParameter c : set.getSetParameters()) {
              Element catE = doc.createElement("SetParameter");
              catE.setAttribute("name", c.getName());
              if(! (c instanceof FSet.SetParameter.FreeField) ){
                catE.setAttribute("value", Integer.toString(c.getValue()));
              }else{
                catE.setAttribute("value",c.toString());
              }
              fSetE.appendChild(catE);
            }
            
            entryE.appendChild(fSetE);
          }

          // append TrainingEntry
          fE.appendChild(entryE);
        }
        
        wE.appendChild(fE);
      }

      // append root element
      doc.appendChild(wE);

      // save to file
      TransformerFactory tf = TransformerFactory.newInstance();

      // tf.setAttribute("indent-number", 3);
      Transformer t = tf.newTransformer();

      // set parameters
      // indent('einrcken')
      t.setOutputProperty(OutputKeys.INDENT, "yes");
      t.setOutputProperty(OutputKeys.METHOD, "xml");
      t.setOutputProperty(OutputKeys.MEDIA_TYPE, "text/xml");
      t.setOutputProperty(OutputKeys.ENCODING, "utf8");

      FileWriter fw = new FileWriter(destination);
      t.transform(new DOMSource(doc), new StreamResult(fw));

    } catch (ParserConfigurationException e1) {
      success = false;
      Log.e(TAG, "Error during parsing Workout xml file.",e1);
    } catch (TransformerConfigurationException e) {
      success = false;
      Log.e(TAG, "Error during parsing Workout xml file.",e);
    } catch (IOException e) {
      success = false;
      Log.e(TAG, "Error during parsing Workout xml file.",e);
    } catch (TransformerException e) {
      success = false;
      Log.e(TAG, "Error during parsing Workout xml file.",e);
    }

    return success;
  }
  
  

  /**
   * Saves an ExerciseType to the given destination.
   * 
   * @param ex
   *            The ExerciseType to write
   * @param destination
   *            The destination folder. The file name will be
   *            '$exercisename.xml'.
   * 
   * @return true, if writing was successful, false otherwise
   */
  public static synchronized boolean writeExerciseType(ExerciseType ex, File destination) {

    boolean success = true; // write the tp to an xml file with DOM
    DocumentBuilder docBuilder;

    try {
      docBuilder = DocumentBuilderFactory.newInstance()
          .newDocumentBuilder();
      Document doc;

      doc = docBuilder.newDocument();

      
      // create root element 
      Element  exE = doc.createElement("ExerciseType");
      exE.setAttribute("name", ex.getLocalizedName());
      exE.setAttribute("language", Locale.getDefault().getDisplayLanguage());
      
      // add root element 
      doc.appendChild(exE);

      // add description
      Element desE = doc.createElement("Description");
      desE.setAttribute("text", ex.getDescription());
      exE.appendChild(desE);

      // add translated names
      Map<Locale, String> translationMap = ex.getTranslationMap();
      for(Locale locale:translationMap.keySet()){
        if(locale.getDisplayLanguage().equals(Locale.getDefault().getDisplayLanguage()))
          continue;

        Element localeE = doc.createElement("Locale");
        localeE.setAttribute("language", locale.getDisplayLanguage().toString());
        localeE.setAttribute("name", translationMap.get(locale));
        exE.appendChild(localeE);
      }
      
      for (SportsEquipment eq : ex.getRequiredEquipment()) {
        Element wE = doc.createElement("SportsEquipment");
        wE.setAttribute("name", eq.toString());
        exE.appendChild(wE);
      }

      for (Muscle m : ex.getActivatedMuscles()) {
        Element mE = doc.createElement("Muscle");
        mE.setAttribute("name", m.toString());
        mE.setAttribute(
            "level",
            Integer.toString(ex.getActivationMap().get(m)
                .getLevel()));
        exE.appendChild(mE);
      }

      for (ExerciseTag t : ex.getTags()) {
        Element tagE = doc.createElement("Tag");
      
        tagE.setAttribute("name", t.toString());
        exE.appendChild(tagE);
      }
      for (URL url : ex.getURLs()) {
        Element urlE = doc.createElement("URL");
        urlE.setAttribute("url", url.toString());
        exE.appendChild(urlE);
      }

      for (File im : ex.getImagePaths()) {
        Element imgE = doc.createElement("Image");
        imgE.setAttribute("path", im.toString());
        
        License license = ex.getImageLicenseMap().get(im);
        if(license == null){
          license = new License();
        }
        
        imgE.setAttribute("author", license.getAuthor());
        imgE.setAttribute("license", license.getLicenseType().getShortName());

        
        exE.appendChild(imgE);
      }

      // save 
      TransformerFactory tf = TransformerFactory.newInstance();

      Transformer t =  tf.newTransformer();

      // set parameters t.setOutputProperty(OutputKeys.INDENT, "yes"); //
      t.setOutputProperty(OutputKeys.METHOD, "xml"); //
      t.setOutputProperty(OutputKeys.MEDIA_TYPE, "text/xml"); // encoding
      t.setOutputProperty(OutputKeys.ENCODING, "utf8");

      // create parent folder if necessary
      destination.mkdirs();

      FileWriter fw = new FileWriter(destination.toString() + "/"
          + ex.getUnlocalizedName() + ".xml");

      t.transform(new DOMSource(doc), new StreamResult(fw));

    } catch (ParserConfigurationException e1) {
      success = false;
      Log.e(TAG, "Error during parsing ExerciseType xml file.",e1);
    } catch (TransformerConfigurationException e) {
      success = false;
      Log.e(TAG, "Error during parsing ExerciseType xml file.",e);
    } catch (IOException e) {
      success = false;
      Log.e(TAG, "Error during parsing ExerciseType xml file.",e);
    } catch (TransformerException e) {
      success = false;
      Log.e(TAG, "Error during parsing ExerciseType xml file.",e);
    }
    return success;
  }
   
}




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