Пример #1
0
    private void moveAll(TaskResult result) {
      boolean useExternalStorageOld = MyStorage.isStorageExternal();
      if (mUseExternalStorageNew
          && !MyStorage.isWritableExternalStorageAvailable(result.messageBuilder)) {
        mUseExternalStorageNew = false;
      }

      MyLog.d(
          this,
          "About to move data from " + useExternalStorageOld + " to " + mUseExternalStorageNew);

      if (mUseExternalStorageNew == useExternalStorageOld) {
        result.messageBuilder.append(" Nothing to do.");
        result.success = true;
        return;
      }
      try {
        result.success =
            moveDatabase(
                mUseExternalStorageNew, result.messageBuilder, DatabaseHolder.DATABASE_NAME);
        if (result.success) {
          result.moved = true;
          moveDatabase(
              mUseExternalStorageNew,
              result.messageBuilder,
              TimelineSearchSuggestionsProvider.DATABASE_NAME);
          moveDownloads(mUseExternalStorageNew, result.messageBuilder);
        }
      } finally {
        if (result.success) {
          saveNewSettings(mUseExternalStorageNew, result.messageBuilder);
        }
      }
    }
Пример #2
0
    private void moveDownloads(boolean useExternalStorageNew, StringBuilder messageToAppend) {
      String method = "moveDownloads";
      boolean succeeded = false;
      boolean done = false;
      boolean didWeCopyAnything = false;
      File dirOld = null;
      File dirNew = null;
      try {

        if (!done) {
          dirOld = MyStorage.getDataFilesDir(MyStorage.DIRECTORY_DOWNLOADS);
          dirNew =
              MyStorage.getDataFilesDir(
                  MyStorage.DIRECTORY_DOWNLOADS, TriState.fromBoolean(useExternalStorageNew));
          if (dirOld == null || !dirOld.exists()) {
            messageToAppend.append(" No old avatars. ");
            done = true;
            succeeded = true;
          }
          if (dirNew == null) {
            messageToAppend.append(" No directory for new avatars?! ");
            done = true;
          }
        }
        if (!done) {
          if (MyLog.isVerboseEnabled()) {
            MyLog.v(this, method + " from: " + dirOld.getPath());
            MyLog.v(this, method + " to: " + dirNew.getPath());
          }
          String filename = "";
          try {
            for (File fileOld : dirOld.listFiles()) {
              if (fileOld.isFile()) {
                filename = fileOld.getName();
                File fileNew = new File(dirNew, filename);
                if (copyFile(fileOld, fileNew)) {
                  didWeCopyAnything = true;
                }
              }
            }
            succeeded = true;
          } catch (Exception e) {
            String logMsg = method + " couldn't copy'" + filename + "'";
            MyLog.v(this, logMsg, e);
            messageToAppend.insert(0, " " + logMsg + ": " + e.getMessage());
          }
          done = true;
        }
      } catch (Exception e) {
        MyLog.v(this, e);
        messageToAppend.append(method + " error: " + e.getMessage() + ". ");
        succeeded = false;
      } finally {
        // Delete unnecessary files
        try {
          if (succeeded) {
            if (didWeCopyAnything) {
              for (File fileOld : dirOld.listFiles()) {
                if (fileOld.isFile() && !fileOld.delete()) {
                  messageToAppend.append(method + " couldn't delete old file " + fileOld.getName());
                }
              }
            }
          } else {
            if (dirNew != null && dirNew.exists()) {
              for (File fileNew : dirNew.listFiles()) {
                if (fileNew.isFile() && !fileNew.delete()) {
                  messageToAppend.append(method + " couldn't delete new file " + fileNew.getName());
                }
              }
            }
          }
        } catch (Exception e) {
          String logMsg = method + " deleting unnecessary files";
          MyLog.v(this, logMsg, e);
          messageToAppend.append(logMsg + ": " + e.getMessage());
        }
      }
      MyLog.d(this, method + " " + (succeeded ? "succeeded" : "failed"));
    }
Пример #3
0
 private boolean moveDatabase(
     boolean useExternalStorageNew, StringBuilder messageToAppend, String databaseName) {
   final String method = "moveDatabase";
   boolean succeeded = false;
   boolean done = false;
   /** Did we actually copied database? */
   boolean copied = false;
   File dbFileOld = null;
   File dbFileNew = null;
   try {
     dbFileOld = MyContextHolder.get().context().getDatabasePath(databaseName);
     dbFileNew =
         MyStorage.getDatabasePath(databaseName, TriState.fromBoolean(useExternalStorageNew));
     if (dbFileOld == null) {
       messageToAppend.append(" No old database " + databaseName);
       done = true;
     }
     if (!done) {
       if (dbFileNew == null) {
         messageToAppend.append(" No new database " + databaseName);
         done = true;
       } else {
         if (!dbFileOld.exists()) {
           messageToAppend.append(" No old database " + databaseName);
           done = true;
           succeeded = true;
         } else if (dbFileNew.exists()) {
           messageToAppend.insert(0, " Database already exists " + databaseName);
           if (!dbFileNew.delete()) {
             messageToAppend.insert(0, " Couldn't delete already existed files. ");
             done = true;
           }
         }
       }
     }
     if (!done) {
       if (MyLog.isVerboseEnabled()) {
         MyLog.v(this, method + " from: " + dbFileOld.getPath());
         MyLog.v(this, method + " to: " + dbFileNew.getPath());
       }
       try {
         if (copyFile(dbFileOld, dbFileNew)) {
           copied = true;
           succeeded = true;
         }
       } catch (Exception e) {
         MyLog.v(this, "Copy database " + databaseName, e);
         messageToAppend.insert(
             0, " Couldn't copy database " + databaseName + ": " + e.getMessage() + ". ");
       }
     }
   } catch (Exception e) {
     MyLog.v(this, e);
     messageToAppend.append(method + " error: " + e.getMessage() + ". ");
     succeeded = false;
   } finally {
     // Delete unnecessary files
     try {
       if (succeeded) {
         if (copied && dbFileOld != null && dbFileOld.exists() && !dbFileOld.delete()) {
           messageToAppend.append(method + " couldn't delete old files. ");
         }
       } else {
         if (dbFileNew != null && dbFileNew.exists() && !dbFileNew.delete()) {
           messageToAppend.append(method + " couldn't delete new files. ");
         }
       }
     } catch (Exception e) {
       MyLog.v(this, method + " Delete old file", e);
       messageToAppend.append(method + " couldn't delete old files. " + e.getMessage() + ". ");
     }
   }
   MyLog.d(this, method + "; " + databaseName + " " + (succeeded ? "succeeded" : "failed"));
   return succeeded;
 }