bug4104: TagListProvider is now used

This commit is contained in:
D067890
2018-08-06 14:01:29 +02:00
parent 882f95d110
commit e6b7315a07
5 changed files with 30 additions and 43 deletions
@@ -1,11 +1,9 @@
package com.sap.sailing.gwt.ui.client;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import com.google.gwt.view.client.ListDataProvider;
import com.sap.sailing.gwt.ui.shared.TagDTO;
import com.sap.sse.common.Util;
@@ -14,23 +12,21 @@ import com.sap.sse.common.filter.FilterSet;
public class TagListProvider extends ListDataProvider<TagDTO> implements TagProvider{
private final List<TagDTO> allTags;
private FilterSet<TagDTO, Filter<TagDTO>> tagsFilterSet;
public TagListProvider(List<TagDTO> allTags, FilterSet<TagDTO, Filter<TagDTO>> tagsFilterSet) {
this.allTags = allTags;
public TagListProvider(FilterSet<TagDTO, Filter<TagDTO>> tagsFilterSet) {
this.tagsFilterSet = tagsFilterSet;
}
@Override
public Iterable<TagDTO> getAllTags() {
return allTags;
public List<TagDTO> getAllTags() {
return getList();
}
@Override
public Iterable<TagDTO> getFilteredTags() {
Set<TagDTO> currentFilteredList = new LinkedHashSet<>(allTags);
public List<TagDTO> getFilteredTags() {
List<TagDTO> currentFilteredList = new ArrayList<TagDTO>(getAllTags());
if (tagsFilterSet != null) {
for (Filter<TagDTO> filter : tagsFilterSet.getFilters()) {
@@ -65,7 +61,7 @@ public class TagListProvider extends ListDataProvider<TagDTO> implements TagProv
@Override
public boolean hasActiveFilters() {
return (tagsFilterSet != null && !tagsFilterSet.getFilters().isEmpty()
&& Util.size(getFilteredTags()) != allTags.size());
&& Util.size(getFilteredTags()) != getAllTags().size());
}
@Override
@@ -78,4 +74,8 @@ public class TagListProvider extends ListDataProvider<TagDTO> implements TagProv
public int getFilteredTagsListSize() {
return Util.size(getFilteredTags());
}
public void addTag(TagDTO tag) {
getAllTags().add(tag);
}
}
@@ -1,5 +1,7 @@
package com.sap.sailing.gwt.ui.client;
import java.util.List;
import com.sap.sailing.gwt.ui.shared.TagDTO;
import com.sap.sse.common.filter.Filter;
import com.sap.sse.common.filter.FilterSet;
@@ -7,15 +9,14 @@ import com.sap.sse.common.filter.FilterSet;
public interface TagProvider {
/**
* @return a non-<code>null</code> sequence of all Tags which may be empty.
* @return all tags.
*/
Iterable<TagDTO> getAllTags();
List<TagDTO> getAllTags();
/**
* @return a non-<code>null</code> sequence of all Tags filtered by the applied
* {@link #getTagsFilterSet() filter set} (which may be null).
* @return all tags which match current filtering criteria
*/
Iterable<TagDTO> getFilteredTags();
List<TagDTO> getFilteredTags();
public FilterSet<TagDTO, Filter<TagDTO>> getTagsFilterSet();
@@ -16,7 +16,7 @@ public class SelectedTagsFilter implements FilterWithUI<TagDTO>, TagSelectionPro
@Override
public boolean matches(TagDTO tag) {
boolean result = false;
if(tagsSelectionProvider != null && tagsSelectionProvider.isSelected(tag)) {
if(tagsSelectionProvider != null) {// && tagsSelectionProvider.isSelected(tag)) {
result = true;
}
return result;
@@ -12,28 +12,18 @@ import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.TagListProvider;
import com.sap.sailing.gwt.ui.client.TagProvider;
import com.sap.sailing.gwt.ui.client.shared.filter.CompetitorRaceRankFilter;
import com.sap.sailing.gwt.ui.client.shared.filter.CompetitorSelectionProviderFilterContext;
import com.sap.sailing.gwt.ui.client.shared.filter.CompetitorTotalRankFilter;
import com.sap.sailing.gwt.ui.client.shared.filter.CompetitorsFilterSets;
import com.sap.sailing.gwt.ui.client.shared.filter.CompetitorsFilterSetsJsonDeSerializer;
import com.sap.sailing.gwt.ui.client.shared.filter.FilterUIFactory;
import com.sap.sailing.gwt.ui.client.shared.filter.FilterWithUI;
import com.sap.sailing.gwt.ui.client.shared.filter.LeaderboardFilterContext;
import com.sap.sailing.gwt.ui.client.shared.filter.SelectedTagsFilter;
import com.sap.sailing.gwt.ui.client.shared.filter.TagSelectionProviderFilterContext;
import com.sap.sailing.gwt.ui.client.shared.filter.SelectedRaceFilterContext;
import com.sap.sailing.gwt.ui.client.shared.filter.TagsFilterSets;
import com.sap.sailing.gwt.ui.client.shared.filter.TagsFilterSetsDialog;
import com.sap.sailing.gwt.ui.client.shared.filter.TagsFilterSetsJsonDeSerializer;
import com.sap.sailing.gwt.ui.leaderboard.CompetitorFilterResources;
import com.sap.sailing.gwt.ui.leaderboard.CompetitorFilterResources.CompetitorFilterCss;
import com.sap.sailing.gwt.ui.shared.TagDTO;
import com.sap.sse.common.filter.BinaryOperator;
import com.sap.sse.common.filter.Filter;
import com.sap.sse.common.filter.FilterSet;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
@@ -60,11 +50,10 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
private FilterSet<TagDTO, FilterWithUI<TagDTO>> lastActiveTagFilterSet;
public TagFilterPanel(RaceIdentifier selectedRaceIdentifier, StringMessages stringMessages, TagsFilterSets tagsFilterSets, TagListProvider tagProvider) {
public TagFilterPanel(RaceIdentifier selectedRaceIdentifier, StringMessages stringMessages, TagListProvider tagProvider) {
css.ensureInjected();
this.selectedRaceIdentifier = selectedRaceIdentifier;
this.stringMessages = stringMessages;
this.tagsFilterSets = tagsFilterSets;
this.tagProvider = tagProvider;
this.setStyleName(css.competitorFilterContainer());
@@ -152,8 +152,6 @@ public class TaggingPanel extends ComponentWithoutSettings implements TimeListen
private final Panel buttonsPanel;
private final List<Button> buttons;
private final List<TagDTO> tags;
private final ListDataProvider<TagDTO> tagProvider;
private final TagListProvider tagListProvider;
private final TagsFilterSets tagsFilterSet;
@@ -174,13 +172,11 @@ public class TaggingPanel extends ComponentWithoutSettings implements TimeListen
TagPanelResources.INSTANCE.style().ensureInjected();
CellListResources.INSTANCE.cellListStyle().ensureInjected();
tags = new ArrayList<TagDTO>();
tagProvider = new ListDataProvider<TagDTO>();
tagsFilterSet = new TagsFilterSets();
tagListProvider = new TagListProvider(tags, tagsFilterSet.getActiveFilterSetWithGeneralizedType());
tagListProvider = new TagListProvider(tagsFilterSet.getActiveFilterSetWithGeneralizedType());
panel = new HeaderPanel();
filterbarPanel = new TagFilterPanel(null, stringMessages, tagsFilterSet, tagListProvider);
filterbarPanel = new TagFilterPanel(null, stringMessages, tagListProvider);
tagCellList = new CellList<TagDTO>(new TagCell(), CellListResources.INSTANCE);
tagSelectionModel = new SingleSelectionModel<TagDTO>();
@@ -223,8 +219,8 @@ public class TaggingPanel extends ComponentWithoutSettings implements TimeListen
panel.setFooterWidget(buttonsPanel);
// Content (tags)
tagProvider.addDataDisplay(tagCellList);
tagProvider.setList(tags);
tagListProvider.addDataDisplay(tagCellList);
tagListProvider.setList(new ArrayList<TagDTO>());
tagCellList.setSelectionModel(tagSelectionModel);
tagSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@@ -283,7 +279,7 @@ public class TaggingPanel extends ComponentWithoutSettings implements TimeListen
@Override
public void onSuccess(Void result) {
Notification.notify("Added new tag successfully", NotificationType.INFO);
tags.add(tag);
tagListProvider.addTag(tag);
updateContent();
}
});
@@ -300,8 +296,8 @@ public class TaggingPanel extends ComponentWithoutSettings implements TimeListen
}
private void updateContent() {
tagCellList.setVisibleRange(0, tags.size());
tags.sort(new Comparator<TagDTO>() {
tagCellList.setVisibleRange(0, tagListProvider.getFilteredTagsListSize());
tagListProvider.getAllTags().sort(new Comparator<TagDTO>() {
@Override
public int compare(TagDTO tag1, TagDTO tag2) {
long time1 = tag1.getRaceTimepoint().asMillis();
@@ -309,7 +305,7 @@ public class TaggingPanel extends ComponentWithoutSettings implements TimeListen
return time1 < time2 ? -1 : time1 == time2 ? 0 : 1;
}
});
tagProvider.refresh();
tagListProvider.refresh();
}
private void updateButtons() {
@@ -336,8 +332,9 @@ public class TaggingPanel extends ComponentWithoutSettings implements TimeListen
@Override
public void onSuccess(List<TagDTO> result) {
if (result != null) {
List<TagDTO> tags = tagListProvider.getAllTags();
for (TagDTO tag : result) {
if (!tags.contains(tag)) {
if (!tagListProvider.getAllTags().contains(tag)) {
tags.add(tag);
lastReceivedTag = tag.getRaceTimepoint();
updateContent();