in org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FindToolbarJob.java [96:187]
protected IStatus run(IProgressMonitor monitor) {
findResults.clear();
if (pattern == null || pattern.isEmpty() || fileRevisions == null
|| fileRevisions.length == 0) {
return Status.OK_STATUS;
}
String findPattern = pattern;
if (ignoreCase) {
findPattern = pattern.toLowerCase();
}
int totalRevisions = fileRevisions.length;
SubMonitor progress = SubMonitor.convert(monitor, totalRevisions);
for (int i = 0; i < totalRevisions; i++) {
if (progress.isCanceled()) {
return Status.CANCEL_STATUS;
}
if (findResults.size() >= MAX_RESULTS) {
findResults.setOverflow();
break;
}
// Finds for the pattern in the revision history.
SWTCommit revision = fileRevisions[i];
try {
revision.parseBody();
} catch (IOException e) {
Activator.logError("Error parsing body", e); //$NON-NLS-1$
continue;
}
if (findInCommitId
&& find(findPattern.trim(), revision.getId().name())) {
if (progress.isCanceled()) {
return Status.CANCEL_STATUS;
}
findResults.add(i, revision);
continue;
}
if (findInComments
&& find(findPattern, revision.getFullMessage())) {
if (progress.isCanceled()) {
return Status.CANCEL_STATUS;
}
findResults.add(i, revision);
continue;
}
if (findInAuthor && (find(findPattern,
revision.getAuthorIdent().getName())
|| find(findPattern,
revision.getAuthorIdent().getEmailAddress()))) {
if (progress.isCanceled()) {
return Status.CANCEL_STATUS;
}
findResults.add(i, revision);
continue;
}
if (findInCommitter && (find(findPattern,
revision.getCommitterIdent().getName())
|| find(findPattern,
revision.getCommitterIdent().getEmailAddress()))) {
if (progress.isCanceled()) {
return Status.CANCEL_STATUS;
}
findResults.add(i, revision);
continue;
}
if (findInReference) {
for (int j = 0; j < revision.getRefCount(); j++) {
if (progress.isCanceled()) {
return Status.CANCEL_STATUS;
}
Ref ref = revision.getRef(j);
String refName = ref.getName();
refName = Repository.shortenRefName(refName);
if (find(findPattern, refName)) {
if (progress.isCanceled()) {
return Status.CANCEL_STATUS;
}
findResults.add(i, revision);
break;
}
}
}
progress.worked(1);
}
return progress.isCanceled() ? Status.CANCEL_STATUS : Status.OK_STATUS;
}