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:
19: import java.util.ArrayList;
20: import java.util.HashSet;
21:
22: /**
23: * User: Martin
24: * Date: 16.03.2007
25: * Time: 18:48:47
26: */
27: public class ReportElementNameUtilities {
28: private ReportElementNameUtilities() {
29: }
30:
31: @NotNull
32: public static HashSet<ElementNameDefinition> getElementNameDefinitions(
33: @NotNull
34: ReportElement reportElement) {
35: //noinspection ConstantConditions
36: if (reportElement == null) {
37: throw new IllegalArgumentException(
38: "reportElement must not be null");
39: }
40:
41: HashSet<ElementNameDefinition> hashSets = new HashSet<ElementNameDefinition>();
42: collectNameDefinitions(reportElement, hashSets);
43: return hashSets;
44: }
45:
46: private static void collectNameDefinitions(@NotNull
47: ReportElement reportElement, @NotNull
48: HashSet<ElementNameDefinition> elementNameDefinitions) {
49: elementNameDefinitions.add(new ElementNameDefinition(
50: reportElement, reportElement.getName()));
51:
52: ArrayList<ReportElement> list = reportElement.getChildren();
53: for (ReportElement element : list) {
54: collectNameDefinitions(element, elementNameDefinitions);
55: }
56: }
57: }
|