Merge branch 'bug4104' of ssh://sapsailing.com/home/trac/git into bug4104

This commit is contained in:
Henri Kohlberg committed 2018-09-11 15:38:24 +02:00
commit be101a6a66
17 files changed
+98 -84

No files matched your search

@@ -2148,4 +2148,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
String confirm();
String cancel();
String close();
String username();
}
@@ -2140,6 +2140,7 @@ tagCreateFilterNotLoggedIn=You are not logged in so filters will not be saved!
tagCreateFilterHint=Create a filter set to filter the list of tags.
tagButtonNotSavable=Could not save tag-button on the server!
tagNotEditable=You may not edit this tag!
username=User name
confirm=Confirm
cancel=Cancel
close=Close
@@ -2135,6 +2135,7 @@ tagCreateFilterNotLoggedIn=Bitte einloggen um Filter speichern zu können!
tagCreateFilterHint=Lege einen Filter an, um die sichtbaren Tags zu reduzieren.
tagButtonNotSavable=Tag-Button konnten nicht auf dem Server gespeichert werden!
tagNotEditable=Du darfst diesen Tag nicht bearbeiten!
username=Benutzername
confirm=Fortfahren
cancel=Abbrechen
close=Schließen
@@ -23,6 +23,9 @@ import com.sap.sse.common.filter.Filter;
import com.sap.sse.common.filter.FilterSet;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
/**
* Used to create or edit a {@link FilterSet} for {@link TagDTO}s
*/
public abstract class AbstractTagsFilterSetDialog extends DataEntryDialog<FilterSet<TagDTO, FilterWithUI<TagDTO>>> {
private final FilterSet<TagDTO, FilterWithUI<TagDTO>> tagsFilterSet;
private final StringMessages stringMessages;
@@ -6,6 +6,9 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.domain.common.dto.TagDTO;
import com.sap.sse.common.filter.FilterSet;
/**
* Used to create a {@link FilterSet} for {@link TagDTO}s
*/
public class CreateTagsFilterSetDialog extends AbstractTagsFilterSetDialog {
public CreateTagsFilterSetDialog(List<String> existingFilterSetNames, List<String> availableTagFilterNames,
@@ -6,6 +6,9 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.domain.common.dto.TagDTO;
import com.sap.sse.common.filter.FilterSet;
/**
* Used to edit a {@link FilterSet} for {@link TagDTO}s
*/
public class EditTagsFilterSetDialog extends AbstractTagsFilterSetDialog {
public EditTagsFilterSetDialog(FilterSet<TagDTO, FilterWithUI<TagDTO>> tagsFilterSet, List<String> availableTagFilterNames,
@@ -7,6 +7,11 @@ import com.sap.sailing.domain.common.dto.TagDTO;
import com.sap.sse.common.filter.Filter;
import com.sap.sse.common.filter.FilterSet;
/**
* Contains a {@link List} of {@link FilterSet filterSet}.
* {@link activeFilterSet} holds current active {@link FilterSet filterSet} due to always only one {@link FilterSet filterSet} being applied
*
*/
public class TagFilterSets {
private List<FilterSet<TagDTO, FilterWithUI<TagDTO>>> filterSets;
@@ -19,8 +19,7 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.security.ui.client.UserService;
/**
* A dialog to create, edit and delete filter sets for tags
*
* A dialog to create, edit and delete {@link TagFilterSets}
*/
public class TagFilterSetsDialog extends DataEntryDialog<TagFilterSets> {
private final TagFilterSets tagFilterSets;
@@ -142,6 +141,12 @@ public class TagFilterSetsDialog extends DataEntryDialog<TagFilterSets> {
return activeFilterSetRadioButton;
}
/**
* Creates a Button, which if clicked creates and opens a {@link EditTagsFilterSetDialog},
* with which a user can edit a {@link FilterSet}
* @param filterSetToEdit The {@link FilterSet} to edit
* @return This Button, which now can be placed into the UI
*/
private Button createEditFilterSetButton(final FilterSet<TagDTO, FilterWithUI<TagDTO>> filterSetToEdit) {
final Button editFilterSetBtn = new Button(stringMessages.edit());
final String filterSetToEditName = filterSetToEdit.getName();
@@ -196,6 +201,11 @@ public class TagFilterSetsDialog extends DataEntryDialog<TagFilterSets> {
return editFilterSetBtn;
}
/**
* Creates a Button, which if clicked deletes a {@link FilterSet} can be deleted
* @param filterSet The regarding {@link FilterSet} which will get deleted if clicked
* @return The Button
*/
private Button createDeleteFilterSetButton(FilterSet<TagDTO, FilterWithUI<TagDTO>> filterSet) {
final Button deleteFilterSetBtn = new Button(stringMessages.delete());
deleteFilterSetBtn.addStyleName("inlineButton");
@@ -225,7 +235,10 @@ public class TagFilterSetsDialog extends DataEntryDialog<TagFilterSets> {
});
return deleteFilterSetBtn;
}
/**
* Returns the maintained {@link TagFilterSets}
*/
@Override
protected TagFilterSets getResult() {
TagFilterSets result = new TagFilterSets();
@@ -11,6 +11,10 @@ import com.sap.sailing.domain.common.dto.TagDTO;
import com.sap.sse.common.filter.FilterSet;
import com.sap.sse.common.filter.ValueFilter;
/**
* Serializes and deserializes {@link TagFilterSets}.
*/
public class TagFilterSetsJsonDeSerializer implements GwtJsonDeSerializer<TagFilterSets> {
public static final String FIELD_ACTIVE_FILTERSET = "activeFilterSet";
public static final String FIELD_FILTERSETS = "filterSets";
@@ -18,16 +22,24 @@ public class TagFilterSetsJsonDeSerializer implements GwtJsonDeSerializer<TagFil
public static final String FIELD_FILTERSET_ISEDITABLE = "isEditable";
public static final String FIELD_FILTERS = "filters";
/**
* Serializes {@link TagFilterSets tagFilterSets} to {@link JSONObject json}.
*
* @param tagFilterSets
* {@link TagFilterSets} to be serialized
* @return {@link JSONObject json object}
*/
@Override
public JSONObject serialize(TagFilterSets filterSets) {
public JSONObject serialize(TagFilterSets tagFilterSets) {
JSONObject result = new JSONObject();
result.put(FIELD_ACTIVE_FILTERSET,
filterSets.getActiveFilterSet() != null ? new JSONString(filterSets.getActiveFilterSet().getName())
tagFilterSets.getActiveFilterSet() != null ? new JSONString(tagFilterSets.getActiveFilterSet().getName())
: JSONNull.getInstance());
JSONArray filterSetArray = new JSONArray();
result.put(FIELD_FILTERSETS, filterSetArray);
int i = 0;
for (FilterSet<TagDTO, FilterWithUI<TagDTO>> filterSet : filterSets.getFilterSets()) {
for (FilterSet<TagDTO, FilterWithUI<TagDTO>> filterSet : tagFilterSets.getFilterSets()) {
// only editable filter sets are stored
if (filterSet.isEditable()) {
JSONObject filterSetObject = new JSONObject();
@@ -50,6 +62,14 @@ public class TagFilterSetsJsonDeSerializer implements GwtJsonDeSerializer<TagFil
return result;
}
/**
* Deserializes {@link JSONObject json} to {@link TagFilterSets tagFilterSets}.
*
* @param rootObject
* JSONObject to be deserialized
* @return {@link TagFilterSets tagFilterSets}
*/
@Override
public TagFilterSets deserialize(JSONObject rootObject) {
TagFilterSets result = null;
@@ -3,9 +3,14 @@ package com.sap.sailing.gwt.ui.client.shared.filter;
import com.sap.sailing.domain.common.dto.TagDTO;
/**
* A factory for FilterWithUI<Tag> instances
* A factory for FilterWithUI<TagDTO> instances
*/
public class TagFilterWithUIFactory {
/**
* Creates and returns a requested {@link FilterWithUI}
* @param filterName The name of the requested filter
* @return A new Instance of the requested {@link FilterWithUI}
*/
public static FilterWithUI<TagDTO> createFilter(String filterName) {
if (TagUsernameFilter.FILTER_NAME.equals(filterName)) {
return new TagUsernameFilter();
@@ -6,16 +6,13 @@ import com.sap.sse.common.filter.AbstractTextFilter;
/**
* A filter filtering tags by their tag attribute
*
* @author Julian Rendl(D067890)
*
*/
public class TagTagFilter extends AbstractTextFilter<TagDTO> implements FilterWithUI<TagDTO> {
public static final String FILTER_NAME = "Tag";
public TagTagFilter() {
}
public static final String FILTER_NAME = "TagTagFilter";
/**
* Checks if {@link TagDTO} matches filter criteria
*/
@Override
public boolean matches(TagDTO tag) {
boolean result = false;
@@ -68,10 +65,7 @@ public class TagTagFilter extends AbstractTextFilter<TagDTO> implements FilterWi
@Override
public String getName() {
if (this.getOperator() != null) {
return FILTER_NAME + " " + this.getOperator().getName() + " " + this.getValue();
}
return FILTER_NAME + " " + this.getValue();
return FILTER_NAME;
}
@Override
@@ -81,7 +75,7 @@ public class TagTagFilter extends AbstractTextFilter<TagDTO> implements FilterWi
@Override
public String getLocalizedDescription(StringMessages stringMessages) {
return "Top " + this.getValue() + " " + stringMessages.tag();
return stringMessages.tag();
}
@Override
@@ -6,9 +6,6 @@ import com.sap.sse.common.filter.AbstractTextFilter;
/**
* A filter filtering tags by the name of their author
*
* @author Julian Rendl (D067890)
*
*/
public class TagUsernameFilter extends AbstractTextFilter<TagDTO> implements FilterWithUI<TagDTO> {
public static final String FILTER_NAME = "TagUsernameFilter";
@@ -65,16 +62,12 @@ public class TagUsernameFilter extends AbstractTextFilter<TagDTO> implements Fil
@Override
public String getLocalizedName(StringMessages stringMessages) {
// return stringMessages.username();
// TODO: Proper way to handle multiple instances of string messages?
return com.sap.sse.security.ui.client.i18n.StringMessages.INSTANCE.username();
return stringMessages.username();
}
@Override
public String getLocalizedDescription(StringMessages stringMessages) {
// return stringMessages.username();
// TODO: Proper way to handle multiple instances of string messages?
return com.sap.sse.security.ui.client.i18n.StringMessages.INSTANCE.username();
return stringMessages.username();
}
@Override
@@ -8,7 +8,9 @@ import com.sap.sse.common.filter.NumberFilter;
import com.sap.sse.common.filter.TextFilter;
import com.sap.sse.common.filter.TextOperator;
import com.sap.sse.common.filter.ValueFilter;
/**
* JSON serializer and deserializer for {@link FilterWithUI}
*/
public class TagValueFilterJsonDeSerializerUtil {
public static final String FIELD_FILTER_NAME = "name";
public static final String FIELD_FILTER_OPERATOR = "operator";
@@ -1,7 +1,5 @@
package com.sap.sailing.gwt.ui.raceboard.tagging;
import java.io.Serializable;
import com.google.gwt.user.client.ui.Button;
import com.sap.sailing.gwt.ui.raceboard.tagging.TagPanelResources.TagPanelStyle;
@@ -10,9 +8,7 @@ import com.sap.sailing.gwt.ui.raceboard.tagging.TagPanelResources.TagPanelStyle;
* as buttons for quick and easy access. Clicking on tag-buttons does not have any effect until click listener gets
* added manually! See example at {@link TaggingPanel#addTagButton(TagButton) addTagButton()}.
*/
public class TagButton extends Button implements Serializable {
private static final long serialVersionUID = -722157125410637316L;
public class TagButton extends Button{
private final TagPanelStyle style = TagPanelResources.INSTANCE.style();
@@ -41,7 +41,7 @@ public class TagFilterLabel extends Label {
* current selected filter
*/
public void update(FilterSet<TagDTO, Filter<TagDTO>> tagFilterSet) {
if (tagFilterSet != null && !tagFilterSet.getName().isEmpty()) {
if (tagFilterSet != null && tagFilterSet.getName() != null && !tagFilterSet.getName().isEmpty()) {
setText(stringMessages.tagCurrentFilter() + " " + tagFilterSet.getName());
removeStyleName(style.hidden());
} else {
@@ -16,7 +16,6 @@ import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.sap.sailing.gwt.ui.client.StringMessages;
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.TagFilterSets;
import com.sap.sailing.gwt.ui.client.shared.filter.TagFilterSetsDialog;
@@ -35,7 +34,7 @@ import com.sap.sse.security.ui.client.UserService;
/**
* Panel used to select and modify tag filter.
*/
public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWithUI<TagDTO> {
public class TagFilterPanel extends FlowPanel implements KeyUpHandler, Filter<TagDTO> {
private final static String LOCAL_STORAGE_TAGS_FILTER_SETS_KEY = "sailingAnalytics.raceBoard.tagsFilterSets";
@@ -46,7 +45,7 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
private final UserService userService;
private final TagListProvider tagListProvider;
private final TagFilterSets tagFilterSets;
private TagFilterSets tagFilterSets;
private final TextBox searchTextBox;
private final Button clearTextBoxButton, filterSettingsButton;
private final AbstractListFilter<TagDTO> filter;
@@ -138,8 +137,7 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
TagFilterSetsDialog tagsFilterSetsDialog = new TagFilterSetsDialog(tagFilterSets, stringMessages,
new DialogCallback<TagFilterSets>() {
@Override
public void cancel() {
}
public void cancel() {}
@Override
public void ok(final TagFilterSets newTagFilterSets) {
@@ -148,8 +146,6 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
tagFilterSets.setActiveFilterSet(newTagFilterSets.getActiveFilterSet());
tagListProvider.setCurrentFilterSet(newTagFilterSets.getActiveFilterSetWithGeneralizedType());
tagListProvider.updateFilteredTags();
tagListProvider.refresh();
updateTagFilterControlState(newTagFilterSets);
if (userService.getCurrentUser() != null) {
@@ -197,9 +193,7 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
if (userService.getCurrentUser() != null) {
userService.getPreference(LOCAL_STORAGE_TAGS_FILTER_SETS_KEY, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
// do nothing
}
public void onFailure(Throwable caught) {}
@Override
public void onSuccess(String result) {
@@ -208,15 +202,15 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
final TagFilterSetsJsonDeSerializer deserializer = new TagFilterSetsJsonDeSerializer();
final JSONValue value = JSONParser.parseStrict(result);
if (value.isObject() != null) {
for (FilterSet<TagDTO, FilterWithUI<TagDTO>> filterSet : deserializer
.deserialize((JSONObject) value).getFilterSets()) {
tagFilterSets.addFilterSet(filterSet);
}
tagFilterSets = deserializer.deserialize((JSONObject) value);
tagListProvider.setCurrentFilterSet(tagFilterSets.getActiveFilterSetWithGeneralizedType());
}
} else {
tagListProvider.setCurrentFilterSet(null);
}
else {
tagFilterSets = new TagFilterSets();
tagListProvider.setCurrentFilterSet(null);
}
tagFilterSets.toString();
}
});
} else {
@@ -258,15 +252,19 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
/**
* Adds {@link TagFilterPanel} to applied filters at {@link TagListProvider} to apply searchbox filter.
*/
private void ensureSetSearchFilter() {
if (tagListProvider.getTagFilterSet() == null
|| !Util.contains(tagListProvider.getTagFilterSet().getFilters(), this)) {
FilterSet<TagDTO, Filter<TagDTO>> newFilterSetWithThis = new FilterSet<>(getName());
if (tagListProvider.getTagFilterSet() != null) {
for (Filter<TagDTO> oldFilter : tagListProvider.getTagFilterSet().getFilters()) {
private void ensureSearchFilterIsSet() {
FilterSet<TagDTO, Filter<TagDTO>> tagProviderFilterSet = tagListProvider.getTagFilterSet();
if (tagProviderFilterSet == null || !Util.contains(tagProviderFilterSet.getFilters(), this)) {
FilterSet<TagDTO, Filter<TagDTO>> newFilterSetWithThis;
if (tagProviderFilterSet != null) {
newFilterSetWithThis = new FilterSet<>(tagProviderFilterSet.getName());
for (Filter<TagDTO> oldFilter : tagProviderFilterSet.getFilters()) {
newFilterSetWithThis.addFilter(oldFilter);
}
}
else {
newFilterSetWithThis = new FilterSet<>(null);
}
newFilterSetWithThis.addFilter(this);
tagListProvider.setCurrentFilterSet(newFilterSetWithThis);
}
@@ -308,30 +306,6 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
return null;
}
@Override
public String validate(StringMessages stringMessages) {
return null;
}
@Override
public String getLocalizedName(StringMessages stringMessages) {
return getName();
}
@Override
public String getLocalizedDescription(StringMessages stringMessages) {
return getName();
}
@Override
public FilterWithUI<TagDTO> copy() {
return null;
}
@Override
public FilterUIFactory<TagDTO> createUIFactory() {
return null;
}
/**
* Applies filter entered by using search textbox to filterset.
@@ -348,8 +322,8 @@ public class TagFilterPanel extends FlowPanel implements KeyUpHandler, FilterWit
} else {
if (newValue.length() >= 2) {
clearTextBoxButton.removeStyleName(style.tagFilterHiddenButton());
ensureSetSearchFilter();
tagListProvider.setCurrentFilterSet(tagListProvider.getTagFilterSet()); //
ensureSearchFilterIsSet();
tagListProvider.setCurrentFilterSet(tagListProvider.getTagFilterSet());
}
}
}
@@ -111,8 +111,8 @@ public class TagListProvider extends ListDataProvider<TagDTO> {
*/
protected void setCurrentFilterSet(FilterSet<TagDTO, Filter<TagDTO>> tagFilterSet) {
currentFilterSet = tagFilterSet;
updateOberservingLabels();
updateFilteredTags();
updateOberservingLabels();
refresh();
}
}