Skip to content

Commit 6de4edc

Browse files
vogellaCopilot
andcommitted
Remove dead andFilters concept from Problems view filter
The andFilters boolean was always hardcoded to false with no UI to change it. This removes the dead AND-filter logic that was never reachable: - Remove andFilters field, getter, and setter from FiltersConfigurationDialog and MarkerContentGenerator - Remove TAG_AND persistence (read/write) from MarkerContentGenerator - Simplify select() method to always use OR logic (the only active path) - Remove unused getResourcesFiltersAnded() from MarkerResourceUtil - Simplify computeResources() to always use OR resource computation - Update ExtendedMarkersView.openFiltersDialog() call signature - Update MarkerSupportViewTest reflection calls to match new signature - Clean up Javadoc referencing AND filter behavior Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent a7e91a0 commit 6de4edc

5 files changed

Lines changed: 12 additions & 154 deletions

File tree

bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1121,7 +1121,7 @@ protected FiltersConfigurationDialog createFilterConfigurationDialog(MarkerConte
11211121
void openFiltersDialog() {
11221122
FiltersConfigurationDialog dialog = createFilterConfigurationDialog(generator);
11231123
if (dialog.open() == Window.OK) {
1124-
generator.updateFilters(dialog.getFilters(), dialog.andFilters());
1124+
generator.updateFilters(dialog.getFilters());
11251125
}
11261126
}
11271127

bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ public class FiltersConfigurationDialog extends TrayDialog {
8686

8787
private final MarkerContentGenerator generator;
8888

89-
private boolean andFilters = false;
90-
9189
private Button removeButton;
9290
private Button renameButton;
9391

@@ -113,19 +111,9 @@ public FiltersConfigurationDialog(Shell parentShell, MarkerContentGenerator gene
113111
super(parentShell);
114112
filterGroups = makeWorkingCopy(generator.getAllFilters());
115113
this.generator = generator;
116-
andFilters = false;
117114
setHelpAvailable(false);
118115
}
119116

120-
/**
121-
* Return whether or not to AND the filters
122-
*
123-
* @return boolean
124-
*/
125-
boolean andFilters() {
126-
return andFilters;
127-
}
128-
129117
@Override
130118
protected void configureShell(Shell newShell) {
131119
super.configureShell(newShell);
@@ -693,8 +681,6 @@ protected void buttonPressed(int buttonId) {
693681
}
694682

695683
protected void performDefaults() {
696-
andFilters = false;
697-
698684
filterGroups.clear();
699685
List<MarkerFieldFilterGroup> declaredFilters = new ArrayList<>(generator.getDeclaredFilters());
700686
filterGroups.addAll(declaredFilters);

bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerContentGenerator.java

Lines changed: 7 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ public class MarkerContentGenerator {
6767
private static final String TAG_COLUMN_VISIBILITY = "visible"; //$NON-NLS-1$
6868
private static final String TAG_FILTERS_SECTION = "filterGroups"; //$NON-NLS-1$
6969
private static final String TAG_GROUP_ENTRY = "filterGroup"; //$NON-NLS-1$
70-
private static final String TAG_AND = "andFilters"; //$NON-NLS-1$
7170
private static final String TAG_MARKER_LIMIT = "markerLimit"; //$NON-NLS-1$
7271
private static final String TAG_MARKER_LIMIT_ENABLED = "markerLimitEnabled"; //$NON-NLS-1$
7372

@@ -83,7 +82,6 @@ public class MarkerContentGenerator {
8382
// filters
8483
private Collection<MarkerFieldFilterGroup> enabledFilters;
8584
private Collection<MarkerFieldFilterGroup> filters;
86-
private boolean andFilters;
8785
private int markerLimits = 100;
8886
private boolean markerLimitsEnabled = true;
8987

@@ -362,30 +360,13 @@ void toggleFilter(MarkerFieldFilterGroup group) {
362360
/**
363361
* Update the filters.
364362
*/
365-
void updateFilters(Collection<MarkerFieldFilterGroup> newFilters, boolean newAndFilters) {
366-
setAndFilters(newAndFilters);
363+
void updateFilters(Collection<MarkerFieldFilterGroup> newFilters) {
367364
this.filters = newFilters;
368365
enabledFilters = FILTERS_CHANGED;
369366
writeFiltersPreference();
370367
requestMarkerUpdate();
371368
}
372369

373-
/**
374-
* Set whether the filters are being ANDed or ORed.
375-
*/
376-
void setAndFilters(boolean and) {
377-
andFilters = and;
378-
}
379-
380-
/**
381-
* Return whether the filters are being ANDed or ORed.
382-
*
383-
* @return boolean
384-
*/
385-
boolean andFilters() {
386-
return andFilters;
387-
}
388-
389370
/**
390371
* @return Returns the markerLimits.
391372
*/
@@ -460,10 +441,6 @@ private void loadFilterSettings(IMemento memento) {
460441
return;
461442
}
462443

463-
Boolean andValue = memento.getBoolean(TAG_AND);
464-
if (andValue != null) {
465-
setAndFilters(andValue.booleanValue());
466-
}
467444
IMemento children[] = memento.getChildren(TAG_GROUP_ENTRY);
468445

469446
for (IMemento element : children) {
@@ -583,7 +560,6 @@ private void writeLimitSettings(XMLMemento memento) {
583560
* Write the settings for the filters to the memento.
584561
*/
585562
private void writeFiltersSettings(XMLMemento memento) {
586-
memento.putBoolean(TAG_AND, andFilters());
587563
Iterator<MarkerFieldFilterGroup> groups = getAllFilters().iterator();
588564
while (groups.hasNext()) {
589565
MarkerFieldFilterGroup group = groups.next();
@@ -699,28 +675,16 @@ MarkerType getType(String typeId) {
699675
*/
700676
boolean select(MarkerEntry entry) {
701677
try {
702-
return select(entry, getSelectedResources(), getEnabledFilters(), andFilters());
678+
return select(entry, getSelectedResources(), getEnabledFilters());
703679
} finally {
704680
entry.clearCache();
705681
}
706682
}
707683

708684
static boolean select(MarkerEntry entry, IResource[] selResources,
709-
Collection<MarkerFieldFilterGroup> enabledFilters, boolean andFilters) {
685+
Collection<MarkerFieldFilterGroup> enabledFilters) {
710686
if (enabledFilters.size() > 0) {
711-
Iterator<MarkerFieldFilterGroup> filtersIterator = enabledFilters.iterator();
712-
if (andFilters) {
713-
while (filtersIterator.hasNext()) {
714-
MarkerFieldFilterGroup group = filtersIterator.next();
715-
if (!group.selectByScope(entry, selResources) || !group.selectByFilters(entry)) {
716-
return false;
717-
}
718-
}
719-
return true;
720-
}
721-
722-
while (filtersIterator.hasNext()) {
723-
MarkerFieldFilterGroup group = filtersIterator.next();
687+
for (MarkerFieldFilterGroup group : enabledFilters) {
724688
if (group.selectByScope(entry, selResources) && group.selectByFilters(entry)) {
725689
return true;
726690
}
@@ -823,16 +787,14 @@ IResource[] getSelectedResources() {
823787
* is a lot more time-consuming than collecting only once,filtering once and
824788
* adding to a list once.As a pre-filtering step, the
825789
* MarkerFieldFilterGroup#selectByScope uses IPath comparison for selection,
826-
* which happens real quickly.Also when filters are Anded we get a chance to
827-
* gather only on resources that actually matter.And we get a tool to check
828-
* at various places.
790+
* which happens real quickly.
829791
*
830792
* @return list of resource we want to collect markers for taking various
831793
* enabled filters into account.
832794
*/
833795
Collection<IResource> getResourcesForBuild() {
834796
currentResources = MarkerResourceUtil.computeResources(
835-
getSelectedResources(), getEnabledFilters(), andFilters());
797+
getSelectedResources(), getEnabledFilters());
836798
return currentResources;
837799
}
838800

@@ -965,7 +927,6 @@ private boolean internalGatherMarkers(Collection<IResource> resources, String ty
965927
}
966928
IResource[] selected = getSelectedResources();
967929
Collection<MarkerFieldFilterGroup> enabled = getEnabledFilters();
968-
boolean filtersAreANDed = andFilters();
969930
Iterator<IResource> iterator = resources.iterator();
970931
while (iterator.hasNext()) {
971932
IMarker[] markers = null;
@@ -988,7 +949,7 @@ private boolean internalGatherMarkers(Collection<IResource> resources, String ty
988949
int lenght = markers.length;
989950
for (int i = 0; i < lenght; i++) {
990951
entry = new MarkerEntry(markers[i]);
991-
if (select(entry, selected, enabled, filtersAreANDed)) {
952+
if (select(entry, selected, enabled)) {
992953
result.add(entry);
993954
}
994955
entry.clearCache();

bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerResourceUtil.java

Lines changed: 2 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,15 @@ class MarkerResourceUtil {
5858
* various enabled filters into account.
5959
*/
6060
static Set<IResource> computeResources(IResource[] selectedResources,
61-
Collection<MarkerFieldFilterGroup> enabledFilters, boolean andFilters) {
61+
Collection<MarkerFieldFilterGroup> enabledFilters) {
6262
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
6363

6464
if (enabledFilters==null||enabledFilters.isEmpty()) {
6565
HashSet<IResource> set = new HashSet<>(1);
6666
set.add(root);
6767
return set;
6868
}
69-
Set<IResource> resourceSet = andFilters ? getResourcesFiltersAnded(enabledFilters,
70-
selectedResources, root) : getResourcesFiltersOred(
69+
Set<IResource> resourceSet = getResourcesFiltersOred(
7170
enabledFilters, selectedResources, root);
7271

7372
//remove duplicates
@@ -141,89 +140,6 @@ static Set<IResource> getResourcesFiltersOred(Collection<MarkerFieldFilterGroup>
141140
return resourceSet;
142141
}
143142

144-
/**
145-
* The method may look long and a little time-consuming, but it actually
146-
* performs a short-circuit AND operation on the resources, and therefore
147-
* quick.
148-
*
149-
* Note: This is an optimization; we could have ORed the resources instead.
150-
* Let us say, for example, we had a filter of workspace-scope(ANY), and
151-
* others of scope on Selected element and maybe others.Now, if we computed
152-
* markers by ORing the resources, then we would compute markers for the
153-
* entire Workspace. The filters would anyways keep only the markers that
154-
* are an intersection of all resources (filter by scope) .In other words,
155-
* we spend more system-resources in both gathering and filtering.If we
156-
* ANDed the scopes(resources) we'd, save a good amount of system-resources
157-
* in both phases.
158-
*
159-
* @return set
160-
*/
161-
static Set<IResource> getResourcesFiltersAnded(Collection<MarkerFieldFilterGroup> enabledFilters,
162-
IResource[] selectedResources, IWorkspaceRoot root) {
163-
if (enabledFilters==null||enabledFilters.isEmpty()) {
164-
HashSet<IResource> set = new HashSet<>(1);
165-
set.add(root);
166-
return set;
167-
}
168-
Set<IResource> resourceSet = new HashSet<>();
169-
170-
Iterator<MarkerFieldFilterGroup> filtersIterator = enabledFilters.iterator();
171-
Set<IResource> removeMain = new HashSet<>();
172-
while (filtersIterator.hasNext()) {
173-
MarkerFieldFilterGroup group = filtersIterator.next();
174-
Set<IResource> set = getResourcesForFilter(group, selectedResources, root);
175-
if (resourceSet.isEmpty()) {
176-
// first time
177-
resourceSet.addAll(set);
178-
} else {
179-
Iterator<IResource> resIterator = resourceSet.iterator();
180-
while (resIterator.hasNext()) {
181-
boolean remove = true;
182-
IResource mainRes = resIterator.next();
183-
Iterator<IResource> iterator = set.iterator();
184-
while (iterator.hasNext() && remove) {
185-
IResource grpRes = iterator.next();
186-
remove = !grpRes.equals(mainRes);
187-
if (remove && grpRes.getFullPath().isPrefixOf(mainRes.getFullPath())) {
188-
remove = false;
189-
} else if (remove && mainRes.getFullPath().isPrefixOf(grpRes.getFullPath())) {
190-
remove = false;
191-
removeMain.add(mainRes);
192-
}
193-
}
194-
if (remove) {
195-
resIterator.remove();
196-
}
197-
}
198-
Iterator<IResource> iterator = set.iterator();
199-
while (iterator.hasNext()) {
200-
boolean remove = true;
201-
IResource grpRes = iterator.next();
202-
resIterator = resourceSet.iterator();
203-
while (resIterator.hasNext()&&remove) {
204-
IResource mainRes = resIterator.next();
205-
remove = !grpRes.equals(mainRes);
206-
if (remove && mainRes.getFullPath().isPrefixOf(grpRes.getFullPath())) {
207-
remove = false;
208-
}
209-
}
210-
if (remove) {
211-
iterator.remove();
212-
}
213-
}
214-
resourceSet.addAll(set);
215-
resourceSet.removeAll(removeMain);
216-
removeMain.clear();
217-
if (resourceSet.isEmpty()) {
218-
// if the And between two is empty
219-
// then its empty for all
220-
return resourceSet;
221-
}
222-
}
223-
}
224-
return resourceSet;
225-
}
226-
227143
/**
228144
* Get the resources indicated by the filter's scope.
229145
*/

tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerSupportViewTest.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -282,15 +282,10 @@ public void okPressed() {
282282
getFilters.setAccessible(true);
283283
Object filtersGot = getFilters.invoke(this);
284284

285-
Method andFilters = FiltersConfigurationDialog.class.getDeclaredMethod("andFilters");
286-
andFilters.setAccessible(true);
287-
Object filtersAnd = andFilters.invoke(this);
288-
289-
Method updateFilters = MarkerContentGenerator.class.getDeclaredMethod("updateFilters", Collection.class,
290-
boolean.class);
285+
Method updateFilters = MarkerContentGenerator.class.getDeclaredMethod("updateFilters", Collection.class);
291286
updateFilters.setAccessible(true);
292287

293-
updateFilters.invoke(_generator, filtersGot, filtersAnd);
288+
updateFilters.invoke(_generator, filtersGot);
294289

295290
} catch (Exception e) {
296291
e.printStackTrace();

0 commit comments

Comments
 (0)