Changeset 3956


Ignore:
Timestamp:
Nov 5, 2010, 11:52:42 AM (13 years ago)
Author:
olle
Message:

Refs #704. Refs #523. Refs #620. Routines for permanently removing
items in the trash updated to repeat attempts to empty the
trash can, as long as some item is removed in each attempt,
and more items to remove remain:

  1. Class/file action/write/EmptyTrash.java in client/servlet/ updated:
  2. Private method void emptyTrashCan() updated with new argument

int totalItemCount and calling new private method
int emptyTrashCanAttempt() as long as some item is removed in each
attempt, and more items to remove remain.

  1. New private method int emptyTrashCanAttempt() added.

It attempts to permanently remove items, using code previously
in private method void emptyTrashCan().

  1. Class/file plugins/EmptyTrashPlugin.java in plugin/ updated:
  2. Public method void execute(Request request, Response response, ProgressReporter progress)

updated to call new private method
int emptyTrashCanAttempt(Request request, Response response,
ProgressReporter progress, int accDeletedCount, int totalItemCount)
as long as some item is removed in each attempt, and more items to
remove remain.

  1. New private method

int emptyTrashCanAttempt(Request request, Response response,
ProgressReporter progress, int accDeletedCount, int totalItemCount)
added. It attempts to permanently remove items, using code previously
in public method
void execute(Request request, Response response, ProgressReporter progress).

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/client/servlet/src/org/proteios/action/write/EmptyTrash.java

    r3953 r3956  
    129129    else
    130130    {
    131       emptyTrashCan();
     131      emptyTrashCan(totalItemCount);
    132132    }
    133133  }
     
    183183  /**
    184184   * Empty trash can.
    185    */
    186   private void emptyTrashCan()
     185   *
     186   * @param totalItemCount int Total number of items to remove.
     187   */
     188  private void emptyTrashCan(int totalItemCount)
     189  {
     190    int totalDeletedCount = 0;
     191    // Repeat emptying trash can as long as items are removed and more items remain
     192    int deletedCount = emptyTrashCanAttempt();
     193    // Update total deleted count
     194    totalDeletedCount += deletedCount;
     195    log.debug("Number of items deleted in trash can emptying attempt = " + deletedCount + " total number deleted = " + totalDeletedCount + " of " + totalItemCount);
     196    while (deletedCount > 0 && ((totalItemCount - totalDeletedCount) > 0))
     197    {
     198      // Try again to empty trash can
     199      deletedCount = emptyTrashCanAttempt();
     200      // Update total deleted count
     201      totalDeletedCount += deletedCount;
     202      log.debug("Number of items deleted in trash can emptying attempt = " + deletedCount + " total number deleted = " + totalDeletedCount + " of " + totalItemCount);
     203    }
     204    // Set delete message
     205    String deleteMessage = null;
     206    if (totalDeletedCount == 1)
     207    {
     208      deleteMessage = totalDeletedCount + " " + getLocale().get("itemDeleted");
     209    }
     210    else
     211    {
     212      deleteMessage = totalDeletedCount + " " + getLocale().get("itemsDeleted");
     213    }
     214    if (getErrorMessage() != null)
     215    {
     216      deleteMessage = deleteMessage + ". ERROR: " + getErrorMessage();
     217    }
     218    log.debug("Message = \"" + deleteMessage + "\"");
     219    setMessage(deleteMessage);
     220  }
     221
     222
     223  /**
     224   * Empty trash can attempt.
     225   *
     226   * @return int The number of deleted items in this attempt.
     227   */
     228  private int emptyTrashCanAttempt()
    187229  {
    188230    setErrorMessage(null);
     
    194236    // Try deleting File items
    195237    deletedCount += deleteItemsOfSpecificClass(File.class);
    196     // Try deleting Project items (done before trying to delete project directory)
    197     deletedCount += deleteItemsOfSpecificClass(Project.class);
    198238    // Try deleting Directory items
    199239    deletedCount += deleteItemsOfSpecificClass(Directory.class);
    200     // Set delete message
    201     String deleteMessage = null;
    202     if (deletedCount == 1)
    203     {
    204       deleteMessage = deletedCount + " " + getLocale().get("itemDeleted");
    205     }
    206     else
    207     {
    208       deleteMessage = deletedCount + " " + getLocale().get("itemsDeleted");
    209     }
    210     if (getErrorMessage() != null)
    211     {
    212       deleteMessage = deleteMessage + ". ERROR: " + getErrorMessage();
    213     }
    214     log.debug("Message = \"" + deleteMessage + "\"");
    215     setMessage(deleteMessage);
     240    // Try deleting Project items
     241    deletedCount += deleteItemsOfSpecificClass(Project.class);
     242    // Return number of items deleted in this attempt
     243    return deletedCount;
    216244  }
    217245
  • trunk/plugin/src/org/proteios/plugins/EmptyTrashPlugin.java

    r3953 r3956  
    136136      ProgressReporter progress)
    137137  {
    138     //
    139138    Integer totalItemCountInput = (Integer) job.getValue("totalItemCountInput");
    140139    log.debug("totalItemCountInput = " + totalItemCountInput);
     
    146145    }
    147146    //
     147    int totalDeletedCount = 0;
     148    // Repeat emptying trash can as long as items are removed and more items remain
     149    int deletedCount = emptyTrashCanAttempt(request, response, progress, totalDeletedCount, totalItemCount);
     150    // Update total deleted count
     151    totalDeletedCount += deletedCount;
     152    log.debug("Number of items deleted in trash can emptying attempt = " + deletedCount + " total number deleted = " + totalDeletedCount + " of " + totalItemCountInput);
     153    while (deletedCount > 0 && ((totalItemCountInput - totalDeletedCount) > 0))
     154    {
     155      // Try again to empty trash can
     156      deletedCount = emptyTrashCanAttempt(request, response, progress, totalDeletedCount, totalItemCount);
     157      // Update total deleted count
     158      totalDeletedCount += deletedCount;
     159      log.debug("Number of items deleted in trash can emptying attempt = " + deletedCount + " total number deleted = " + totalDeletedCount + " of " + totalItemCountInput);
     160    }
     161    // Set delete message
     162    String deleteMessage = null;
     163    if (totalDeletedCount == 1)
     164    {
     165      deleteMessage = totalDeletedCount + " item deleted";
     166    }
     167    else
     168    {
     169      deleteMessage = totalDeletedCount + " items deleted";
     170    }
     171    if (getErrorMessage() != null)
     172    {
     173      deleteMessage = deleteMessage + ". ERROR: " + getErrorMessage();
     174    }
     175    log.debug("Message = \"" + deleteMessage + "\"");
     176    // Set job response message
     177    if (getErrorMessage() == null)
     178    {
     179      response.setDone(deleteMessage);
     180    }
     181    else
     182    {
     183      response.setError(deleteMessage, null);
     184    }
     185  }
     186
     187
     188  private int emptyTrashCanAttempt(Request request, Response response,
     189      ProgressReporter progress, int accDeletedCount, int totalItemCount)
     190  {
    148191    setErrorMessage(null);
    149192    int deletedCount = 0;
    150193    // Try deleting Job items
    151     deletedCount += deleteItemsOfSpecificClass(Job.class, progress, deletedCount, totalItemCount);
     194    deletedCount += deleteItemsOfSpecificClass(Job.class, progress, accDeletedCount, totalItemCount);
    152195    // Try deleting SpectrumSearch items
    153     deletedCount += deleteItemsOfSpecificClass(SpectrumSearch.class, progress, deletedCount, totalItemCount);
     196    deletedCount += deleteItemsOfSpecificClass(SpectrumSearch.class, progress, accDeletedCount, totalItemCount);
    154197    // Try deleting File items
    155     deletedCount += deleteItemsOfSpecificClass(File.class, progress, deletedCount, totalItemCount);
    156     // Try deleting Project items (done before trying to delete project directory)
    157     deletedCount += deleteItemsOfSpecificClass(Project.class, progress, deletedCount, totalItemCount);
     198    deletedCount += deleteItemsOfSpecificClass(File.class, progress, accDeletedCount, totalItemCount);
    158199    // Try deleting Directory items
    159     deletedCount += deleteItemsOfSpecificClass(Directory.class, progress, deletedCount, totalItemCount);
    160     // Set delete message
    161     String deleteMessage = null;
    162     if (deletedCount == 1)
    163     {
    164       deleteMessage = deletedCount + " item deleted";
    165     }
    166     else
    167     {
    168       deleteMessage = deletedCount + " items deleted";
    169     }
    170     if (getErrorMessage() != null)
    171     {
    172       deleteMessage = deleteMessage + ". ERROR: " + getErrorMessage();
    173     }
    174     log.debug("Message = \"" + deleteMessage + "\"");
    175     // Set job response message
    176     if (getErrorMessage() == null)
    177     {
    178       response.setDone(deleteMessage);
    179     }
    180     else
    181     {
    182       response.setError(deleteMessage, null);
    183     }
     200    deletedCount += deleteItemsOfSpecificClass(Directory.class, progress, accDeletedCount, totalItemCount);
     201    // Try deleting Project items
     202    deletedCount += deleteItemsOfSpecificClass(Project.class, progress, accDeletedCount, totalItemCount);
     203    // Return number of items deleted in this attempt
     204    return deletedCount;
    184205  }
    185206
Note: See TracChangeset for help on using the changeset viewer.