Added sailing roles/permissions to suggests in AdminConsole

This commit is contained in:
Steffen Schäfer committed 2016-02-03 13:13:49 +01:00
1 parent a2a190fa31
commit 466b76e882
3 files changed
+345 -322

No files matched your search

@@ -1,320 +1,323 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.sap.sailing.domain.common.security.Permission;
import com.sap.sailing.domain.common.security.SailingPermissionsForRoleProvider;
import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsRefresher;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
import com.sap.sailing.gwt.ui.client.MediaService;
import com.sap.sailing.gwt.ui.client.MediaServiceAsync;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
import com.sap.sailing.gwt.ui.masterdataimport.MasterDataImportPanel;
import com.sap.sailing.gwt.ui.shared.BetterDateTimeBox;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sailing.gwt.ui.shared.SecurityStylesheetResources;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.adminconsole.AdminConsolePanel;
import com.sap.sse.gwt.adminconsole.DefaultRefreshableAdminConsolePanel;
import com.sap.sse.gwt.client.EntryPointHelper;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.controls.filestorage.FileStoragePanel;
import com.sap.sse.gwt.resources.Highcharts;
import com.sap.sse.security.ui.client.component.UserManagementPanel;
import com.sap.sse.security.ui.client.i18n.StringMessages;
public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements RegattaRefresher, LeaderboardsRefresher, LeaderboardGroupsRefresher {
private Set<RegattasDisplayer> regattasDisplayers;
private Set<LeaderboardsDisplayer> leaderboardsDisplayers;
private Set<LeaderboardGroupsDisplayer> leaderboardGroupsDisplayers;
private final MediaServiceAsync mediaService = GWT.create(MediaService.class);
@Override
protected void doOnModuleLoad() {
Highcharts.ensureInjectedWithMore();
super.doOnModuleLoad();
EntryPointHelper.registerASyncService((ServiceDefTarget) mediaService, RemoteServiceMappingConstants.mediaServiceRemotePath);
createUI();
}
private void createUI() {
AdminConsolePanel panel = new AdminConsolePanel(getUserService(), SailingPermissionsForRoleProvider.INSTANCE,
sailingService, getStringMessages().releaseNotes(), "/release_notes_admin.html", /* error reporter */ this, SecurityStylesheetResources.INSTANCE.css());
BetterDateTimeBox.initialize();
regattasDisplayers = new HashSet<>();
leaderboardsDisplayers = new HashSet<>();
leaderboardGroupsDisplayers = new HashSet<>();
final EventManagementPanel eventManagementPanel = new EventManagementPanel(sailingService, this, getStringMessages());
panel.addToVerticalTabPanel(new DefaultRefreshableAdminConsolePanel<EventManagementPanel>(eventManagementPanel) {
@Override
public void refreshAfterBecomingVisible() {
getWidget().fillEvents();
fillLeaderboardGroups();
}
}, getStringMessages().events(), Permission.MANAGE_EVENTS);
leaderboardGroupsDisplayers.add(eventManagementPanel);
RegattaManagementPanel regattaManagementPanel = new RegattaManagementPanel(
sailingService, this, getStringMessages(), this);
regattaManagementPanel.ensureDebugId("RegattaStructureManagement");
panel.addToVerticalTabPanel(new DefaultRefreshableAdminConsolePanel<RegattaManagementPanel>(regattaManagementPanel) {
@Override
public void refreshAfterBecomingVisible() {
fillRegattas();
}
}, getStringMessages().regattas(), Permission.MANAGE_REGATTAS);
regattasDisplayers.add(regattaManagementPanel);
/* LEADERBOARDS */
final TabLayoutPanel leaderboardTabPanel = panel.addVerticalTab(getStringMessages().leaderboards(), "LeaderboardPanel");
final LeaderboardConfigPanel leaderboardConfigPanel = new LeaderboardConfigPanel(sailingService, this, this,
getStringMessages(), /* showRaceDetails */true, this);
leaderboardConfigPanel.ensureDebugId("LeaderboardConfiguration");
panel.addToTabPanel(leaderboardTabPanel, new DefaultRefreshableAdminConsolePanel<LeaderboardConfigPanel>(leaderboardConfigPanel) {
@Override
public void refreshAfterBecomingVisible() {
fillLeaderboards();
}
}, getStringMessages().leaderboards(), Permission.MANAGE_LEADERBOARDS);
regattasDisplayers.add(leaderboardConfigPanel);
leaderboardsDisplayers.add(leaderboardConfigPanel);
final LeaderboardGroupConfigPanel leaderboardGroupConfigPanel = new LeaderboardGroupConfigPanel(sailingService,
this, this, this, this, getStringMessages());
leaderboardGroupConfigPanel.ensureDebugId("LeaderboardGroupConfiguration");
panel.addToTabPanel(leaderboardTabPanel, new DefaultRefreshableAdminConsolePanel<LeaderboardGroupConfigPanel>(leaderboardGroupConfigPanel) {
@Override
public void refreshAfterBecomingVisible() {
fillLeaderboards();
fillLeaderboardGroups();
}
}, getStringMessages().leaderboardGroups(), Permission.MANAGE_LEADERBOARD_GROUPS);
regattasDisplayers.add(leaderboardGroupConfigPanel);
leaderboardGroupsDisplayers.add(leaderboardGroupConfigPanel);
leaderboardsDisplayers.add(leaderboardGroupConfigPanel);
/* RACES */
final TabLayoutPanel racesTabPanel = panel.addVerticalTab(getStringMessages().trackedRaces(), "RacesPanel");
racesTabPanel.ensureDebugId("RacesPanel");
TrackedRacesManagementPanel trackedRacesManagementPanel = new TrackedRacesManagementPanel(sailingService, this,
this, getStringMessages());
trackedRacesManagementPanel.ensureDebugId("TrackedRacesManagement");
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<TrackedRacesManagementPanel>(trackedRacesManagementPanel),
getStringMessages().trackedRaces(), Permission.SHOW_TRACKED_RACES);
regattasDisplayers.add(trackedRacesManagementPanel);
final CompetitorPanel competitorPanel = new CompetitorPanel(sailingService, getStringMessages(), this);
competitorPanel.ensureDebugId("CompetitorPanel");
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<CompetitorPanel>(competitorPanel) {
@Override
public void refreshAfterBecomingVisible() {
getWidget().refreshCompetitorList();
}
}, getStringMessages().competitors(), Permission.MANAGE_ALL_COMPETITORS);
RaceCourseManagementPanel raceCourseManagementPanel = new RaceCourseManagementPanel(sailingService, this, this, getStringMessages());
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<RaceCourseManagementPanel>(raceCourseManagementPanel), getStringMessages().courseLayout(), Permission.MANAGE_COURSE_LAYOUT);
regattasDisplayers.add(raceCourseManagementPanel);
final AsyncActionsExecutor asyncActionsExecutor = new AsyncActionsExecutor();
WindPanel windPanel = new WindPanel(sailingService, asyncActionsExecutor, this, this, getStringMessages());
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<WindPanel>(windPanel), getStringMessages().wind(),
Permission.MANAGE_WIND);
regattasDisplayers.add(windPanel);
final MediaPanel mediaPanel = new MediaPanel(regattasDisplayers, sailingService, this, mediaService, this, getStringMessages());
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<MediaPanel>(mediaPanel) {
@Override
public void refreshAfterBecomingVisible() {
getWidget().onShow();
}
}, getStringMessages().mediaPanel(), Permission.MANAGE_MEDIA);
/* RACE COMMITTEE APP */
final TabLayoutPanel raceCommitteeTabPanel = panel.addVerticalTab(getStringMessages().raceCommitteeApp(), "RaceCommiteeAppPanel");
final DeviceConfigurationUserPanel deviceConfigurationUserPanel = new DeviceConfigurationUserPanel(sailingService,
getStringMessages(), this);
panel.addToTabPanel(raceCommitteeTabPanel, new DefaultRefreshableAdminConsolePanel<DeviceConfigurationUserPanel>(deviceConfigurationUserPanel),
getStringMessages().deviceConfiguration(), Permission.MANAGE_DEVICE_CONFIGURATION);
/* CONNECTORS */
final TabLayoutPanel connectorsTabPanel = panel.addVerticalTab(getStringMessages().connectors(), "TrackingProviderPanel");
TracTracEventManagementPanel tractracEventManagementPanel = new TracTracEventManagementPanel(sailingService,
this, this, getStringMessages());
tractracEventManagementPanel.ensureDebugId("TracTracEventManagement");
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<TracTracEventManagementPanel>(tractracEventManagementPanel),
getStringMessages().tracTracEvents(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(tractracEventManagementPanel);
SwissTimingReplayConnectorPanel swissTimingReplayConnectorPanel = new SwissTimingReplayConnectorPanel(
sailingService, this, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SwissTimingReplayConnectorPanel>(swissTimingReplayConnectorPanel),
getStringMessages().swissTimingArchiveConnector(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(swissTimingReplayConnectorPanel);
SwissTimingEventManagementPanel swisstimingEventManagementPanel = new SwissTimingEventManagementPanel(
sailingService, this, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SwissTimingEventManagementPanel>(swisstimingEventManagementPanel),
getStringMessages().swissTimingEvents(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(swisstimingEventManagementPanel);
final SmartphoneTrackingEventManagementPanel raceLogTrackingEventManagementPanel = new SmartphoneTrackingEventManagementPanel(
sailingService, this, this, this, getStringMessages());
raceLogTrackingEventManagementPanel.ensureDebugId("SmartphoneTrackingPanel");
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SmartphoneTrackingEventManagementPanel>(raceLogTrackingEventManagementPanel) {
@Override
public void refreshAfterBecomingVisible() {
fillLeaderboards();
}
}, getStringMessages().smartphoneTracking(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(raceLogTrackingEventManagementPanel);
leaderboardsDisplayers.add(raceLogTrackingEventManagementPanel);
IgtimiAccountsPanel igtimiAccountsPanel = new IgtimiAccountsPanel(sailingService, this, getStringMessages());
igtimiAccountsPanel.ensureDebugId("IgtimiAccounts");
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<IgtimiAccountsPanel>(igtimiAccountsPanel),
getStringMessages().igtimiAccounts(), Permission.MANAGE_IGTIMI_ACCOUNTS);
ResultImportUrlsManagementPanel resultImportUrlsManagementPanel = new ResultImportUrlsManagementPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<ResultImportUrlsManagementPanel>(resultImportUrlsManagementPanel),
getStringMessages().resultImportUrls(), Permission.MANAGE_RESULT_IMPORT_URLS);
StructureImportManagementPanel structureImportUrlsManagementPanel = new StructureImportManagementPanel(sailingService, this, getStringMessages(), this, eventManagementPanel);
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<StructureImportManagementPanel>(structureImportUrlsManagementPanel),
getStringMessages().manage2Sail() + " " + getStringMessages().regattaStructureImport(), Permission.MANAGE_STRUCTURE_IMPORT_URLS);
/* ADVANCED */
final TabLayoutPanel advancedTabPanel = panel.addVerticalTab(getStringMessages().advanced(), "AdvancedPanel");
final ReplicationPanel replicationPanel = new ReplicationPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<ReplicationPanel>(replicationPanel) {
@Override
public void refreshAfterBecomingVisible() {
replicationPanel.updateReplicaList();
}
}, getStringMessages().replication(), Permission.MANAGE_REPLICATION);
final MasterDataImportPanel masterDataImportPanel = new MasterDataImportPanel(getStringMessages(), sailingService,
this, eventManagementPanel, this, this);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<MasterDataImportPanel>(masterDataImportPanel),
getStringMessages().masterDataImportPanel(), Permission.MANAGE_MASTERDATA_IMPORT);
RemoteServerInstancesManagementPanel remoteServerInstancesManagementPanel = new RemoteServerInstancesManagementPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<RemoteServerInstancesManagementPanel>(remoteServerInstancesManagementPanel),
getStringMessages().remoteServerInstances(), Permission.MANAGE_SAILING_SERVER_INSTANCES);
LocalServerManagementPanel localServerInstancesManagementPanel = new LocalServerManagementPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<LocalServerManagementPanel>(localServerInstancesManagementPanel),
getStringMessages().localServer(), Permission.MANAGE_LOCAL_SERVER_INSTANCE);
final UserManagementPanel userManagementPanel = new UserManagementPanel(getUserService(), StringMessages.INSTANCE,
SailingPermissionsForRoleProvider.INSTANCE);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<UserManagementPanel>(userManagementPanel),
getStringMessages().userManagement(), Permission.MANAGE_USERS);
final FileStoragePanel fileStoragePanel = new FileStoragePanel(sailingService, this);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<FileStoragePanel>(fileStoragePanel),
getStringMessages().fileStorage(), Permission.MANAGE_FILE_STORAGE);
panel.initUI();
fillRegattas();
fillLeaderboardGroups();
fillLeaderboards();
RootLayoutPanel rootPanel = RootLayoutPanel.get();
rootPanel.add(panel);
}
@Override
public void fillLeaderboards() {
sailingService.getLeaderboards(new MarkedAsyncCallback<List<StrippedLeaderboardDTO>>(
new AsyncCallback<List<StrippedLeaderboardDTO>>() {
@Override
public void onSuccess(List<StrippedLeaderboardDTO> leaderboards) {
for (LeaderboardsDisplayer leaderboardsDisplayer : leaderboardsDisplayers) {
leaderboardsDisplayer.fillLeaderboards(leaderboards);
}
}
@Override
public void onFailure(Throwable t) {
reportError("Error trying to obtain list of leaderboards: "+ t.getMessage());
}
}));
}
@Override
public void updateLeaderboards(Iterable<StrippedLeaderboardDTO> updatedLeaderboards, LeaderboardsDisplayer origin) {
for (LeaderboardsDisplayer leaderboardsDisplayer : leaderboardsDisplayers) {
if (leaderboardsDisplayer != origin) {
leaderboardsDisplayer.fillLeaderboards(updatedLeaderboards);
}
}
}
@Override
public void fillLeaderboardGroups() {
sailingService.getLeaderboardGroups(false /*withGeoLocationData*/,
new MarkedAsyncCallback<List<LeaderboardGroupDTO>>(
new AsyncCallback<List<LeaderboardGroupDTO>>() {
@Override
public void onSuccess(List<LeaderboardGroupDTO> groups) {
for (LeaderboardGroupsDisplayer leaderboardGroupsDisplayer : leaderboardGroupsDisplayers) {
leaderboardGroupsDisplayer.fillLeaderboardGroups(groups);
}
}
@Override
public void onFailure(Throwable t) {
reportError("Error trying to obtain list of leaderboard groups: " + t.getMessage());
}
}));
}
@Override
public void updateLeaderboardGroups(Iterable<LeaderboardGroupDTO> updatedLeaderboardGroups,
LeaderboardGroupsDisplayer origin) {
for (LeaderboardGroupsDisplayer leaderboardGroupsDisplayer : leaderboardGroupsDisplayers) {
if (leaderboardGroupsDisplayer != origin) {
leaderboardGroupsDisplayer.fillLeaderboardGroups(updatedLeaderboardGroups);
}
}
}
@Override
public void fillRegattas() {
sailingService.getRegattas(new MarkedAsyncCallback<List<RegattaDTO>>(
new AsyncCallback<List<RegattaDTO>>() {
@Override
public void onSuccess(List<RegattaDTO> result) {
for (RegattasDisplayer regattaDisplayer : regattasDisplayers) {
regattaDisplayer.fillRegattas(result);
}
}
@Override
public void onFailure(Throwable caught) {
reportError("Remote Procedure Call getRegattas() - Failure");
}
}));
}
}
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.sap.sailing.domain.common.security.Permission;
import com.sap.sailing.domain.common.security.Roles;
import com.sap.sailing.domain.common.security.SailingPermissionsForRoleProvider;
import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsRefresher;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
import com.sap.sailing.gwt.ui.client.MediaService;
import com.sap.sailing.gwt.ui.client.MediaServiceAsync;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
import com.sap.sailing.gwt.ui.masterdataimport.MasterDataImportPanel;
import com.sap.sailing.gwt.ui.shared.BetterDateTimeBox;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sailing.gwt.ui.shared.SecurityStylesheetResources;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.gwt.adminconsole.AdminConsolePanel;
import com.sap.sse.gwt.adminconsole.DefaultRefreshableAdminConsolePanel;
import com.sap.sse.gwt.client.EntryPointHelper;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.controls.filestorage.FileStoragePanel;
import com.sap.sse.gwt.resources.Highcharts;
import com.sap.sse.security.shared.Role;
import com.sap.sse.security.ui.client.component.UserManagementPanel;
import com.sap.sse.security.ui.client.i18n.StringMessages;
public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements RegattaRefresher, LeaderboardsRefresher, LeaderboardGroupsRefresher {
private Set<RegattasDisplayer> regattasDisplayers;
private Set<LeaderboardsDisplayer> leaderboardsDisplayers;
private Set<LeaderboardGroupsDisplayer> leaderboardGroupsDisplayers;
private final MediaServiceAsync mediaService = GWT.create(MediaService.class);
@Override
protected void doOnModuleLoad() {
Highcharts.ensureInjectedWithMore();
super.doOnModuleLoad();
EntryPointHelper.registerASyncService((ServiceDefTarget) mediaService, RemoteServiceMappingConstants.mediaServiceRemotePath);
createUI();
}
private void createUI() {
AdminConsolePanel panel = new AdminConsolePanel(getUserService(), SailingPermissionsForRoleProvider.INSTANCE,
sailingService, getStringMessages().releaseNotes(), "/release_notes_admin.html", /* error reporter */ this, SecurityStylesheetResources.INSTANCE.css());
BetterDateTimeBox.initialize();
regattasDisplayers = new HashSet<>();
leaderboardsDisplayers = new HashSet<>();
leaderboardGroupsDisplayers = new HashSet<>();
final EventManagementPanel eventManagementPanel = new EventManagementPanel(sailingService, this, getStringMessages());
panel.addToVerticalTabPanel(new DefaultRefreshableAdminConsolePanel<EventManagementPanel>(eventManagementPanel) {
@Override
public void refreshAfterBecomingVisible() {
getWidget().fillEvents();
fillLeaderboardGroups();
}
}, getStringMessages().events(), Permission.MANAGE_EVENTS);
leaderboardGroupsDisplayers.add(eventManagementPanel);
RegattaManagementPanel regattaManagementPanel = new RegattaManagementPanel(
sailingService, this, getStringMessages(), this);
regattaManagementPanel.ensureDebugId("RegattaStructureManagement");
panel.addToVerticalTabPanel(new DefaultRefreshableAdminConsolePanel<RegattaManagementPanel>(regattaManagementPanel) {
@Override
public void refreshAfterBecomingVisible() {
fillRegattas();
}
}, getStringMessages().regattas(), Permission.MANAGE_REGATTAS);
regattasDisplayers.add(regattaManagementPanel);
/* LEADERBOARDS */
final TabLayoutPanel leaderboardTabPanel = panel.addVerticalTab(getStringMessages().leaderboards(), "LeaderboardPanel");
final LeaderboardConfigPanel leaderboardConfigPanel = new LeaderboardConfigPanel(sailingService, this, this,
getStringMessages(), /* showRaceDetails */true, this);
leaderboardConfigPanel.ensureDebugId("LeaderboardConfiguration");
panel.addToTabPanel(leaderboardTabPanel, new DefaultRefreshableAdminConsolePanel<LeaderboardConfigPanel>(leaderboardConfigPanel) {
@Override
public void refreshAfterBecomingVisible() {
fillLeaderboards();
}
}, getStringMessages().leaderboards(), Permission.MANAGE_LEADERBOARDS);
regattasDisplayers.add(leaderboardConfigPanel);
leaderboardsDisplayers.add(leaderboardConfigPanel);
final LeaderboardGroupConfigPanel leaderboardGroupConfigPanel = new LeaderboardGroupConfigPanel(sailingService,
this, this, this, this, getStringMessages());
leaderboardGroupConfigPanel.ensureDebugId("LeaderboardGroupConfiguration");
panel.addToTabPanel(leaderboardTabPanel, new DefaultRefreshableAdminConsolePanel<LeaderboardGroupConfigPanel>(leaderboardGroupConfigPanel) {
@Override
public void refreshAfterBecomingVisible() {
fillLeaderboards();
fillLeaderboardGroups();
}
}, getStringMessages().leaderboardGroups(), Permission.MANAGE_LEADERBOARD_GROUPS);
regattasDisplayers.add(leaderboardGroupConfigPanel);
leaderboardGroupsDisplayers.add(leaderboardGroupConfigPanel);
leaderboardsDisplayers.add(leaderboardGroupConfigPanel);
/* RACES */
final TabLayoutPanel racesTabPanel = panel.addVerticalTab(getStringMessages().trackedRaces(), "RacesPanel");
racesTabPanel.ensureDebugId("RacesPanel");
TrackedRacesManagementPanel trackedRacesManagementPanel = new TrackedRacesManagementPanel(sailingService, this,
this, getStringMessages());
trackedRacesManagementPanel.ensureDebugId("TrackedRacesManagement");
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<TrackedRacesManagementPanel>(trackedRacesManagementPanel),
getStringMessages().trackedRaces(), Permission.SHOW_TRACKED_RACES);
regattasDisplayers.add(trackedRacesManagementPanel);
final CompetitorPanel competitorPanel = new CompetitorPanel(sailingService, getStringMessages(), this);
competitorPanel.ensureDebugId("CompetitorPanel");
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<CompetitorPanel>(competitorPanel) {
@Override
public void refreshAfterBecomingVisible() {
getWidget().refreshCompetitorList();
}
}, getStringMessages().competitors(), Permission.MANAGE_ALL_COMPETITORS);
RaceCourseManagementPanel raceCourseManagementPanel = new RaceCourseManagementPanel(sailingService, this, this, getStringMessages());
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<RaceCourseManagementPanel>(raceCourseManagementPanel), getStringMessages().courseLayout(), Permission.MANAGE_COURSE_LAYOUT);
regattasDisplayers.add(raceCourseManagementPanel);
final AsyncActionsExecutor asyncActionsExecutor = new AsyncActionsExecutor();
WindPanel windPanel = new WindPanel(sailingService, asyncActionsExecutor, this, this, getStringMessages());
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<WindPanel>(windPanel), getStringMessages().wind(),
Permission.MANAGE_WIND);
regattasDisplayers.add(windPanel);
final MediaPanel mediaPanel = new MediaPanel(regattasDisplayers, sailingService, this, mediaService, this, getStringMessages());
panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel<MediaPanel>(mediaPanel) {
@Override
public void refreshAfterBecomingVisible() {
getWidget().onShow();
}
}, getStringMessages().mediaPanel(), Permission.MANAGE_MEDIA);
/* RACE COMMITTEE APP */
final TabLayoutPanel raceCommitteeTabPanel = panel.addVerticalTab(getStringMessages().raceCommitteeApp(), "RaceCommiteeAppPanel");
final DeviceConfigurationUserPanel deviceConfigurationUserPanel = new DeviceConfigurationUserPanel(sailingService,
getStringMessages(), this);
panel.addToTabPanel(raceCommitteeTabPanel, new DefaultRefreshableAdminConsolePanel<DeviceConfigurationUserPanel>(deviceConfigurationUserPanel),
getStringMessages().deviceConfiguration(), Permission.MANAGE_DEVICE_CONFIGURATION);
/* CONNECTORS */
final TabLayoutPanel connectorsTabPanel = panel.addVerticalTab(getStringMessages().connectors(), "TrackingProviderPanel");
TracTracEventManagementPanel tractracEventManagementPanel = new TracTracEventManagementPanel(sailingService,
this, this, getStringMessages());
tractracEventManagementPanel.ensureDebugId("TracTracEventManagement");
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<TracTracEventManagementPanel>(tractracEventManagementPanel),
getStringMessages().tracTracEvents(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(tractracEventManagementPanel);
SwissTimingReplayConnectorPanel swissTimingReplayConnectorPanel = new SwissTimingReplayConnectorPanel(
sailingService, this, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SwissTimingReplayConnectorPanel>(swissTimingReplayConnectorPanel),
getStringMessages().swissTimingArchiveConnector(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(swissTimingReplayConnectorPanel);
SwissTimingEventManagementPanel swisstimingEventManagementPanel = new SwissTimingEventManagementPanel(
sailingService, this, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SwissTimingEventManagementPanel>(swisstimingEventManagementPanel),
getStringMessages().swissTimingEvents(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(swisstimingEventManagementPanel);
final SmartphoneTrackingEventManagementPanel raceLogTrackingEventManagementPanel = new SmartphoneTrackingEventManagementPanel(
sailingService, this, this, this, getStringMessages());
raceLogTrackingEventManagementPanel.ensureDebugId("SmartphoneTrackingPanel");
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SmartphoneTrackingEventManagementPanel>(raceLogTrackingEventManagementPanel) {
@Override
public void refreshAfterBecomingVisible() {
fillLeaderboards();
}
}, getStringMessages().smartphoneTracking(), Permission.MANAGE_TRACKED_RACES);
regattasDisplayers.add(raceLogTrackingEventManagementPanel);
leaderboardsDisplayers.add(raceLogTrackingEventManagementPanel);
IgtimiAccountsPanel igtimiAccountsPanel = new IgtimiAccountsPanel(sailingService, this, getStringMessages());
igtimiAccountsPanel.ensureDebugId("IgtimiAccounts");
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<IgtimiAccountsPanel>(igtimiAccountsPanel),
getStringMessages().igtimiAccounts(), Permission.MANAGE_IGTIMI_ACCOUNTS);
ResultImportUrlsManagementPanel resultImportUrlsManagementPanel = new ResultImportUrlsManagementPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<ResultImportUrlsManagementPanel>(resultImportUrlsManagementPanel),
getStringMessages().resultImportUrls(), Permission.MANAGE_RESULT_IMPORT_URLS);
StructureImportManagementPanel structureImportUrlsManagementPanel = new StructureImportManagementPanel(sailingService, this, getStringMessages(), this, eventManagementPanel);
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<StructureImportManagementPanel>(structureImportUrlsManagementPanel),
getStringMessages().manage2Sail() + " " + getStringMessages().regattaStructureImport(), Permission.MANAGE_STRUCTURE_IMPORT_URLS);
/* ADVANCED */
final TabLayoutPanel advancedTabPanel = panel.addVerticalTab(getStringMessages().advanced(), "AdvancedPanel");
final ReplicationPanel replicationPanel = new ReplicationPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<ReplicationPanel>(replicationPanel) {
@Override
public void refreshAfterBecomingVisible() {
replicationPanel.updateReplicaList();
}
}, getStringMessages().replication(), Permission.MANAGE_REPLICATION);
final MasterDataImportPanel masterDataImportPanel = new MasterDataImportPanel(getStringMessages(), sailingService,
this, eventManagementPanel, this, this);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<MasterDataImportPanel>(masterDataImportPanel),
getStringMessages().masterDataImportPanel(), Permission.MANAGE_MASTERDATA_IMPORT);
RemoteServerInstancesManagementPanel remoteServerInstancesManagementPanel = new RemoteServerInstancesManagementPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<RemoteServerInstancesManagementPanel>(remoteServerInstancesManagementPanel),
getStringMessages().remoteServerInstances(), Permission.MANAGE_SAILING_SERVER_INSTANCES);
LocalServerManagementPanel localServerInstancesManagementPanel = new LocalServerManagementPanel(sailingService, this, getStringMessages());
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<LocalServerManagementPanel>(localServerInstancesManagementPanel),
getStringMessages().localServer(), Permission.MANAGE_LOCAL_SERVER_INSTANCE);
final UserManagementPanel userManagementPanel = new UserManagementPanel(getUserService(), StringMessages.INSTANCE,
SailingPermissionsForRoleProvider.INSTANCE, Arrays.<Role>asList(Roles.values()), Arrays.<com.sap.sse.security.shared.Permission>asList(Permission.values()));
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<UserManagementPanel>(userManagementPanel),
getStringMessages().userManagement(), Permission.MANAGE_USERS);
final FileStoragePanel fileStoragePanel = new FileStoragePanel(sailingService, this);
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<FileStoragePanel>(fileStoragePanel),
getStringMessages().fileStorage(), Permission.MANAGE_FILE_STORAGE);
panel.initUI();
fillRegattas();
fillLeaderboardGroups();
fillLeaderboards();
RootLayoutPanel rootPanel = RootLayoutPanel.get();
rootPanel.add(panel);
}
@Override
public void fillLeaderboards() {
sailingService.getLeaderboards(new MarkedAsyncCallback<List<StrippedLeaderboardDTO>>(
new AsyncCallback<List<StrippedLeaderboardDTO>>() {
@Override
public void onSuccess(List<StrippedLeaderboardDTO> leaderboards) {
for (LeaderboardsDisplayer leaderboardsDisplayer : leaderboardsDisplayers) {
leaderboardsDisplayer.fillLeaderboards(leaderboards);
}
}
@Override
public void onFailure(Throwable t) {
reportError("Error trying to obtain list of leaderboards: "+ t.getMessage());
}
}));
}
@Override
public void updateLeaderboards(Iterable<StrippedLeaderboardDTO> updatedLeaderboards, LeaderboardsDisplayer origin) {
for (LeaderboardsDisplayer leaderboardsDisplayer : leaderboardsDisplayers) {
if (leaderboardsDisplayer != origin) {
leaderboardsDisplayer.fillLeaderboards(updatedLeaderboards);
}
}
}
@Override
public void fillLeaderboardGroups() {
sailingService.getLeaderboardGroups(false /*withGeoLocationData*/,
new MarkedAsyncCallback<List<LeaderboardGroupDTO>>(
new AsyncCallback<List<LeaderboardGroupDTO>>() {
@Override
public void onSuccess(List<LeaderboardGroupDTO> groups) {
for (LeaderboardGroupsDisplayer leaderboardGroupsDisplayer : leaderboardGroupsDisplayers) {
leaderboardGroupsDisplayer.fillLeaderboardGroups(groups);
}
}
@Override
public void onFailure(Throwable t) {
reportError("Error trying to obtain list of leaderboard groups: " + t.getMessage());
}
}));
}
@Override
public void updateLeaderboardGroups(Iterable<LeaderboardGroupDTO> updatedLeaderboardGroups,
LeaderboardGroupsDisplayer origin) {
for (LeaderboardGroupsDisplayer leaderboardGroupsDisplayer : leaderboardGroupsDisplayers) {
if (leaderboardGroupsDisplayer != origin) {
leaderboardGroupsDisplayer.fillLeaderboardGroups(updatedLeaderboardGroups);
}
}
}
@Override
public void fillRegattas() {
sailingService.getRegattas(new MarkedAsyncCallback<List<RegattaDTO>>(
new AsyncCallback<List<RegattaDTO>>() {
@Override
public void onSuccess(List<RegattaDTO> result) {
for (RegattasDisplayer regattaDisplayer : regattasDisplayers) {
regattaDisplayer.fillRegattas(result);
}
}
@Override
public void onFailure(Throwable caught) {
reportError("Remote Procedure Call getRegattas() - Failure");
}
}));
}
}
@@ -29,7 +29,9 @@ import com.sap.sse.gwt.client.controls.listedit.StringListEditorComposite;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.security.shared.DefaultPermissions;
import com.sap.sse.security.shared.DefaultRoles;
import com.sap.sse.security.shared.Permission;
import com.sap.sse.security.shared.PermissionsForRoleProvider;
import com.sap.sse.security.shared.Role;
import com.sap.sse.security.shared.UserManagementException;
import com.sap.sse.security.ui.client.IconResources;
import com.sap.sse.security.ui.client.UserChangeEventHandler;
@@ -58,7 +60,9 @@ public class UserDetailsView extends FlowPanel {
private final PermissionsForRoleProvider permissionForRoleProvider;
public UserDetailsView(final UserService userService, UserDTO user, final StringMessages stringMessages, final UserListDataProvider userListDataProvider, PermissionsForRoleProvider permissionsForRoleProvider) {
public UserDetailsView(final UserService userService, UserDTO user, final StringMessages stringMessages,
final UserListDataProvider userListDataProvider, PermissionsForRoleProvider permissionsForRoleProvider,
Iterable<Role> additionalRoles, Iterable<Permission> additionalPermissions) {
final UserManagementServiceAsync userManagementService = userService.getUserManagementService();
this.stringMessages = stringMessages;
this.permissionForRoleProvider = permissionsForRoleProvider;
@@ -68,10 +72,16 @@ public class UserDetailsView extends FlowPanel {
for (DefaultRoles defaultRole : DefaultRoles.values()) {
defaultRoleNames.add(defaultRole.getRolename());
}
for (Role role : additionalRoles) {
defaultRoleNames.add(role.getRolename());
}
List<String> defaultPermissionNames = new ArrayList<>();
for (DefaultPermissions defaultPermission : DefaultPermissions.values()) {
defaultPermissionNames.add(defaultPermission.getStringPermission());
}
for (Permission permission : additionalPermissions) {
defaultPermissionNames.add(permission.getStringPermission());
}
rolesEditor = new StringListEditorComposite(user==null?Collections.<String>emptySet():user.getRoles(), stringMessages, com.sap.sse.gwt.client.IconResources.INSTANCE.removeIcon(), defaultRoleNames,
stringMessages.enterRoleName());
rolesEditor.addValueChangeHandler(new ValueChangeHandler<Iterable<String>>() {
@@ -1,6 +1,7 @@
package com.sap.sse.security.ui.client.component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.google.gwt.event.dom.client.ChangeEvent;
@@ -23,7 +24,9 @@ import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sse.security.shared.Permission;
import com.sap.sse.security.shared.PermissionsForRoleProvider;
import com.sap.sse.security.shared.Role;
import com.sap.sse.security.ui.client.UserChangeEventHandler;
import com.sap.sse.security.ui.client.UserManagementServiceAsync;
import com.sap.sse.security.ui.client.UserService;
@@ -42,6 +45,11 @@ public class UserManagementPanel extends DockPanel {
private UserListDataProvider userListDataProvider;
public UserManagementPanel(final UserService userService, final StringMessages stringMessages, PermissionsForRoleProvider permissionsForRoleProvider) {
this(userService, stringMessages, permissionsForRoleProvider, Collections.<Role>emptySet(), Collections.<Permission>emptySet());
}
public UserManagementPanel(final UserService userService, final StringMessages stringMessages, PermissionsForRoleProvider permissionsForRoleProvider,
Iterable<Role> additionalRoles, Iterable<Permission> additionalPermissions) {
final UserManagementServiceAsync userManagementService = userService.getUserManagementService();
VerticalPanel west = new VerticalPanel();
HorizontalPanel buttonPanel = new HorizontalPanel();
@@ -89,7 +97,9 @@ public class UserManagementPanel extends DockPanel {
userList.setSelectionModel(singleSelectionModel);
TextBox filterBox = new TextBox();
userListDataProvider = new UserListDataProvider(userManagementService, filterBox);
final UserDetailsView userDetailsView = new UserDetailsView(userService, singleSelectionModel.getSelectedObject(), stringMessages, userListDataProvider, permissionsForRoleProvider);
final UserDetailsView userDetailsView = new UserDetailsView(userService,
singleSelectionModel.getSelectedObject(), stringMessages, userListDataProvider,
permissionsForRoleProvider, additionalRoles, additionalPermissions);
add(userDetailsView, DockPanel.CENTER);
userDetailsView.addUserChangeEventHandler(new UserChangeEventHandler() {
@Override