Android Open Source - Todo Upgrade Handler






From Project

Back to project page Todo.

License

The source code is released under:

GNU General Public License

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

/**
 * This file is part of Todo.txt for Android, an app for managing your todo.txt file (http://todotxt.com).
 *//  ww  w  .j  av  a 2 s.  c o m
 * Copyright (c) 2009-2013 Todo.txt for Android contributors (http://todotxt.com)
 *
 * LICENSE:
 *
 * Todo.txt for Android 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 2 of the License, or (at your option) any
 * later version.
 *
 * Todo.txt for Android 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 Todo.txt for Android. If not, see
 * <http://www.gnu.org/licenses/>.
 *
 * Todo.txt for Android's source code is available at https://github.com/ginatrapani/todo.txt-android
 *
 * @author Todo.txt for Android contributors <todotxt@yahoogroups.com>
 * @license http://www.gnu.org/licenses/gpl.html
 * @copyright 2009-2013 Todo.txt for Android contributors (http://todotxt.com)
 */

package com.todotxt.todotxttouch;

import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Environment;
import android.util.Log;
import com.todotxt.todotxttouch.util.Util;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class UpgradeHandler {
  List<UpgradeTask> mHandlers = new ArrayList<UpgradeTask>();
  private static final String TAG = UpgradeHandler.class.getSimpleName();
  private TodoApplication mApp;
  private int mCurVersion;
  private int mPrevVersion;

  public UpgradeHandler(TodoApplication application) {
    mApp = application;
  }

  public void run() throws NameNotFoundException {
    mCurVersion = mApp.getPackageManager().getPackageInfo(mApp.getPackageName(), 0).versionCode;
    mPrevVersion = mApp.m_prefs.getVersion();

    if (mPrevVersion >= mCurVersion) {
      Log.d(TAG, "No need to upgrade. Stored version is " + mPrevVersion
          + ". Cur version is "
          + mCurVersion
      );

      return;
    }

    Log.i(TAG, "Running upgrade tasks from " + mPrevVersion + " to " + mCurVersion);

    initHandlers();

    for (UpgradeTask handler : mHandlers) {
      int version = handler.getVersion();

      if (version > mPrevVersion && version <= mCurVersion) {
        Log.i(TAG, "Running upgrade task: " + handler.getDescription());
        handler.getRunnable().run();
      }
    }

    mApp.m_prefs.storeVersion(mCurVersion);

    Log.i(TAG, "Successfully upgraded to version " + mCurVersion);
  }

  void initHandlers() {
    UpgradeTask up53 = new UpgradeTask(
      "Migrate data from external to internal storage", 53,
      new Runnable() {
        @Override
        public void run() {
          File srcTodo = new File(Environment
            .getExternalStorageDirectory(),
            "data/com.todotxt.todotxttouch/todo.txt"
          );
          File srcDone = new File(Environment
            .getExternalStorageDirectory(),
            "data/com.todotxt.todotxttouch/done.txt"
          );
          File destTodo = new File(TodoApplication
            .getAppContetxt().getFilesDir(), "todo.txt"
          );
          File destDone = new File(TodoApplication
            .getAppContetxt().getFilesDir(), "done.txt"
          );

          if (srcTodo.exists() && !destTodo.exists()) {
            Log.d(TAG, "Copying " + srcTodo + " to " + destTodo);

            Util.copyFile(srcTodo, destTodo, false);
          }

          if (srcDone.exists() && !destDone.exists()) {
            Log.d(TAG, "Copying " + srcDone + " to " + destDone);

            Util.copyFile(srcDone, destDone, false);
          }
        }
      }
    );
    mHandlers.add(up53);
  }

  final class UpgradeTask {
    private String mDescription;
    private int mVersion;
    private Runnable mRunnable;

    public UpgradeTask(String description, int version, Runnable runnable) {
      mDescription = description;
      mVersion = version;
      mRunnable = runnable;
    }

    public String getDescription() {
      return mDescription;
    }

    public int getVersion() {
      return mVersion;
    }

    public Runnable getRunnable() {
      return mRunnable;
    }
  }
}




Java Source Code List

.MainActivity.java
com.todotxt.todotxttouch.AddTask.java
com.todotxt.todotxttouch.Constants.java
com.todotxt.todotxttouch.HelpActivity.java
com.todotxt.todotxttouch.PeriodicSyncStarter.java
com.todotxt.todotxttouch.Preferences.java
com.todotxt.todotxttouch.RelativeLayoutCheckable.java
com.todotxt.todotxttouch.SyncerService.java
com.todotxt.todotxttouch.TodoApplication.java
com.todotxt.todotxttouch.TodoException.java
com.todotxt.todotxttouch.TodoLocationPreference.java
com.todotxt.todotxttouch.TodoPreferences.java
com.todotxt.todotxttouch.TodoTxtTouch.java
com.todotxt.todotxttouch.TodoWidgetProvider.java
com.todotxt.todotxttouch.UpgradeHandler.java
com.todotxt.todotxttouch.remote.Client.java
com.todotxt.todotxttouch.remote.PullTodoResult.java
com.todotxt.todotxttouch.remote.RemoteClientManager.java
com.todotxt.todotxttouch.remote.RemoteClient.java
com.todotxt.todotxttouch.remote.RemoteConflictException.java
com.todotxt.todotxttouch.remote.RemoteException.java
com.todotxt.todotxttouch.remote.RemoteFolderImpl.java
com.todotxt.todotxttouch.remote.RemoteFolder.java
com.todotxt.todotxttouch.task.AndFilter.java
com.todotxt.todotxttouch.task.ByContextFilter.java
com.todotxt.todotxttouch.task.ByPriorityFilter.java
com.todotxt.todotxttouch.task.ByProjectFilter.java
com.todotxt.todotxttouch.task.ByTextFilter.java
com.todotxt.todotxttouch.task.ContextParser.java
com.todotxt.todotxttouch.task.EndpointsTaskBagImpl.java
com.todotxt.todotxttouch.task.FilterFactory.java
com.todotxt.todotxttouch.task.Filter.java
com.todotxt.todotxttouch.task.LinkParser.java
com.todotxt.todotxttouch.task.LocalFileTaskRepository.java
com.todotxt.todotxttouch.task.LocalTaskRepository.java
com.todotxt.todotxttouch.task.MailAddressParser.java
com.todotxt.todotxttouch.task.OrFilter.java
com.todotxt.todotxttouch.task.PhoneNumberParser.java
com.todotxt.todotxttouch.task.PriorityTextSplitter.java
com.todotxt.todotxttouch.task.Priority.java
com.todotxt.todotxttouch.task.ProjectParser.java
com.todotxt.todotxttouch.task.Sort.java
com.todotxt.todotxttouch.task.TaskBagFactory.java
com.todotxt.todotxttouch.task.TaskBagImpl.java
com.todotxt.todotxttouch.task.TaskBag.java
com.todotxt.todotxttouch.task.TaskPersistException.java
com.todotxt.todotxttouch.task.Task.java
com.todotxt.todotxttouch.task.TextSplitter.java
com.todotxt.todotxttouch.util.CursorPositionCalculator.java
com.todotxt.todotxttouch.util.Path.java
com.todotxt.todotxttouch.util.RelativeDate.java
com.todotxt.todotxttouch.util.Strings.java
com.todotxt.todotxttouch.util.TaskIo.java
com.todotxt.todotxttouch.util.Tree.java
com.todotxt.todotxttouch.util.Util.java
com.todotxt.todotxttouch.widget.ListWidgetProvider.java
com.todotxt.todotxttouch.widget.ListWidgetService.java
de.timroes.swipetodismiss.SwipeDismissList.java
uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.AbsDefaultHeaderTransformer.java
uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshAttacher.java
uk.co.senab.actionbarpulltorefresh.library.DefaultHeaderTransformer.java
uk.co.senab.actionbarpulltorefresh.library.InstanceCreationUtils.java
uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher.java
uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout.java
uk.co.senab.actionbarpulltorefresh.library.viewdelegates.AbsListViewDelegate.java
uk.co.senab.actionbarpulltorefresh.library.viewdelegates.ScrollYDelegate.java
uk.co.senab.actionbarpulltorefresh.library.viewdelegates.WebViewDelegate.java
voodsingular.todo.MyEndpointEndpoint.java
voodsingular.todo.MyEndpoint.java
voodsingular.todo.TaskBean.java