1 /*
2 * JasperReports - Free Java Reporting Library.
3 * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4 * http://www.jaspersoft.com
5 *
6 * Unless you have purchased a commercial license agreement from Jaspersoft,
7 * the following license terms apply:
8 *
9 * This program is part of JasperReports.
10 *
11 * JasperReports is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * JasperReports is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23 */
24 package net.sf.jasperreports.engine.part;
25
26 import java.util.Map;
27 import java.util.Set;
28
29 import net.sf.jasperreports.engine.JRRuntimeException;
30 import net.sf.jasperreports.engine.component.ComponentsXmlParser;
31
32 /**
33 * The default {@link PartComponentsBundle components bundle} implementation.
34 *
35 * <p>
36 * A components bundle consists of a {@link ComponentsXmlParser XML parser}
37 * instance and a map of {@link PartComponentManager component managers}.
38 *
39 * @author Lucian Chirita (lucianc@users.sourceforge.net)
40 */
41 public class DefaultPartComponentsBundle implements PartComponentsBundle
42 {
43 public static final String EXCEPTION_MESSAGE_KEY_COMPONENT_MANAGER_NOT_FOUND = "engine.part.component.manager.not.found";
44
45 private ComponentsXmlParser xmlParser;
46 private Map<String,PartComponentManager> componentManagers;
47
48 @Override
49 public ComponentsXmlParser getXmlParser()
50 {
51 return xmlParser;
52 }
53
54 /**
55 * Sets the components XML parser implementation.
56 *
57 * @param xmlParser the components XML parser
58 * @see #getXmlParser()
59 */
60 public void setXmlParser(ComponentsXmlParser xmlParser)
61 {
62 this.xmlParser = xmlParser;
63 }
64
65 @Override
66 public Set<String> getComponentNames()
67 {
68 return componentManagers.keySet();
69 }
70
71 @Override
72 public PartComponentManager getComponentManager(String componentName)
73 {
74 PartComponentManager manager = componentManagers.get(componentName);
75 if (manager == null)
76 {
77 throw
78 new JRRuntimeException(
79 EXCEPTION_MESSAGE_KEY_COMPONENT_MANAGER_NOT_FOUND,
80 new Object[]{componentName, xmlParser.getNamespace()});
81 }
82 return manager;
83 }
84
85 /**
86 * Returns the internal map of component managers, indexed by component name.
87 *
88 * @return the map of component managers
89 * @see #setComponentManagers(Map)
90 */
91 public Map<String,PartComponentManager> getComponentManagers()
92 {
93 return componentManagers;
94 }
95
96 /**
97 * Sets the map of component managers.
98 *
99 * <p>
100 * The map needs to use component names as keys, and {@link PartComponentManager}
101 * instances as values.
102 *
103 * @param componentManagers the map of component managers
104 */
105 public void setComponentManagers(Map<String,PartComponentManager> componentManagers)
106 {
107 this.componentManagers = componentManagers;
108 }
109
110 }
111