* indexes should be deleted, and deletes those from the server.
*
* @throws IOException if there is a problem communicating with the server
*/
public void deleteUnusedIndexes() throws IOException {
IndexesXml allLocalIndexDefs = application.getIndexesXml();
int numLocalIndexDefs = allLocalIndexDefs.size();
String message = "Found " + numLocalIndexDefs + " local index definition"
+ ((1 == numLocalIndexDefs) ? "." : "s.");
updateListener.onProgress(new UpdateProgressEvent(Thread.currentThread(), message, 10));
DiffResponse pair = diffIndexesOnServer(allLocalIndexDefs);
IndexesXml unusedDefs = pair.missingFromClient;
int numUnused = unusedDefs.size();
message = "Found " + numUnused + " unused " + ((1 == numUnused) ? "index" : "indexes")
+ " on the server.";
updateListener.onProgress(new UpdateProgressEvent(Thread.currentThread(), message, 50));
IndexesXml toDelete = confirmDeletes(unusedDefs);
int numToDelete = toDelete.size();
if (0 == numToDelete) {
updateListener.onSuccess(new UpdateSuccessEvent("No indexes were deleted."));
} else {
message = "Deleting " + numToDelete + ((1 == numUnused) ? " index." : " indexes.");
updateListener.onProgress(new UpdateProgressEvent(Thread.currentThread(), message, 60));
IndexesXml notDeleted = deleteIndexesOnServer(toDelete);
logFailedDeletes(notDeleted);
int numNotDeleted = notDeleted.size();
int numDeleted = numToDelete - numNotDeleted;
message = "Deleted " + numDeleted + ((1 == numDeleted) ? " index." : " indexes.");
updateListener.onSuccess(new UpdateSuccessEvent(message));
}
}