public List<DashboardFilterProperty> getVisibleProperties() { List<DashboardFilterProperty> results = new ArrayList<DashboardFilterProperty>(); Iterator it = properties.iterator(); while (it.hasNext()) { DashboardFilterProperty dashboardFilterProperty = (DashboardFilterProperty) it.next(); if (dashboardFilterProperty.isVisible()) results.add(dashboardFilterProperty); } return results; }
public String serializeComponentData() throws Exception { // Serialize visible properties and options. StringWriter sw = new StringWriter(); PrintWriter out = new PrintWriter(sw); int indent = 0; printIndent(out, indent); out.println("<dashboard_filter>"); Iterator it = properties.iterator(); while (it.hasNext()) { DashboardFilterProperty dashboardFilterProperty = (DashboardFilterProperty) it.next(); printIndent(out, indent + 1); out.println( "<property id=\"" + StringEscapeUtils.escapeXml(dashboardFilterProperty.getPropertyId()) + "\" providerCode =\"" + StringEscapeUtils.escapeXml(dashboardFilterProperty.getDataProviderCode()) + "\">"); printIndent(out, indent + 2); out.println("<visible>" + dashboardFilterProperty.isVisible() + "</visible>"); if (dashboardFilterProperty.getSectionId() != null) { printIndent(out, indent + 2); out.println("<section>" + dashboardFilterProperty.getSectionId() + "</section>"); } printIndent(out, indent + 1); out.println("</property>"); } // Serialize options. printIndent(out, indent + 1); out.println("<options>"); printIndent(out, indent + 2); out.println("<shortViewMode>" + isShortMode + "</shortViewMode>"); printIndent(out, indent + 2); out.println("<showLegend>" + showLegend + "</showLegend>"); printIndent(out, indent + 2); out.println("<showRefreshButton>" + showRefreshButton + "</showRefreshButton>"); printIndent(out, indent + 2); out.println("<showApplyhButton>" + showApplyButton + "</showApplyhButton>"); printIndent(out, indent + 2); out.println("<showClearButton>" + showClearButton + "</showClearButton>"); printIndent(out, indent + 2); out.println("<showPropertyNames>" + showPropertyNames + "</showPropertyNames>"); printIndent(out, indent + 2); out.println("<showSubmitOnChange>" + showSubmitOnChange + "</showSubmitOnChange>"); printIndent(out, indent + 1); out.println("<showAutoRefresh>" + showAutoRefresh + "</showAutoRefresh>"); printIndent(out, indent + 1); out.println("</options>"); printIndent(out, indent); out.println("</dashboard_filter>"); serializedProperties = sw.toString(); return sw.toString(); }
public CommandResponse actionFilter(CommandRequest request) { try { // Init attributes for start applying the filter. filterPropertyErrors.clear(); // Parse parameters and set the filter. Iterator visiblePropertiesIt = properties.iterator(); while (visiblePropertiesIt.hasNext()) { DashboardFilterProperty dashboardFilterProperty = (DashboardFilterProperty) visiblePropertiesIt.next(); // Is property already in the dashboard filter?. Then is not possible to filter by this // property, it's already added to dashboard filter. if (dashboardFilterProperty.isBeingFiltered()) continue; if (!dashboardFilterProperty.isPropertyAlive()) { log.warn( "Trying to filter by " + dashboardFilterProperty.getPropertyId() + ". This property is not in any dataset."); continue; } if (!dashboardFilterProperty.isVisible()) continue; Object[] result; try { result = requestProcessor.parseDashboardProperty( request.getRequestObject(), dashboardFilterProperty); } catch (Exception e) { log.error("Error parsing property " + dashboardFilterProperty.getPropertyId() + ".", e); continue; } if (result.length != 3) { log.error( "Error parsing property: '" + dashboardFilterProperty.getPropertyId() + "' for dataProvider: '" + dashboardFilterProperty.getDataProviderCode() + "'"); continue; } Collection allowedValues = (Collection) result[0]; Object minValue = result[1]; Object maxValue = result[2]; if (allowedValues == null && minValue == null && maxValue == null) continue; // Set the filter with this property. Dashboard currentDashboard = DashboardHandler.lookup().getCurrentDashboard(); if (currentDashboard.filter( dashboardFilterProperty.getPropertyId(), minValue, true, maxValue, true, allowedValues, FilterByCriteria.ALLOW_ANY)) { return new ShowCurrentScreenResponse(); } } } catch (Exception e) { log.error("Error trying to filter properties for dashboard", e); } return null; }