From 2673b5fb0b59f665b5a225e4fb88e07cfd0b712e Mon Sep 17 00:00:00 2001 From: Sam Ottenhoff Date: Tue, 28 May 2024 13:04:26 -0400 Subject: [PATCH] SAK-50124 SiteStats wicket9 upgrade (#12606) --- sitestats/pom.xml | 7 +- sitestats/sitestats-tool/pom.xml | 6 +- .../wicket/SiteStatsAdminApplication.java | 4 - .../tool/wicket/SiteStatsApplication.java | 57 +--- .../wicket/components/AjaxLazyLoadImage.java | 5 +- .../tool/wicket/components/ChartImage.java | 4 +- .../wicket/components/EventRegistryTree.java | 11 +- .../wicket/components/FileSelectorPanel.java | 44 +-- .../tool/wicket/components/LastJobRun.java | 3 +- .../components/SakaiNavigatorLabel.java | 11 +- .../components/SakaiNavigatorSearch.java | 7 +- .../components/SakaiPagingNavigator.java | 62 ++-- .../SakaiStringResourceChoiceRenderer.java | 4 +- ...InfinitePagingDataTableHeadersToolbar.java | 2 +- ...finitePagingNavigationIncrementButton.java | 3 +- ...initePagingDataTableNavigationToolbar.java | 9 +- .../SakaiInfinitePagingNoRecordsToolbar.java | 13 +- .../EventRefDetailsButtonPanel.java | 2 +- .../UserTrackingResultsPanel.java | 4 +- .../tool/wicket/pages/AdminPage.java | 21 +- .../sitestats/tool/wicket/pages/BasePage.java | 14 +- .../tool/wicket/pages/MaximizedImagePage.java | 5 +- .../tool/wicket/pages/OverviewPage.java | 6 +- .../tool/wicket/pages/ReportsEditPage.java | 290 ++++++++++-------- .../tool/wicket/pages/ReportsPage.java | 9 +- .../tool/wicket/pages/UserActivityPage.java | 8 +- .../tool/wicket/widget/WidgetTabTemplate.java | 45 ++- .../tool/wicket/widget/WidgetTabs.java | 33 +- .../src/webapp/html/pages/BasePage.html | 4 +- 29 files changed, 344 insertions(+), 349 deletions(-) diff --git a/sitestats/pom.xml b/sitestats/pom.xml index c487e25f6018..40446f7194fe 100644 --- a/sitestats/pom.xml +++ b/sitestats/pom.xml @@ -20,7 +20,7 @@ 0.8 1.0 1.5.3 - 6.30.0 + 9.17.0 @@ -127,11 +127,6 @@ wicket-datetime ${sst.wicket.version} - - org.apache.wicket - wicket-devutils - ${sst.wicket.version} - org.jfree diff --git a/sitestats/sitestats-tool/pom.xml b/sitestats/sitestats-tool/pom.xml index 9caf242e61b0..2dbc61db2cc0 100644 --- a/sitestats/sitestats-tool/pom.xml +++ b/sitestats/sitestats-tool/pom.xml @@ -62,7 +62,7 @@ org.sakaiproject.wicket - wicket-tool-6 + wicket-tool-9 @@ -89,10 +89,6 @@ org.apache.wicket wicket-spring - - org.apache.wicket - wicket-devutils - diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/SiteStatsAdminApplication.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/SiteStatsAdminApplication.java index 06a0e6ec8c84..812964a26b56 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/SiteStatsAdminApplication.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/SiteStatsAdminApplication.java @@ -21,7 +21,6 @@ import org.apache.wicket.core.request.mapper.CryptoMapper; import org.apache.wicket.core.util.crypt.KeyInSessionSunJceCryptFactory; import org.apache.wicket.request.IRequestMapper; -import org.apache.wicket.settings.IExceptionSettings; import org.sakaiproject.sitestats.tool.wicket.pages.AdminPage; @@ -38,9 +37,6 @@ protected void init() { getApplicationSettings().setAccessDeniedPage(AdminPage.class); getApplicationSettings().setInternalErrorPage(AdminPage.class); - // show internal error page rather than default developer page - getExceptionSettings().setUnexpectedExceptionDisplay(IExceptionSettings.SHOW_INTERNAL_ERROR_PAGE); - // Encrypt URLs. This immediately sets up a session (note that things like CSS now becomes bound to the session) getSecuritySettings().setCryptFactory(new KeyInSessionSunJceCryptFactory()); // Different key per user final IRequestMapper cryptoMapper = new CryptoMapper(getRootRequestMapper(), this); diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/SiteStatsApplication.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/SiteStatsApplication.java index df641cce77dc..6367ae520053 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/SiteStatsApplication.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/SiteStatsApplication.java @@ -20,26 +20,21 @@ import java.util.Locale; +import lombok.Getter; +import lombok.Setter; import org.apache.wicket.Component; import org.apache.wicket.core.request.mapper.CryptoMapper; import org.apache.wicket.core.util.crypt.KeyInSessionSunJceCryptFactory; import org.apache.wicket.request.IRequestHandler; +import org.apache.wicket.request.cycle.IRequestCycleListener; import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.protocol.http.WebApplication; -import org.apache.wicket.request.cycle.AbstractRequestCycleListener; import org.apache.wicket.resource.loader.IStringResourceLoader; -import org.apache.wicket.settings.IExceptionSettings; import org.apache.wicket.spring.injection.annot.SpringComponentInjector; import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.core.util.resource.locator.ResourceStreamLocator; import org.apache.wicket.core.util.file.WebApplicationPath; -import org.apache.wicket.devutils.debugbar.DebugBar; -import org.apache.wicket.devutils.debugbar.InspectorDebugPanel; -import org.apache.wicket.devutils.debugbar.PageSizeDebugPanel; -import org.apache.wicket.devutils.debugbar.SessionSizeDebugPanel; -import org.apache.wicket.devutils.debugbar.VersionDebugContributor; import org.apache.wicket.request.IRequestMapper; -import org.sakaiproject.component.cover.ServerConfigurationService; import org.sakaiproject.sitestats.tool.facade.SakaiFacade; import org.sakaiproject.sitestats.tool.wicket.components.JavaScriptToBucketResponseDecorator; import org.sakaiproject.sitestats.tool.wicket.pages.OverviewPage; @@ -49,11 +44,11 @@ import org.sakaiproject.util.ResourceLoader; +@Setter +@Getter public class SiteStatsApplication extends WebApplication { private static final ResourceLoader msgs = new ResourceLoader("Messages"); private static final ResourceLoader evnts = new ResourceLoader("Events"); - - private boolean debug = false; private transient SakaiFacade facade; @@ -63,15 +58,15 @@ protected void init() { // Configure general wicket application settings getComponentInstantiationListeners().add(new SpringComponentInjector(this)); + getCspSettings().blocking().disabled(); getResourceSettings().setThrowExceptionOnMissingResource(false); getMarkupSettings().setStripWicketTags(true); getResourceSettings().getStringResourceLoaders().add(new SiteStatsStringResourceLoader()); getResourceSettings().getResourceFinders().add(new WebApplicationPath(getServletContext(), "html")); getResourceSettings().setResourceStreamLocator(new SiteStatsResourceStreamLocator()); - getDebugSettings().setAjaxDebugModeEnabled(debug); // configure bottom page script loading - setHeaderResponseDecorator(new JavaScriptToBucketResponseDecorator("bottom-script-container")); + //setHeaderResponseDecorator(new JavaScriptToBucketResponseDecorator("bottom-script-container")); // Mount pages mountPage("/home", OverviewPage.class); @@ -83,29 +78,9 @@ protected void init() { getApplicationSettings().setPageExpiredErrorPage(OverviewPage.class); getApplicationSettings().setAccessDeniedPage(OverviewPage.class); - // Debugging - debug = ServerConfigurationService.getBoolean("sitestats.debug", false); - if(debug) { - getDebugSettings().setComponentUseCheck(true); - getDebugSettings().setAjaxDebugModeEnabled(true); - getDebugSettings().setLinePreciseReportingOnAddComponentEnabled(true); - getDebugSettings().setLinePreciseReportingOnNewComponentEnabled(true); - getDebugSettings().setOutputComponentPath(true); - getDebugSettings().setOutputMarkupContainerClassName(true); - getDebugSettings().setDevelopmentUtilitiesEnabled(true); - getMarkupSettings().setStripWicketTags(false); - getExceptionSettings().setUnexpectedExceptionDisplay(IExceptionSettings.SHOW_EXCEPTION_PAGE); - // register standard debug contributors so that just setting the sitestats.debug property is enough to turn these on - // otherwise, you have to turn wicket development mode on to get this populated due to the order methods are called - DebugBar.registerContributor(VersionDebugContributor.DEBUG_BAR_CONTRIB, this); - DebugBar.registerContributor(InspectorDebugPanel.DEBUG_BAR_CONTRIB, this); - DebugBar.registerContributor(SessionSizeDebugPanel.DEBUG_BAR_CONTRIB, this); - DebugBar.registerContributor(PageSizeDebugPanel.DEBUG_BAR_CONTRIB, this); - } - else { // Throw RuntimeDeceptions so they are caught by the Sakai ErrorReportHandler - getRequestCycleListeners().add(new AbstractRequestCycleListener() + getRequestCycleListeners().add(new IRequestCycleListener() { @Override public IRequestHandler onException(RequestCycle cycle, Exception ex) @@ -120,24 +95,16 @@ public IRequestHandler onException(RequestCycle cycle, Exception ex) } // Encrypt URLs. This immediately sets up a session (note that things like CSS now becomes bound to the session) - getSecuritySettings().setCryptFactory(new KeyInSessionSunJceCryptFactory()); // Different key per user - final IRequestMapper cryptoMapper = new CryptoMapper(getRootRequestMapper(), this); - setRootRequestMapper(cryptoMapper); + //getSecuritySettings().setCryptFactory(new KeyInSessionSunJceCryptFactory()); // Different key per user + //final IRequestMapper cryptoMapper = new CryptoMapper(getRootRequestMapper(), this); + //setRootRequestMapper(cryptoMapper); } public Class getHomePage() { return OverviewPage.class; } - public SakaiFacade getFacade() { - return facade; - } - - public void setFacade(final SakaiFacade facade) { - this.facade = facade; - } - - /** + /** * Custom bundle loader to pickup bundles from sitestats-bundles/ * @author Nuno Fernandes */ diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/AjaxLazyLoadImage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/AjaxLazyLoadImage.java index e4006a67d09e..36261c62b7d1 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/AjaxLazyLoadImage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/AjaxLazyLoadImage.java @@ -18,6 +18,8 @@ */ package org.sakaiproject.sitestats.tool.wicket.components; +import java.time.Duration; + import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; import org.apache.wicket.Page; @@ -43,7 +45,6 @@ import org.apache.wicket.request.resource.AbstractResource; import org.apache.wicket.request.resource.DynamicImageResource; import org.apache.wicket.request.resource.IResource; -import org.apache.wicket.util.time.Duration; import org.sakaiproject.sitestats.tool.wicket.pages.MaximizedImagePage; @@ -247,7 +248,7 @@ protected void configureResponse(AbstractResource.ResourceResponse response, IRe { super.configureResponse(response, attributes); - response.setCacheDuration(Duration.NONE); + response.setCacheDuration(Duration.ZERO); response.setCacheScope(CacheScope.PRIVATE); } }; diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/ChartImage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/ChartImage.java index 27e5343c07ca..2531c23ccd7c 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/ChartImage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/ChartImage.java @@ -19,6 +19,7 @@ package org.sakaiproject.sitestats.tool.wicket.components; import java.awt.image.BufferedImage; +import java.time.Duration; import lombok.extern.slf4j.Slf4j; import org.apache.wicket.request.resource.IResource; @@ -27,7 +28,6 @@ import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.request.http.WebResponse; import org.apache.wicket.request.resource.AbstractResource; -import org.apache.wicket.util.time.Duration; /** @@ -75,7 +75,7 @@ protected void configureResponse(AbstractResource.ResourceResponse response, IRe { super.configureResponse(response, attributes); - response.setCacheDuration(Duration.NONE); + response.setCacheDuration(Duration.ZERO); response.setCacheScope(WebResponse.CacheScope.PRIVATE); } }; diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/EventRegistryTree.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/EventRegistryTree.java index b201a59286db..6980150f8337 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/EventRegistryTree.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/EventRegistryTree.java @@ -21,6 +21,7 @@ import java.util.List; import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.CheckBox; @@ -58,7 +59,7 @@ public EventRegistryTree(String id, List eventRegistry, String toolId) { ul.add(new AttributeModifier("style", new Model("padding: 0 0 0 20px; display: none;"))); ul.add(new AttributeModifier("class", new Model("events"))); }else{ - ul.add(new AttributeModifier("style", new Model("padding: 0px;"))); + ul.add(new AttributeModifier("style", new Model("padding: 0;"))); ul.add(new AttributeModifier("class", new Model("tools"))); } add(ul); @@ -67,10 +68,10 @@ public EventRegistryTree(String id, List eventRegistry, String toolId) { } @Override - public void renderHead(HtmlHeaderContainer container) { - container.getHeaderResponse().render(JavaScriptHeaderItem.forUrl(StatsManager.SITESTATS_WEBAPP+"/script/prefs.js")); - container.getHeaderResponse().render(OnDomReadyHeaderItem.forScript("updateAllToolsSelection()")); - super.renderHead(container); + public void renderHead(IHeaderResponse response) { + response.render(JavaScriptHeaderItem.forUrl(StatsManager.SITESTATS_WEBAPP+"/script/prefs.js")); + response.render(OnDomReadyHeaderItem.forScript("updateAllToolsSelection()")); + super.renderHead(response); } public List getEventRegistry() { diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/FileSelectorPanel.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/FileSelectorPanel.java index 9eb11e63e45d..1313dccb51e6 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/FileSelectorPanel.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/FileSelectorPanel.java @@ -22,9 +22,11 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.request.Request; import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior; @@ -133,9 +135,7 @@ public void setSelectedFiles(String filesEncoded) { List files = new ArrayList(); if(filesEncoded != null) { String[] t = filesEncoded.split("\\|\\|\\|"); - for(int i=0; i getResources(String dir) throws IdUnusedException, TypeException, PermissionException { @@ -222,18 +217,13 @@ protected void respond(AjaxRequestTarget target) { RequestCycle.get().scheduleRequestHandlerAfterCurrent(new EmptyRequestHandler()); WebResponse response = (WebResponse) getResponse(); response.setContentType("text/html;charset="+enc); - OutputStream out = getResponse().getOutputStream(); - try{ + try (OutputStream out = getResponse().getOutputStream()) { out.write("
    ".getBytes(enc)); - boolean expandToSelection = currentDir.equals(BASE_DIR) && getSelectedFilesId() != null && getSelectedFilesId().size() > 0; - getResourcesMarkup(currentDir, out, expandToSelection, enc); + boolean expandToSelection = currentDir.equals(BASE_DIR) && getSelectedFilesId() != null && !getSelectedFilesId().isEmpty(); + getResourcesMarkup(currentDir, out, expandToSelection, enc); out.write("
".getBytes(enc)); - }finally{ - out.close(); } - }catch(RuntimeException e){ - // ignore - do nothing - }catch(Exception e){ + } catch(Exception e){ // ignore - do nothing } } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/LastJobRun.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/LastJobRun.java index ad93c9cd618d..65eec66f820b 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/LastJobRun.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/LastJobRun.java @@ -86,8 +86,7 @@ private void renderBody() { String serverDateStr = timeServ.shortLocalizedTimestamp(d.toInstant(), TimeZone.getDefault(), getSession().getLocale()); lastJobRunDate.setDefaultModel(new Model(dStr)); String localSakaiName = Locator.getFacade().getStatsManager().getLocalSakaiName(); - StringResourceModel model = new StringResourceModel("lastJobRun_server_time", getPage(), null, - new Object[] {localSakaiName, serverDateStr}); + StringResourceModel model = new StringResourceModel("lastJobRun_server_time").setParameters(localSakaiName, serverDateStr); lastJobRunServerDate.setDefaultModel(model); }catch(Exception e){ lastJobRunDate.setDefaultModel(new Model()); diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiNavigatorLabel.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiNavigatorLabel.java index f09f71df4c33..a54d7d991b18 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiNavigatorLabel.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiNavigatorLabel.java @@ -110,17 +110,12 @@ private SakaiNavigatorLabel(final String id, final PageableComponent table) { super(id); Model model = new Model(new LabelModelObject(table)); setDefaultModel( - new StringResourceModel( - "pager_textStatus", - this, - model, - "Viewing {0} - {1} of {2} {3}", - new Object[] { + new StringResourceModel("pager_textStatus").setParameters( new PropertyModel(model, "from"), new PropertyModel(model, "to"), new PropertyModel(model, "of"), - new ResourceModel("pager_textItem"), - }) + new ResourceModel("pager_textItem") + ) ); } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiNavigatorSearch.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiNavigatorSearch.java index 6fd844b1f10a..d2ddadf79989 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiNavigatorSearch.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiNavigatorSearch.java @@ -18,6 +18,7 @@ */ package org.sakaiproject.sitestats.tool.wicket.components; +import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; @@ -75,9 +76,9 @@ public void onSubmit() { } @Override - public void renderHead(HtmlHeaderContainer container) { - container.getHeaderResponse().render(JavaScriptHeaderItem.forUrl(BasePage.JQUERYSCRIPT)); - super.renderHead(container); + public void renderHead(IHeaderResponse response) { + response.render(JavaScriptHeaderItem.forUrl(BasePage.JQUERYSCRIPT)); + super.renderHead(response); } public void setSearchKeyword(String keyword) { diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiPagingNavigator.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiPagingNavigator.java index 648f94cf4feb..d1248899c1ba 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiPagingNavigator.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/SakaiPagingNavigator.java @@ -18,7 +18,7 @@ */ package org.sakaiproject.sitestats.tool.wicket.components; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigationIncrementLink; @@ -26,12 +26,14 @@ import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator; import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; import org.apache.wicket.markup.html.form.DropDownChoice; +import org.apache.wicket.markup.html.form.FormComponentUpdatingBehavior; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.navigation.paging.IPageable; import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider; import org.apache.wicket.markup.html.navigation.paging.PagingNavigation; import org.apache.wicket.model.CompoundPropertyModel; +import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; public class SakaiPagingNavigator extends AjaxPagingNavigator { @@ -116,51 +118,51 @@ protected Link newPagingNavigationIncrementLink(String id, IPageable pageable, i * the page to jump to * @return the pagenumber link */ - protected Link newPagingNavigationLink(String id, IPageable pageable, int pageNumber) - { + protected Link newPagingNavigationLink(String id, IPageable pageable, int pageNumber) { return new AjaxPagingNavigationLink(id, pageable, pageNumber); } - protected DropDownChoice newRowNumberSelector(final IPageable pageable) - { - List choices = new ArrayList(); - choices.add("5"); - choices.add("10"); - choices.add("20"); - choices.add("50"); - choices.add("100"); - choices.add("200"); - DropDownChoice rowNumberSelector = new DropDownChoice("rowNumberSelector", choices, new IChoiceRenderer() { - public Object getDisplayValue(Object object) { - return new StringResourceModel( - "pager_textPageSize", - getParent(), - null, - new Object[] {object}).getString(); + protected DropDownChoice newRowNumberSelector(final IPageable pageable) { + List choices = Arrays.asList("5", "10", "20", "50", "100", "200"); + + DropDownChoice rowNumberSelector = new DropDownChoice<>("rowNumberSelector", choices, new IChoiceRenderer<>() { + private static final long serialVersionUID = 1L; + + @Override + public String getDisplayValue(String object) { + return new StringResourceModel("pager_textPageSize") + .setParameters(object) + .getString(); } - public String getIdValue(Object object, int index) { - return (String) object; + + @Override + public String getIdValue(String object, int index) { + return object; } - }) { + @Override - protected boolean wantOnSelectionChangedNotifications() { - return true; + public String getObject(String id, IModel choices) { + return id; } + }); + + rowNumberSelector.add(new FormComponentUpdatingBehavior() { + private static final long serialVersionUID = 1L; @Override - protected void onSelectionChanged(Object newSelection) { + protected void onUpdate() { // Tell the PageableListView which page to print next pageable.setCurrentPage(0); - // We do need to redirect, else refresh refresh will go to next, next - //setRedirect(true); + // We do need to redirect, else refresh will go to next, next + // setRedirect(true); // This line is commented out because it may not be needed // Return the current page. setResponsePage(getPage()); - super.onSelectionChanged(newSelection); + super.onUpdate(); } - - }; + }); + return rowNumberSelector; } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/dropdown/SakaiStringResourceChoiceRenderer.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/dropdown/SakaiStringResourceChoiceRenderer.java index 78932b58a331..abdf8f468954 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/dropdown/SakaiStringResourceChoiceRenderer.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/dropdown/SakaiStringResourceChoiceRenderer.java @@ -43,7 +43,9 @@ public SakaiStringResourceChoiceRenderer(String msgKey, Component component) @Override public Object getDisplayValue(String object) { - return new StringResourceModel(msgKey, component, null, new Object[] { object }).getString(); + return new StringResourceModel(msgKey, component) + .setParameters(object) + .getString(); } @Override diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/InfinitePagingDataTableHeadersToolbar.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/InfinitePagingDataTableHeadersToolbar.java index 562b5da39b27..b830a7056bce 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/InfinitePagingDataTableHeadersToolbar.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/InfinitePagingDataTableHeadersToolbar.java @@ -126,7 +126,7 @@ public void renderHead(IHeaderResponse response) protected WebMarkupContainer newSortableHeader(final String borderId, final S property, final ISortStateLocator locator) { - return new AjaxFallbackOrderByBorder(borderId, property, locator, getAjaxCallListener()) + return new AjaxFallbackOrderByBorder(borderId, property, locator) { private static final long serialVersionUID = 1L; diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/InfinitePagingNavigationIncrementButton.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/InfinitePagingNavigationIncrementButton.java index fdadbd9c4252..0d74f7e81536 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/InfinitePagingNavigationIncrementButton.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/InfinitePagingNavigationIncrementButton.java @@ -39,7 +39,7 @@ public InfinitePagingNavigationIncrementButton(final String id, final InfinitePa } @Override - public void onSubmit(AjaxRequestTarget target, Form form) + public void onSubmit(AjaxRequestTarget target) { if (increment) { @@ -59,6 +59,7 @@ public void onSubmit(AjaxRequestTarget target, Form form) @Override public void onConfigure() { + super.onConfigure(); setEnabled(increment && table.hasNextPage() || !increment && table.hasPrevPage()); } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/SakaiInfinitePagingDataTableNavigationToolbar.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/SakaiInfinitePagingDataTableNavigationToolbar.java index 152396faa089..63082dbcdbe1 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/SakaiInfinitePagingDataTableNavigationToolbar.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/SakaiInfinitePagingDataTableNavigationToolbar.java @@ -19,7 +19,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.StringResourceModel; @@ -43,7 +43,7 @@ public void onInitialize() super.onInitialize(); WebMarkupContainer span = new WebMarkupContainer("span"); add(span); - span.add(AttributeModifier.replace("colspan", new AbstractReadOnlyModel() + span.add(AttributeModifier.replace("colspan", new IModel() { @Override public String getObject() @@ -70,6 +70,7 @@ protected Label newNavigatorLabel(final String id, final InfinitePagingDataTable @Override public void onConfigure() { + super.onConfigure(); long startRecord = table.getOffset(); long rowCount = table.getRowCount(); long endRecord = startRecord + rowCount; @@ -78,7 +79,9 @@ public void onConfigure() ++startRecord; } - setDefaultModel(new StringResourceModel("paging_nav_label", table, new Model<>(), new ResourceModel("pager_textItem"), startRecord, endRecord)); + setDefaultModel(new StringResourceModel("paging_nav_label", table) + .setParameters(new ResourceModel("pager_textItem").getObject(), startRecord, endRecord)); + } }; } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/SakaiInfinitePagingNoRecordsToolbar.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/SakaiInfinitePagingNoRecordsToolbar.java index f97d178a3630..9bb562cae904 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/SakaiInfinitePagingNoRecordsToolbar.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/paging/infinite/SakaiInfinitePagingNoRecordsToolbar.java @@ -18,7 +18,8 @@ import org.apache.wicket.AttributeModifier; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; /** @@ -36,14 +37,8 @@ public SakaiInfinitePagingNoRecordsToolbar(final InfinitePagingDataTable t WebMarkupContainer td = new WebMarkupContainer("td"); add(td); - td.add(AttributeModifier.replace("colspan", new AbstractReadOnlyModel() - { - @Override - public String getObject() - { - return String.valueOf(table.getColumns().size()); - } - })); + IModel colspanModel = Model.of(String.valueOf(table.getColumns().size())); + td.add(AttributeModifier.replace("colspan", colspanModel)); td.add(new Label("msg", new ResourceModel("no_data"))); } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/useractivity/EventRefDetailsButtonPanel.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/useractivity/EventRefDetailsButtonPanel.java index 8f3caadb87ef..86157e18efc3 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/useractivity/EventRefDetailsButtonPanel.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/useractivity/EventRefDetailsButtonPanel.java @@ -60,7 +60,7 @@ protected void onInitialize() SakaiAjaxButton button = new SakaiAjaxButton("moreDetailsButton", form) { @Override - public void onSubmit(AjaxRequestTarget target, Form form) + public void onSubmit(AjaxRequestTarget target) { if (target != null) { diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/useractivity/UserTrackingResultsPanel.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/useractivity/UserTrackingResultsPanel.java index 9d7e4d92df55..3fe3bcb86b78 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/useractivity/UserTrackingResultsPanel.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/components/useractivity/UserTrackingResultsPanel.java @@ -88,7 +88,7 @@ private List getTableColumns() cols.add(new SakaiResponsivePropertyColumn(new ResourceModel("de_resultsTable_timestamp"), "eventDate", "eventDate") { @Override - protected IModel createLabelModel(IModel rowModel) + public IModel getDataModel(IModel rowModel) { // Get the event date DetailedEvent event = (DetailedEvent) rowModel.getObject(); @@ -106,7 +106,7 @@ public boolean isSortable() } @Override - protected IModel createLabelModel(IModel rowModel) + public IModel getDataModel(IModel rowModel) { // Get the event ID DetailedEvent event = (DetailedEvent) rowModel.getObject(); diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/AdminPage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/AdminPage.java index 66e797dea22b..a61f55827828 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/AdminPage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/AdminPage.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.List; +import org.apache.wicket.markup.html.form.FormComponentUpdatingBehavior; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; @@ -81,10 +82,9 @@ private void renderBody() { List choices = new ArrayList(); choices.add(StatisticableSitesDataProvider.SITE_TYPE_ALL); List types = Locator.getFacade().getSiteService().getSiteTypes(); - for(String t : types) { - choices.add(t); - } + choices.addAll(types); DropDownChoice siteTypes = new DropDownChoice("siteTypes", choices, new IChoiceRenderer() { + @Override public Object getDisplayValue(Object object) { String value = (String) object; if(value != null && value.equals(StatisticableSitesDataProvider.SITE_TYPE_ALL)) { @@ -93,23 +93,22 @@ public Object getDisplayValue(Object object) { return object; } } + + @Override public String getIdValue(Object object, int index) { return (String) object; } - }) { - @Override - protected boolean wantOnSelectionChangedNotifications() { - return true; - } + }); + siteTypes.add(new FormComponentUpdatingBehavior() { @Override - protected void onSelectionChanged(Object newSelection) { + protected void onUpdate() { setResponsePage(getPage()); - super.onSelectionChanged(newSelection); + super.onUpdate(); } - }; + }); siteTypes.setModel(new PropertyModel(dataProvider, "siteType")); add(siteTypes); diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/BasePage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/BasePage.java index 111e01158e46..e13a9d1cf0c9 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/BasePage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/BasePage.java @@ -22,11 +22,9 @@ import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; -import org.apache.wicket.devutils.debugbar.DebugBar; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.head.StringHeaderItem; -import org.apache.wicket.markup.head.filter.HeaderResponseContainer; import org.apache.wicket.markup.html.IHeaderContributor; import org.apache.wicket.markup.html.TransparentWebMarkupContainer; import org.apache.wicket.markup.html.WebPage; @@ -36,7 +34,6 @@ import org.sakaiproject.sitestats.api.StatsManager; import org.sakaiproject.util.ResourceLoader; - public class BasePage extends WebPage implements IHeaderContributor { private static final long serialVersionUID = 1L; @@ -56,24 +53,23 @@ public BasePage(){ html.add(AttributeModifier.replace("xml:lang", locale)); add(html); - - add(new DebugBar("debug")); - add(new HeaderResponseContainer("bottom-script-container", "bottom-script-container")); + + //add(new HeaderResponseContainer("bottom-script-container", "bottom-script-container")); } @Override public void renderHead(IHeaderResponse response) { - + super.renderHead(response); + //get the Sakai skin header fragment from the request attribute HttpServletRequest request = (HttpServletRequest) getRequest().getContainerRequest(); response.render(StringHeaderItem.forString(request.getAttribute("sakai.html.head").toString())); response.render(JavaScriptHeaderItem.forUrl(COMMONSCRIPT)); - } @Override protected void onBeforeRender() { - /** Component used for debugging pagemaps + /* Component used for debugging pagemaps // WARNING: produce unexpected results - use only for debugging! PageView componentTree = new PageView("componentTree", this); add(componentTree); diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/MaximizedImagePage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/MaximizedImagePage.java index 0a545cc01859..15c4b4d863fd 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/MaximizedImagePage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/MaximizedImagePage.java @@ -18,6 +18,8 @@ */ package org.sakaiproject.sitestats.tool.wicket.pages; +import java.time.Duration; + import org.apache.wicket.Page; import org.apache.wicket.request.resource.IResource; import org.apache.wicket.markup.head.IHeaderResponse; @@ -29,7 +31,6 @@ import org.apache.wicket.request.resource.DynamicImageResource; import org.apache.wicket.request.resource.AbstractResource; import org.apache.wicket.request.http.WebResponse; -import org.apache.wicket.util.time.Duration; import org.sakaiproject.sitestats.tool.facade.Locator; @@ -91,7 +92,7 @@ protected void configureResponse(AbstractResource.ResourceResponse response, IRe { super.configureResponse(response, attributes); - response.setCacheDuration(Duration.NONE); + response.setCacheDuration(Duration.ZERO); response.setCacheScope(WebResponse.CacheScope.PRIVATE); } }; diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/OverviewPage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/OverviewPage.java index d7238e8ff423..93da1897a88c 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/OverviewPage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/OverviewPage.java @@ -60,9 +60,7 @@ public OverviewPage(PageParameters pageParameters) { StatsAuthz statsAuthz = Locator.getFacade().getStatsAuthz(); siteStatsView = statsAuthz.isUserAbleToViewSiteStats(siteId); siteStatsViewAll = statsAuthz.isUserAbleToViewSiteStatsAll(siteId); - boolean siteStatsOwn = statsAuthz.isUserAbleToViewSiteStatsOwn(siteId); currentUserId = statsAuthz.getCurrentSessionUserId(); - //if(siteStatsView || siteStatsOwn) { if(siteStatsView) { renderBody(); Locator.getFacade().getStatsManager().logEvent(null, StatsManager.LOG_ACTION_VIEW, siteId, true); @@ -73,10 +71,10 @@ public OverviewPage(PageParameters pageParameters) { @Override public void renderHead(IHeaderResponse response) { - super.renderHead(response); response.render(JavaScriptHeaderItem.forUrl(JQUERYSCRIPT)); + super.renderHead(response); } - + private void renderBody() { setRenderBodyOnly(true); add(new Menus("menu", siteId)); diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/ReportsEditPage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/ReportsEditPage.java index a9fd7e408c42..8ccec50211d8 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/ReportsEditPage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/ReportsEditPage.java @@ -268,7 +268,7 @@ public void onSubmit() { public void onSubmit() { setISODates(); if(validReportParameters()) { - if(getReportDef().getTitle() == null || getReportDef().getTitle().trim().length() == 0) { + if(getReportDef().getTitle() == null || getReportDef().getTitle().trim().isEmpty()) { error((String) new ResourceModel("report_reporttitle_req").getObject()); }else{ if(predefined) { @@ -299,7 +299,7 @@ public void onSubmit() { super.onSubmit(); } }; - saveReport.setVisible(!predefined || (predefined && Locator.getFacade().getStatsAuthz().isSiteStatsAdminPage() && realSiteId.equals(siteId))); + saveReport.setVisible(!predefined || Locator.getFacade().getStatsAuthz().isSiteStatsAdminPage() && realSiteId.equals(siteId)); form.add(saveReport); final Button back = new Button("back") { @Override @@ -393,6 +393,7 @@ private void renderWhatUI(Form form) { if(resourcesVisible) { whatOptions.add(ReportManager.WHAT_RESOURCES); } if(presencesVisible) { whatOptions.add(ReportManager.WHAT_PRESENCES); } IChoiceRenderer whatChoiceRenderer = new IChoiceRenderer() { + @Override public Object getDisplayValue(Object object) { if(ReportManager.WHAT_VISITS.equals(object)) { return new ResourceModel("report_what_visits").getObject(); @@ -408,6 +409,8 @@ public Object getDisplayValue(Object object) { } return object; } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -420,6 +423,8 @@ public String getIdValue(Object object, int index) { // event selection type List whatEventSelTypeOptions = Arrays.asList(ReportManager.WHAT_EVENTS_BYTOOL, ReportManager.WHAT_EVENTS_BYEVENTS); IChoiceRenderer whatEventSelTypeChoiceRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { if(ReportManager.WHAT_EVENTS_BYTOOL.equals(object)) { return new ResourceModel("report_what_events_bytool").getObject(); @@ -429,6 +434,8 @@ public Object getDisplayValue(Object object) { } return object; } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -480,6 +487,8 @@ public String getIdValue(Object object, int index) { resourceActions.add(ReportManager.WHAT_RESOURCES_ACTION_DEL); resourceActions.add(ReportManager.WHAT_RESOURCES_ACTION_DOW); DropDownChoice whatResourceAction = new DropDownChoice("reportParams.whatResourceAction", resourceActions, new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { if(object == null){ return ""; @@ -487,6 +496,8 @@ public Object getDisplayValue(Object object) { return (String) new ResourceModel("action_" + ((String) object)).getObject(); } } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -510,6 +521,8 @@ private void renderWhenUI(Form form) { ReportManager.WHEN_CUSTOM ); IChoiceRenderer whenChoiceRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { if(ReportManager.WHEN_ALL.equals(object)) { return new ResourceModel("report_when_all").getObject(); @@ -528,6 +541,8 @@ public Object getDisplayValue(Object object) { } return object; } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -538,8 +553,7 @@ public String getIdValue(Object object, int index) { form.add(when); String localSakaiName = Locator.getFacade().getStatsManager().getLocalSakaiName(); - StringResourceModel model = new StringResourceModel("report_server_time_zone", getPage(), null, - new Object[] {localSakaiName}); + StringResourceModel model = new StringResourceModel("report_server_time_zone").setParameters(localSakaiName); form.add(new Label("reportParams.when.serverTimeZone", model)); // custom dates @@ -562,16 +576,14 @@ private void renderWhoUI(Form form) { RepeatingView selectOptionsRV = new RepeatingView("selectOptionsRV"); Select whoUserIds = new Select("reportParams.whoUserIds"); - // who - List whoOptions = new ArrayList(); - whoOptions.add(ReportManager.WHO_ALL); - whoOptions.add(ReportManager.WHO_ROLE); - whoOptions.add(ReportManager.WHO_CUSTOM); - whoOptions.add(ReportManager.WHO_NONE); - if(groups.size() > 0) { + // who + List whoOptions = new ArrayList<>(Arrays.asList(ReportManager.WHO_ALL, ReportManager.WHO_ROLE, ReportManager.WHO_CUSTOM, ReportManager.WHO_NONE)); + if(!groups.isEmpty()) { whoOptions.add(2, ReportManager.WHO_GROUPS); } IChoiceRenderer whoChoiceRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { if(ReportManager.WHO_ALL.equals(object)) { return new ResourceModel("report_who_all").getObject(); @@ -590,6 +602,8 @@ public Object getDisplayValue(Object object) { } return object; } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -608,18 +622,22 @@ public String getIdValue(Object object, int index) { // roles List roles = getRoles(); IChoiceRenderer rolesRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { return (String) object; } + + @Override public String getIdValue(Object object, int index) { return (String) object; } }; - Collections.sort(roles, Comparators.getChoiceRendererComparator(rolesRenderer)); + roles.sort(Comparators.getChoiceRendererComparator(rolesRenderer)); DropDownChoice whoRoleId = new DropDownChoice("reportParams.whoRoleId", roles, rolesRenderer); - whoRoleId.setEnabled(roles.size() > 0); + whoRoleId.setEnabled(!roles.isEmpty()); if(getReportParams().getWhoRoleId() == null) { - if(roles.size() > 0) { + if(!roles.isEmpty()) { getReportParams().setWhoRoleId(roles.get(0)); }else{ getReportParams().setWhoRoleId(""); @@ -631,6 +649,8 @@ public String getIdValue(Object object, int index) { WebMarkupContainer whoGroupTr = new WebMarkupContainer("who-groups-tr"); form.add(whoGroupTr); IChoiceRenderer groupsRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { try{ return Locator.getFacade().getSiteService().getSite(siteId).getGroup((String) object).getTitle(); @@ -638,17 +658,19 @@ public Object getDisplayValue(Object object) { return (String) object; } } + + @Override public String getIdValue(Object object, int index) { return (String) object; } }; - Collections.sort(groups, Comparators.getChoiceRendererComparator(groupsRenderer)); + groups.sort(Comparators.getChoiceRendererComparator(groupsRenderer)); DropDownChoice whoGroupId = new DropDownChoice("reportParams.whoGroupId", groups, groupsRenderer); - if(groups.size() == 0) { + if(groups.isEmpty()) { whoGroupTr.setVisible(false); }else{ if(getReportParams().getWhoGroupId() == null) { - if(groups.size() > 0) { + if(!groups.isEmpty()) { getReportParams().setWhoGroupId(groups.get(0)); }else{ getReportParams().setWhoGroupId(""); @@ -667,6 +689,8 @@ private void renderHowUI(Form form) { // common IChoiceRenderer allColumnsChoiceRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { if(object != null) { String id = (String) object; @@ -703,6 +727,8 @@ public Object getDisplayValue(Object object) { } return (String) new ResourceModel("default").getObject(); } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -714,6 +740,8 @@ public String getIdValue(Object object, int index) { form.add(siteContainer); List reportSiteOptions = Arrays.asList(REPORT_THISSITE, REPORT_ALLSITES); IChoiceRenderer reportSiteRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { if(REPORT_THISSITE.equals(object)) { return (String) new ResourceModel("report_reportsite_this").getObject(); @@ -723,6 +751,8 @@ public Object getDisplayValue(Object object) { } return (String) new ResourceModel("report_reportsite_this").getObject(); } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -807,6 +837,8 @@ public Integer convertToObject(String value, Locale locale) { // presentation List howPresentationOptions = Arrays.asList(ReportManager.HOW_PRESENTATION_TABLE, ReportManager.HOW_PRESENTATION_CHART, ReportManager.HOW_PRESENTATION_BOTH); IChoiceRenderer howPresentationChoiceRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { if(ReportManager.HOW_PRESENTATION_TABLE.equals(object)) { return new ResourceModel("report_howpresentation_table").getObject(); @@ -819,6 +851,8 @@ public Object getDisplayValue(Object object) { } return object; } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -833,6 +867,8 @@ public String getIdValue(Object object, int index) { StatsManager.CHARTTYPE_BAR, /*StatsManager.CHARTTYPE_LINE,*/ StatsManager.CHARTTYPE_PIE, StatsManager.CHARTTYPE_TIMESERIES, StatsManager.CHARTTYPE_TIMESERIESBAR); IChoiceRenderer howChartTypeChoiceRenderer = new IChoiceRenderer() { + + @Override public Object getDisplayValue(Object object) { if(StatsManager.CHARTTYPE_BAR.equals(object)) { return new ResourceModel("report_howchart_bar").getObject(); @@ -851,6 +887,8 @@ public Object getDisplayValue(Object object) { } return object; } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -893,39 +931,43 @@ public String getIdValue(Object object, int index) { private void addTools(final RepeatingView rv) { List tools = new ArrayList(); List siteTools = Locator.getFacade().getEventRegistryService().getEventRegistry(siteId, getPrefsdata().isListToolEventsOnlyAvailableInSite()); - Iterator i = siteTools.iterator(); - // add tools - while(i.hasNext()){ - final ToolInfo toolInfo = i.next(); - if(isToolSuported(toolInfo)) { - tools.add(new SelectOption("option", new ToolModel(toolInfo))); - } - } + // add tools + for (ToolInfo toolInfo : siteTools) { + if (isToolSuported(toolInfo)) { + tools.add(new SelectOption("option", new ToolModel(toolInfo))); + } + } WebMarkupContainer optgroupItem = new WebMarkupContainer(rv.newChildId()); optgroupItem.setRenderBodyOnly(true); rv.add(optgroupItem); IStylableOptionRenderer optionRenderer = new IStylableOptionRenderer() { + + @Override public String getDisplayValue(Object object) { SelectOption opt = (SelectOption) object; return " " + ((ToolModel) opt.getDefaultModel()).getToolName(); } + + @Override public IModel getModel(Object value) { SelectOption opt = (SelectOption) value; return new Model(((ToolModel) opt.getDefaultModel()).getToolId()); } + + @Override public String getStyle(Object object) { SelectOption opt = (SelectOption) object; ToolModel toolModel = (ToolModel) opt.getDefaultModel(); String toolId = toolModel.getToolId(); - String style = "display:block;"; - return style; + return "display:block;"; } + + @Override public String getIconClass(Object object) { SelectOption opt = (SelectOption) object; ToolModel toolModel = (ToolModel) opt.getDefaultModel(); String toolId = toolModel.getToolId(); - String hclass = ICON_SAKAI + toolId.replace('.', '-'); - return hclass; + return ICON_SAKAI + toolId.replace('.', '-'); } }; Collections.sort(tools, Comparators.getOptionRendererComparator(optionRenderer)); @@ -939,43 +981,43 @@ public String getIconClass(Object object) { @SuppressWarnings("serial") private void addEvents(final RepeatingView rv) { List siteTools = Locator.getFacade().getEventRegistryService().getEventRegistry(siteId, getPrefsdata().isListToolEventsOnlyAvailableInSite()); - Collections.sort(siteTools, Comparators.getToolInfoComparator()); + siteTools.sort(Comparators.getToolInfoComparator()); // add events - Iterator i = siteTools.iterator(); - while(i.hasNext()){ - ToolInfo toolInfo = i.next(); - if(isToolSuported(toolInfo)) { - List eventInfos = toolInfo.getEvents(); - List events = new ArrayList(); - Iterator iE = eventInfos.iterator(); - while(iE.hasNext()){ - EventInfo e = iE.next(); - SelectOption opt = new SelectOption("option", new EventModel(e)); - events.add(opt); - } - WebMarkupContainer optgroupItem = new WebMarkupContainer(rv.newChildId()); - optgroupItem.setRenderBodyOnly(true); - rv.add(optgroupItem); - String style = "display:block;"; - String toolId = toolInfo.getToolId(); - String toolName = Locator.getFacade().getEventRegistryService().getToolName(toolId); - String hclass = ICON_SAKAI + toolId.replace('.', '-'); - StylableSelectOptionsGroup group = new StylableSelectOptionsGroup("group", new Model(toolName), new Model(style), new Model(hclass)); - optgroupItem.add(group); - SelectOptions selectOptions = new SelectOptions("selectOptions", events, new IOptionRenderer() { - public String getDisplayValue(Object object) { - SelectOption opt = (SelectOption) object; - return ((EventModel) opt.getDefaultModel()).getEventName(); - } - public IModel getModel(Object value) { - SelectOption opt = (SelectOption) value; - return new Model(((EventModel) opt.getDefaultModel()).getEventId()); - } - }); - selectOptions.setRenderBodyOnly(true); - group.add(selectOptions); - } - } + for (ToolInfo toolInfo : siteTools) { + if (isToolSuported(toolInfo)) { + List eventInfos = toolInfo.getEvents(); + List events = new ArrayList(); + for (EventInfo e : eventInfos) { + SelectOption opt = new SelectOption("option", new EventModel(e)); + events.add(opt); + } + WebMarkupContainer optgroupItem = new WebMarkupContainer(rv.newChildId()); + optgroupItem.setRenderBodyOnly(true); + rv.add(optgroupItem); + String style = "display:block;"; + String toolId = toolInfo.getToolId(); + String toolName = Locator.getFacade().getEventRegistryService().getToolName(toolId); + String hclass = ICON_SAKAI + toolId.replace('.', '-'); + StylableSelectOptionsGroup group = new StylableSelectOptionsGroup("group", new Model(toolName), new Model(style), new Model(hclass)); + optgroupItem.add(group); + SelectOptions selectOptions = new SelectOptions("selectOptions", events, new IOptionRenderer() { + + @Override + public String getDisplayValue(Object object) { + SelectOption opt = (SelectOption) object; + return ((EventModel) opt.getDefaultModel()).getEventName(); + } + + @Override + public IModel getModel(Object value) { + SelectOption opt = (SelectOption) value; + return new Model(((EventModel) opt.getDefaultModel()).getEventId()); + } + }); + selectOptions.setRenderBodyOnly(true); + group.add(selectOptions); + } + } } @SuppressWarnings("serial") @@ -997,21 +1039,21 @@ private void addUsers(final RepeatingView rv) { siteUsers = Locator.getFacade().getSiteService().getSite(siteId).getUsers(); }catch(IdUnusedException e){ log.warn("Site does not exist: " + siteId); - siteUsers = new HashSet(); + siteUsers = new HashSet<>(); } - Iterator i = siteUsers.iterator(); - while(i.hasNext()){ - String userId = i.next(); - if(userId != null) { - SelectOption opt = new SelectOption("option", new Model(userId)); - opt.setEscapeModelStrings(true); - users.add(opt); - } - } + for (String userId : siteUsers) { + if (userId != null) { + SelectOption opt = new SelectOption("option", new Model(userId)); + opt.setEscapeModelStrings(true); + users.add(opt); + } + } WebMarkupContainer optgroupItem = new WebMarkupContainer(rv.newChildId()); optgroupItem.setRenderBodyOnly(true); rv.add(optgroupItem); IOptionRenderer optionRenderer = new IOptionRenderer() { + + @Override public String getDisplayValue(Object object) { SelectOption opt = (SelectOption) object; String userId = (String) opt.getDefaultModel().getObject(); @@ -1021,12 +1063,14 @@ public String getDisplayValue(Object object) { return Locator.getFacade().getStatsManager().getUserInfoForDisplay(userId, siteId); } } + + @Override public IModel getModel(Object value) { SelectOption opt = (SelectOption) value; return new Model( (String) opt.getDefaultModel().getObject() ); } }; - Collections.sort(users, Comparators.getOptionRendererComparator(optionRenderer)); + users.sort(Comparators.getOptionRendererComparator(optionRenderer)); SelectOptions selectOptions = new SelectOptions("selectOptions", users, optionRenderer); selectOptions.setRenderBodyOnly(true); optgroupItem.add(selectOptions); @@ -1040,32 +1084,33 @@ public IModel getModel(Object value) { private void addGroupOptions(final RepeatingView rv) { boolean isSiteStatsAdminTool = Locator.getFacade().getStatsAuthz().isSiteStatsAdminPage(); boolean renderAdminOptions = isSiteStatsAdminTool && !predefined && realSiteId.equals(siteId); - - List totalsOptions = new ArrayList(); - totalsOptions.add(StatsManager.T_USER); - totalsOptions.add(StatsManager.T_TOOL); - totalsOptions.add(StatsManager.T_EVENT); - totalsOptions.add(StatsManager.T_RESOURCE); - totalsOptions.add(StatsManager.T_RESOURCE_ACTION); - totalsOptions.add(StatsManager.T_DATE); + + List totalsOptions = new ArrayList<>(Arrays.asList( + StatsManager.T_USER, + StatsManager.T_TOOL, + StatsManager.T_EVENT, + StatsManager.T_RESOURCE, + StatsManager.T_RESOURCE_ACTION, + StatsManager.T_DATE + )); if(renderAdminOptions) { totalsOptions.add(StatsManager.T_SITE); } // add grouping options - List selectOptionList = new ArrayList(); - Iterator i = totalsOptions.iterator(); - while(i.hasNext()){ - String totalOpt = i.next(); - SelectOption so = new SelectOption("option", new Model(totalOpt)); - so.setEscapeModelStrings(false); - selectOptionList.add(so); - } + List selectOptionList = new ArrayList<>(); + for (String totalOpt : totalsOptions) { + SelectOption so = new SelectOption("option", new Model(totalOpt)); + so.setEscapeModelStrings(false); + selectOptionList.add(so); + } WebMarkupContainer optgroupItem = new WebMarkupContainer(rv.newChildId()); optgroupItem.setRenderBodyOnly(true); rv.add(optgroupItem); final IOptionRenderer optionRenderer = new IOptionRenderer() { + + @Override public String getDisplayValue(Object o) { SelectOption opt = (SelectOption) o; Object object = opt.getDefaultModel().getObject(); @@ -1095,7 +1140,8 @@ public String getDisplayValue(Object o) { } return (String) object; } - + + @Override public IModel getModel(Object value) { SelectOption opt = (SelectOption) value; return opt.getDefaultModel(); @@ -1111,20 +1157,18 @@ private List getGroups() { List groups = new ArrayList(); try{ Collection groupCollection = Locator.getFacade().getSiteService().getSite(siteId).getGroups(); - Iterator i = groupCollection.iterator(); - while(i.hasNext()){ - Group g = i.next(); - groups.add(g.getId()); - } + for (Group g : groupCollection) { + groups.add(g.getId()); + } }catch(IdUnusedException e){ - log.warn("Site does not exist: " + siteId); + log.warn("getGroups site does not exist: {}", siteId); } return groups; } private List getRoles() { - Set siteIdWithRoles = new HashSet<>(Arrays.asList("/site/" + siteId)); + Set siteIdWithRoles = new HashSet<>(List.of("/site/" + siteId)); if ("!admin".equals(siteId) || "~admin".equals(siteId)) { siteIdWithRoles.add("!site.template"); @@ -1140,7 +1184,7 @@ private List getRoles() { log.debug("AuthzGroup does not exist, skipping: {}", s); } } - return new ArrayList(roles); + return new ArrayList<>(roles); } private boolean isToolSuported(final ToolInfo toolInfo) { @@ -1148,17 +1192,15 @@ private boolean isToolSuported(final ToolInfo toolInfo) { return true; }else{ List siteTools = Locator.getFacade().getEventRegistryService().getEventRegistry(siteId, getPrefsdata().isListToolEventsOnlyAvailableInSite()); - Iterator i = siteTools.iterator(); - while (i.hasNext()){ - ToolInfo t = i.next(); - if(t.getToolId().equals(toolInfo.getToolId())){ - boolean match = t.getEventParserTips().stream() - .anyMatch(tip -> StatsManager.PARSERTIP_FOR_CONTEXTID.equals(tip.getFor())); - if(match){ - return true; - } - } - } + for (ToolInfo t : siteTools) { + if (t.getToolId().equals(toolInfo.getToolId())) { + boolean match = t.getEventParserTips().stream() + .anyMatch(tip -> StatsManager.PARSERTIP_FOR_CONTEXTID.equals(tip.getFor())); + if (match) { + return true; + } + } + } } return false; } @@ -1175,23 +1217,23 @@ private boolean validReportParameters() { try{ site = Locator.getFacade().getSiteService().getSite(siteId); }catch(IdUnusedException e){ - log.error("No site with id: "+siteId); + log.error("No site found with id: {}", siteId); } // check WHAT if(getReportParams().getWhat().equals(ReportManager.WHAT_EVENTS) && getReportParams().getWhatEventSelType().equals(ReportManager.WHAT_EVENTS_BYTOOL) - && (getReportParams().getWhatToolIds() == null || getReportParams().getWhatToolIds().size() == 0)){ + && (getReportParams().getWhatToolIds() == null || getReportParams().getWhatToolIds().isEmpty())){ error((String) new ResourceModel("report_err_notools").getObject()); } if(getReportParams().getWhat().equals(ReportManager.WHAT_EVENTS) && getReportParams().getWhatEventSelType().equals(ReportManager.WHAT_EVENTS_BYEVENTS) - && (getReportParams().getWhatEventIds() == null || getReportParams().getWhatEventIds().size() == 0)) { + && (getReportParams().getWhatEventIds() == null || getReportParams().getWhatEventIds().isEmpty())) { error((String) new ResourceModel("report_err_noevents").getObject()); } if(getReportParams().getWhat().equals(ReportManager.WHAT_RESOURCES) && getReportParams().isWhatLimitedResourceIds() - && (getReportParams().getWhatResourceIds() == null || getReportParams().getWhatResourceIds().size() == 0)){ + && (getReportParams().getWhatResourceIds() == null || getReportParams().getWhatResourceIds().isEmpty())){ error((String) new ResourceModel("report_err_noresources").getObject()); } @@ -1206,18 +1248,18 @@ && getReportParams().isWhatLimitedResourceIds() if(!siteId.equals("!admin") && !siteId.equals("~admin") && site.getUsersHasRole(getReportParams().getWhoRoleId()).isEmpty()) error((String) new ResourceModel("report_err_emptyrole").getObject()); }else if(getReportParams().getWho().equals(ReportManager.WHO_GROUPS)){ - if(getReportParams().getWhoGroupId() == null || getReportParams().getWhoGroupId().equals("")) + if(getReportParams().getWhoGroupId() == null || getReportParams().getWhoGroupId().isEmpty()) error((String) new ResourceModel("report_err_nogroup").getObject()); else if(site.getGroup(getReportParams().getWhoGroupId()).getUsers().isEmpty()) error((String) new ResourceModel("report_err_emptygroup").getObject()); }else if(getReportParams().getWho().equals(ReportManager.WHO_CUSTOM) - && (getReportParams().getWhoUserIds() == null || getReportParams().getWhoUserIds().size() == 0)){ + && (getReportParams().getWhoUserIds() == null || getReportParams().getWhoUserIds().isEmpty())){ error((String) new ResourceModel("report_err_nousers").getObject()); } // check HOW if(getReportParams().getHowTotalsBy() != null){ - if(getReportParams().getHowSortBy().length() == 0) { + if(getReportParams().getHowSortBy().isEmpty()) { error((String) new ResourceModel("report_err_totalsbynone").getObject()); } if(getReportParams().getWhat().equals(ReportManager.WHAT_EVENTS) @@ -1275,9 +1317,13 @@ public ReportParams getReportParams() { return getReportDef().getReportParams(); } - private void setISODates(){ - getReportParams().setWhenFrom(Date.from(startDate.toInstant())); - getReportParams().setWhenTo(Date.from(endDate.toInstant())); + private void setISODates() { + if (startDate != null) { + getReportParams().setWhenFrom(Date.from(startDate.toInstant())); + } + if (endDate != null) { + getReportParams().setWhenTo(Date.from(endDate.toInstant())); + } } } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/ReportsPage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/ReportsPage.java index a6e7ca71b771..af0fdcfbae3e 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/ReportsPage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/ReportsPage.java @@ -49,10 +49,7 @@ public class ReportsPage extends BasePage { private String realSiteId; private String siteId; - - public ReportsPage() { - } - + public ReportsPage(PageParameters pageParameters) { realSiteId = Locator.getFacade().getToolManager().getCurrentPlacement().getContext(); if(pageParameters != null) { @@ -300,8 +297,8 @@ public void onClick() { } @Override protected CharSequence getOnClickScript(CharSequence url) { - String msg = new StringResourceModel("report_confirm_delete", getPage(), model, - new String[] {(String) new ResourceModel(reportDef.getTitleBundleKey()).getObject()}).getString(); + String msg = new StringResourceModel("report_confirm_delete") + .setParameters(reportDef.getTitleBundleKey()).getString(); return "return confirm('"+msg+"');"; } }; diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/UserActivityPage.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/UserActivityPage.java index ac92eb76e115..18a77e04b785 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/UserActivityPage.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/UserActivityPage.java @@ -147,7 +147,7 @@ protected void onUpdate(AjaxRequestTarget target) form.add(new SimpleFormComponentLabel("userFilterLabel", userFilter)); form.add(userFilter); - IChoiceRenderer toolChoiceRenderer = new ChoiceRenderer() + IChoiceRenderer toolChoiceRenderer = new ChoiceRenderer<>() { @Override public Object getDisplayValue(String toolId) @@ -181,7 +181,7 @@ public String getIdValue(String toolId, int index) form.add(endDateField); String zoneName = startDate.getZone().getDisplayName(TextStyle.FULL, getSession().getLocale()); - StringResourceModel legendModel = new StringResourceModel("de_dateRange", getPage(), null, new Object[] { zoneName }); + StringResourceModel legendModel = new StringResourceModel("de_dateRange").setParameters(zoneName); form.add(new Label("dateRangeLegend", legendModel)); final UserTrackingResultsPanel resultsPanel = new UserTrackingResultsPanel("results", TrackingParams.EMPTY_PARAMS); @@ -192,7 +192,7 @@ public String getIdValue(String toolId, int index) searchButton = new SakaiAjaxButton("search", form) { @Override - public void onSubmit(AjaxRequestTarget target, Form form) + public void onSubmit(AjaxRequestTarget target) { // run search PrefsData pd = Locator.getFacade().getStatsManager().getPreferences(siteId, false); @@ -206,7 +206,7 @@ public void onSubmit(AjaxRequestTarget target, Form form) Locator.getFacade().getStatsManager().logEvent(new UserId(user), StatsManager.LOG_ACTION_TRACK, siteId, false); } }; - searchButton.setEnabled(false); + //searchButton.setEnabled(false); form.add(searchButton); } // onInitialize() } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/widget/WidgetTabTemplate.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/widget/WidgetTabTemplate.java index aa6791d4763e..436e939adfde 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/widget/WidgetTabTemplate.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/widget/WidgetTabTemplate.java @@ -122,8 +122,7 @@ public WidgetTabTemplate(String id, String siteId) { protected Optional> getFooterMsg() { String localSakaiName = Locator.getFacade().getStatsManager().getLocalSakaiName(); - StringResourceModel model = new StringResourceModel("widget_server_time_msg", getPage(), null, - new Object[] {localSakaiName}); + StringResourceModel model = new StringResourceModel("widget_server_time_msg").setParameters(localSakaiName); return Optional.of(model); } @@ -192,7 +191,7 @@ private byte[] getChartImage(int width, int height) { chartTd.add(chart); if(!renderChart) { chartTd.setVisible(false); - }else if(renderChart && !renderTable) { + }else if(!renderTable) { chartTd.add(AttributeModifier.replace("colspan", "2")); } add(chartTd); @@ -203,7 +202,7 @@ private void renderTable() { createTable(); if(!renderTable) { tableTd.setVisible(false); - }else if(renderTable && !renderChart) { + }else if(!renderChart) { tableTd.add(AttributeModifier.replace("colspan", "2")); } tableLink = new StatelessLink("link") { @@ -275,6 +274,8 @@ private void renderFilters() { ); IChoiceRenderer dateFilterRenderer = new IChoiceRenderer() { private static final long serialVersionUID = 1L; + + @Override public Object getDisplayValue(Object object) { if(ReportManager.WHEN_ALL.equals(object)) { return new ResourceModel("overview_filter_date_all").getObject(); @@ -290,6 +291,8 @@ public Object getDisplayValue(Object object) { } return object; } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -313,9 +316,7 @@ protected void onUpdate(AjaxRequestTarget target) { try{ Site site = Locator.getFacade().getSiteService().getSite(siteId); roles = site.getRoles(); - Iterator i = roles.iterator(); - while(i.hasNext()){ - Role r = i.next(); + for (Role r : roles) { roleFilterOptions.add(r.getId()); } }catch(IdUnusedException e){ @@ -323,6 +324,8 @@ protected void onUpdate(AjaxRequestTarget target) { } IChoiceRenderer roleFilterRenderer = new IChoiceRenderer() { private static final long serialVersionUID = 1L; + + @Override public Object getDisplayValue(Object object) { if(ReportManager.WHO_ALL.equals(object)) { return new ResourceModel("overview_filter_role_all").getObject(); @@ -330,6 +333,8 @@ public Object getDisplayValue(Object object) { return (String) object; } } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -353,6 +358,8 @@ protected void onUpdate(AjaxRequestTarget target) { toolFilterOptions.addAll(Tools.getToolIds(siteId, getPrefsdata())); IChoiceRenderer toolFilterRenderer = new IChoiceRenderer() { private static final long serialVersionUID = 1L; + + @Override public Object getDisplayValue(Object object) { if(ReportManager.WHAT_EVENTS_ALLTOOLS.equals(object)) { return new ResourceModel("overview_filter_tool_all").getObject(); @@ -360,6 +367,8 @@ public Object getDisplayValue(Object object) { return Locator.getFacade().getEventRegistryService().getToolName((String) object); } } + + @Override public String getIdValue(Object object, int index) { return (String) object; } @@ -384,6 +393,8 @@ protected void onUpdate(AjaxRequestTarget target) { ); IChoiceRenderer resactionFilterRenderer = new IChoiceRenderer() { private static final long serialVersionUID = 1L; + + @Override public Object getDisplayValue(Object object) { if(object == null || "".equals(object)) { return new ResourceModel("overview_filter_resaction_all").getObject(); @@ -391,6 +402,8 @@ public Object getDisplayValue(Object object) { return (String) new ResourceModel("action_" + ((String) object)).getObject(); } } + + @Override public String getIdValue(Object object, int index) { if(object == null || "".equals(object)) { return ""; @@ -426,17 +439,21 @@ protected void onUpdate(AjaxRequestTarget target) { IChoiceRenderer lessonActionFilterRenderer = new IChoiceRenderer() { private static final long serialVersionUID = 1L; + + @Override public Object getDisplayValue(String object) { - if (object == null || "".equals(object)) { + if (object == null || object.isEmpty()) { return new ResourceModel("overview_filter_resaction_all").getObject(); } else { return new ResourceModel("action_" + object).getObject(); } } + + @Override public String getIdValue(String object, int index) { - if (object == null || "".equals(object)) { + if (object == null || object.isEmpty()) { return ""; }else { return object; @@ -484,15 +501,13 @@ private void updateData(AjaxRequestTarget target) { private boolean isToolSuported(final ToolInfo toolInfo) { if(Locator.getFacade().getStatsManager().isEventContextSupported()){ return true; - }else{ + } else { List siteTools = Locator.getFacade().getEventRegistryService().getEventRegistry(siteId, getPrefsdata().isListToolEventsOnlyAvailableInSite()); - Iterator i = siteTools.iterator(); - while (i.hasNext()){ - ToolInfo t = i.next(); - if(t.getToolId().equals(toolInfo.getToolId())){ + for (ToolInfo t : siteTools) { + if (t.getToolId().equals(toolInfo.getToolId())) { boolean match = t.getEventParserTips().stream() .anyMatch(tip -> StatsManager.PARSERTIP_FOR_CONTEXTID.equals(tip.getFor())); - if(match){ + if (match) { return true; } diff --git a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/widget/WidgetTabs.java b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/widget/WidgetTabs.java index 04312f219e84..05676d3d90d6 100644 --- a/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/widget/WidgetTabs.java +++ b/sitestats/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/widget/WidgetTabs.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.apache.wicket.AttributeModifier; import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior; @@ -27,6 +28,7 @@ import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.IAjaxIndicatorAware; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; +import org.apache.wicket.ajax.markup.html.AjaxFallbackLink; import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxFallbackLink; import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; import org.apache.wicket.markup.html.WebMarkupContainer; @@ -48,7 +50,7 @@ public WidgetTabs(String id, List tabs) { } public WidgetTabs(String id, List tabs, int selectedTab) { - super(id, new Model(Integer.valueOf(-1))); + super(id, new Model(-1)); setOutputMarkupId(true); setVersioned(false); this.setTabs(tabs); @@ -106,7 +108,7 @@ public void setSelectedTab(int selectedTab, boolean showTabContents) { if(selectedTab < 0 || selectedTab >= tabs.size()){ throw new IndexOutOfBoundsException(); } - setDefaultModelObject(Integer.valueOf(selectedTab)); + setDefaultModelObject(selectedTab); AbstractTab tab = getTabs().get(selectedTab); WebMarkupContainer tabContents = null; if(showTabContents) { @@ -130,16 +132,17 @@ public String getLoadSelectedTabScript() { } protected WebMarkupContainer newLink(String linkId, final int index) { - return new IndicatingAjaxFallbackLink(linkId) { + return new AjaxFallbackLink(linkId) { private static final long serialVersionUID = 1L; - public void onClick(AjaxRequestTarget target) { + @Override + public void onClick(Optional targetOptional) { setSelectedTab(index); - if(target != null){ + targetOptional.ifPresent(target -> { target.add(WidgetTabs.this); target.appendJavaScript("setMainFrameHeightNoScroll(window.name, 0, 100);"); - } - onAjaxUpdate(target); + onAjaxUpdate(target); + }); } }; } @@ -161,18 +164,16 @@ protected void respond(AjaxRequestTarget target) { } public String getScript() { - StringBuilder buff = new StringBuilder(); - buff.append("wicketAjaxGet('"); - buff.append(getCallbackUrl()); - buff.append(",function() {}, function() {}"); - buff.append(",null, '").append(getAttributes().getChannel().getName()).append("'"); - buff.append(")"); - return buff.toString(); + String buff = "wicketAjaxGet('" + + getCallbackUrl() + + ",function() {}, function() {}" + + ",null, '" + getAttributes().getChannel().getName() + "'" + + ")"; + return buff; } @Override - protected void updateAjaxAttributes(AjaxRequestAttributes attributes) - { + protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); attributes.setChannel(new AjaxChannel(getId())); diff --git a/sitestats/sitestats-tool/src/webapp/html/pages/BasePage.html b/sitestats/sitestats-tool/src/webapp/html/pages/BasePage.html index 38762ad9eb6d..5a25a1c6aac6 100644 --- a/sitestats/sitestats-tool/src/webapp/html/pages/BasePage.html +++ b/sitestats/sitestats-tool/src/webapp/html/pages/BasePage.html @@ -1,4 +1,4 @@ - +