1
24 package net.sf.jasperreports.extensions;
25
26 import java.util.Collections;
27 import java.util.List;
28
29 import net.sf.jasperreports.charts.ChartThemeBundle;
30 import net.sf.jasperreports.components.headertoolbar.HeaderToolbarElement;
31 import net.sf.jasperreports.components.headertoolbar.json.HeaderToolbarElementJsonHandler;
32 import net.sf.jasperreports.components.iconlabel.IconLabelElement;
33 import net.sf.jasperreports.components.iconlabel.IconLabelElementCsvHandler;
34 import net.sf.jasperreports.components.iconlabel.IconLabelElementDocxHandler;
35 import net.sf.jasperreports.components.iconlabel.IconLabelElementGraphics2DHandler;
36 import net.sf.jasperreports.components.iconlabel.IconLabelElementHtmlHandler;
37 import net.sf.jasperreports.components.iconlabel.IconLabelElementOdsHandler;
38 import net.sf.jasperreports.components.iconlabel.IconLabelElementOdtHandler;
39 import net.sf.jasperreports.components.iconlabel.IconLabelElementPdfHandler;
40 import net.sf.jasperreports.components.iconlabel.IconLabelElementPptxHandler;
41 import net.sf.jasperreports.components.iconlabel.IconLabelElementRtfHandler;
42 import net.sf.jasperreports.components.iconlabel.IconLabelElementXlsHandler;
43 import net.sf.jasperreports.components.iconlabel.IconLabelElementXlsxHandler;
44 import net.sf.jasperreports.components.map.MapComponent;
45 import net.sf.jasperreports.components.map.MapElementDocxHandler;
46 import net.sf.jasperreports.components.map.MapElementGraphics2DHandler;
47 import net.sf.jasperreports.components.map.MapElementHtmlHandler;
48 import net.sf.jasperreports.components.map.MapElementJsonHandler;
49 import net.sf.jasperreports.components.map.MapElementOdsHandler;
50 import net.sf.jasperreports.components.map.MapElementOdtHandler;
51 import net.sf.jasperreports.components.map.MapElementPdfHandler;
52 import net.sf.jasperreports.components.map.MapElementPptxHandler;
53 import net.sf.jasperreports.components.map.MapElementRtfHandler;
54 import net.sf.jasperreports.components.map.MapElementXlsHandler;
55 import net.sf.jasperreports.components.map.MapElementXlsxHandler;
56 import net.sf.jasperreports.components.sort.SortElement;
57 import net.sf.jasperreports.components.sort.SortElementHtmlHandler;
58 import net.sf.jasperreports.components.sort.SortElementJsonHandler;
59 import net.sf.jasperreports.crosstabs.interactive.CrosstabInteractiveJsonHandler;
60 import net.sf.jasperreports.engine.JRPropertiesMap;
61 import net.sf.jasperreports.engine.export.FlashHtmlHandler;
62 import net.sf.jasperreports.engine.export.FlashPrintElement;
63 import net.sf.jasperreports.engine.export.GenericElementHandler;
64 import net.sf.jasperreports.engine.export.GenericElementHandlerBundle;
65 import net.sf.jasperreports.engine.export.HtmlExporter;
66 import net.sf.jasperreports.engine.export.JRCsvExporter;
67 import net.sf.jasperreports.engine.export.JRGraphics2DExporter;
68 import net.sf.jasperreports.engine.export.JRPdfExporter;
69 import net.sf.jasperreports.engine.export.JRRtfExporter;
70 import net.sf.jasperreports.engine.export.JRXlsExporter;
71 import net.sf.jasperreports.engine.export.JsonExporter;
72 import net.sf.jasperreports.engine.export.oasis.JROdsExporter;
73 import net.sf.jasperreports.engine.export.oasis.JROdtExporter;
74 import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter;
75 import net.sf.jasperreports.engine.export.ooxml.JRPptxExporter;
76 import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
77 import net.sf.jasperreports.engine.fill.DefaultChartTheme;
78 import net.sf.jasperreports.engine.fill.JRFillCrosstab;
79 import net.sf.jasperreports.engine.query.DefaultQueryExecuterFactoryBundle;
80 import net.sf.jasperreports.engine.query.JRQueryExecuterFactoryBundle;
81 import net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory;
82 import net.sf.jasperreports.engine.scriptlets.ScriptletFactory;
83 import net.sf.jasperreports.engine.util.MessageProviderFactory;
84 import net.sf.jasperreports.engine.util.ResourceBundleMessageProviderFactory;
85 import net.sf.jasperreports.engine.xml.JRXmlConstants;
86
87
88
91 public class DefaultExtensionsRegistryFactory implements ExtensionsRegistryFactory
92 {
93 private static final GenericElementHandlerBundle HANDLER_BUNDLE =
94 new GenericElementHandlerBundle()
95 {
96 @Override
97 public String getNamespace()
98 {
99 return JRXmlConstants.JASPERREPORTS_NAMESPACE;
100 }
101
102 @Override
103 public GenericElementHandler getHandler(String elementName,
104 String exporterKey)
105 {
106 if (
107 FlashPrintElement.FLASH_ELEMENT_NAME.equals(elementName)
108 && HtmlExporter.HTML_EXPORTER_KEY.equals(exporterKey)
109 )
110 {
111 return FlashHtmlHandler.getInstance();
112 }
113 if (MapComponent.MAP_ELEMENT_NAME.equals(elementName))
114 {
115 if (JRGraphics2DExporter.GRAPHICS2D_EXPORTER_KEY.equals(exporterKey))
116 {
117 return MapElementGraphics2DHandler.getInstance();
118 }
119 if (HtmlExporter.HTML_EXPORTER_KEY.equals(exporterKey))
120 {
121 return MapElementHtmlHandler.getInstance();
122 }
123 else if (JsonExporter.JSON_EXPORTER_KEY.equals(exporterKey))
124 {
125 return MapElementJsonHandler.getInstance();
126 }
127 else if(JRPdfExporter.PDF_EXPORTER_KEY.equals(exporterKey))
128 {
129 return MapElementPdfHandler.getInstance();
130 }
131 else if(JRXlsExporter.XLS_EXPORTER_KEY.equals(exporterKey))
132 {
133 return MapElementXlsHandler.getInstance();
134 }
135 else if(JRXlsxExporter.XLSX_EXPORTER_KEY.equals(exporterKey))
136 {
137 return MapElementXlsxHandler.getInstance();
138 }
139 else if(JRDocxExporter.DOCX_EXPORTER_KEY.equals(exporterKey))
140 {
141 return MapElementDocxHandler.getInstance();
142 }
143 else if(JRPptxExporter.PPTX_EXPORTER_KEY.equals(exporterKey))
144 {
145 return MapElementPptxHandler.getInstance();
146 }
147 else if(JRRtfExporter.RTF_EXPORTER_KEY.equals(exporterKey))
148 {
149 return MapElementRtfHandler.getInstance();
150 }
151 else if(JROdtExporter.ODT_EXPORTER_KEY.equals(exporterKey))
152 {
153 return MapElementOdtHandler.getInstance();
154 }
155 else if(JROdsExporter.ODS_EXPORTER_KEY.equals(exporterKey))
156 {
157 return MapElementOdsHandler.getInstance();
158 }
159 }
160 if (SortElement.SORT_ELEMENT_NAME.equals(elementName))
161 {
162 if (HtmlExporter.HTML_EXPORTER_KEY.equals(exporterKey))
163 {
164 return new SortElementHtmlHandler();
165 } else if (JsonExporter.JSON_EXPORTER_KEY.equals(exporterKey))
166 {
167 return new SortElementJsonHandler();
168 }
169 }
170 if (HeaderToolbarElement.ELEMENT_NAME.equals(elementName) && JsonExporter.JSON_EXPORTER_KEY.equals(exporterKey))
171 {
172 return new HeaderToolbarElementJsonHandler();
173 }
174 if (IconLabelElement.ELEMENT_NAME.equals(elementName))
175 {
176 if (JRPdfExporter.PDF_EXPORTER_KEY.equals(exporterKey))
177 {
178 return new IconLabelElementPdfHandler();
179 }
180 else if (JRGraphics2DExporter.GRAPHICS2D_EXPORTER_KEY.equals(exporterKey))
181 {
182 return new IconLabelElementGraphics2DHandler();
183 }
184 else if (HtmlExporter.HTML_EXPORTER_KEY.equals(exporterKey))
185 {
186 return IconLabelElementHtmlHandler.getInstance();
187 }
188 else if (JRCsvExporter.CSV_EXPORTER_KEY.equals(exporterKey))
189 {
190 return IconLabelElementCsvHandler.getInstance();
191 }
192 else if (JRXlsExporter.XLS_EXPORTER_KEY.equals(exporterKey))
193 {
194 return IconLabelElementXlsHandler.getInstance();
195 }
196 else if (JRXlsxExporter.XLSX_EXPORTER_KEY.equals(exporterKey))
197 {
198 return IconLabelElementXlsxHandler.getInstance();
199 }
200 else if (JRDocxExporter.DOCX_EXPORTER_KEY.equals(exporterKey))
201 {
202 return IconLabelElementDocxHandler.getInstance();
203 }
204 else if (JRPptxExporter.PPTX_EXPORTER_KEY.equals(exporterKey))
205 {
206 return IconLabelElementPptxHandler.getInstance();
207 }
208 else if (JROdsExporter.ODS_EXPORTER_KEY.equals(exporterKey))
209 {
210 return IconLabelElementOdsHandler.getInstance();
211 }
212 else if (JROdtExporter.ODT_EXPORTER_KEY.equals(exporterKey))
213 {
214 return IconLabelElementOdtHandler.getInstance();
215 }
216 else if (JRRtfExporter.RTF_EXPORTER_KEY.equals(exporterKey))
217 {
218 return IconLabelElementRtfHandler.getInstance();
219 }
220
221
222
223
224 }
225
226 if (JRFillCrosstab.CROSSTAB_INTERACTIVE_ELEMENT_NAME.equals(elementName))
227 {
228 if (JsonExporter.JSON_EXPORTER_KEY.equals(exporterKey))
229 {
230 return new CrosstabInteractiveJsonHandler();
231 }
232 }
233
234 return null;
235 }
236 };
237
238 private static final ExtensionsRegistry defaultExtensionsRegistry =
239 new ExtensionsRegistry()
240 {
241 @Override
242 public <T> List<T> getExtensions(Class<T> extensionType)
243 {
244 if (JRQueryExecuterFactoryBundle.class.equals(extensionType))
245 {
246 return (List<T>) Collections.singletonList((Object)DefaultQueryExecuterFactoryBundle.getInstance());
247 }
248 else if (ScriptletFactory.class.equals(extensionType))
249 {
250 return (List<T>) Collections.singletonList((Object)DefaultScriptletFactory.getInstance());
251 }
252 else if (ChartThemeBundle.class.equals(extensionType))
253 {
254 return (List<T>) Collections.singletonList((Object)DefaultChartTheme.BUNDLE);
255 }
256 else if (GenericElementHandlerBundle.class.equals(extensionType))
257 {
258 return (List<T>) Collections.singletonList((Object)HANDLER_BUNDLE);
259 }
260 else if (MessageProviderFactory.class.equals(extensionType))
261 {
262 return (List<T>) Collections.singletonList((Object) new ResourceBundleMessageProviderFactory());
263 }
264 return null;
265 }
266 };
267
268 @Override
269 public ExtensionsRegistry createRegistry(String registryId, JRPropertiesMap properties)
270 {
271 return defaultExtensionsRegistry;
272 }
273 }
274