public int updateFetchStatus(
     AbstractSearchRequest searchRequest, FetchStatus fetchStatus, int bufferSize, TaskLog taskLog)
     throws SearchLibException {
   setCurrentTaskLog(taskLog);
   try {
     int total = 0;
     FileItemFieldEnum.INSTANCE.fetchStatus.addFilterQuery(
         searchRequest, fetchStatus.value, false, true);
     List<FileItem> fileItemList = new ArrayList<FileItem>();
     for (; ; ) {
       fileItemList.clear();
       getFileList(searchRequest, 0, bufferSize, fileItemList);
       if (fileItemList.size() == 0) break;
       for (FileItem fileItem : fileItemList) fileItem.setFetchStatus(fetchStatus);
       updateFileItems(fileItemList);
       total += fileItemList.size();
       taskLog.setInfo(total + " URI(s) updated");
       if (taskLog.isAbortRequested()) throw new SearchLibException.AbortException();
     }
     return total;
   } catch (ParseException e) {
     throw new SearchLibException(e);
   } finally {
     resetCurrentTaskLog();
   }
 }
 public int delete(AbstractSearchRequest searchRequest, TaskLog taskLog)
     throws SearchLibException {
   setCurrentTaskLog(taskLog);
   try {
     int total = 0;
     List<FileItem> itemList = new ArrayList<FileItem>();
     for (; ; ) {
       itemList.clear();
       getFileList(searchRequest, 0, 1000, itemList);
       if (itemList.size() == 0) break;
       List<String> uriList = new ArrayList<String>(itemList.size());
       for (FileItem fileItem : itemList) uriList.add(fileItem.getUri());
       dbClient.deleteDocuments(FileItemFieldEnum.INSTANCE.uri.getName(), uriList);
       total += itemList.size();
       taskLog.setInfo(total + " URI(s) deleted");
       if (taskLog.isAbortRequested()) throw new SearchLibException.AbortException();
     }
     return total;
   } finally {
     resetCurrentTaskLog();
   }
 }