01: /*
02: * Copyright 2006-2007 Pentaho Corporation. All rights reserved.
03: * This software was developed by Pentaho Corporation and is provided under the terms
04: * of the Mozilla Public License, Version 1.1, or any later version. You may not use
05: * this file except in compliance with the license. If you need a copy of the license,
06: * please go to http://www.mozilla.org/MPL/MPL-1.1.txt.
07: *
08: * Software distributed under the Mozilla Public License is distributed on an "AS IS"
09: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
10: * the license for the specific language governing your rights and limitations.
11: *
12: * Additional Contributor(s): Martin Schmid gridvision engineering GmbH
13: */
14: package org.pentaho.reportdesigner.crm.report.util;
15:
16: import org.jetbrains.annotations.NotNull;
17: import org.pentaho.reportdesigner.crm.report.model.ReportElement;
18: import org.pentaho.reportdesigner.crm.report.model.ReportGroup;
19:
20: import java.util.ArrayList;
21: import java.util.LinkedHashSet;
22:
23: /**
24: * User: Martin
25: * Date: 16.03.2007
26: * Time: 18:48:47
27: */
28: public class ReportGroupUtilities {
29: private ReportGroupUtilities() {
30: }
31:
32: @NotNull
33: public static LinkedHashSet<ReportGroup> getReportGroups(@NotNull
34: ReportElement reportElement) {
35: //noinspection ConstantConditions
36: if (reportElement == null) {
37: throw new IllegalArgumentException(
38: "reportElement must not be null");
39: }
40:
41: LinkedHashSet<ReportGroup> reportGroups = new LinkedHashSet<ReportGroup>();
42: collectReportGroups(reportElement, reportGroups);
43: return reportGroups;
44: }
45:
46: private static void collectReportGroups(@NotNull
47: ReportElement reportElement, @NotNull
48: LinkedHashSet<ReportGroup> reportGroups) {
49: if (reportElement instanceof ReportGroup) {
50: ReportGroup reportGroup = (ReportGroup) reportElement;
51: reportGroups.add(reportGroup);
52: }
53:
54: ArrayList<ReportElement> list = reportElement.getChildren();
55: for (ReportElement element : list) {
56: collectReportGroups(element, reportGroups);
57: }
58: }
59: }
|