1
24 package net.sf.jasperreports.engine.export;
25
26 import java.util.ArrayList;
27 import java.util.Iterator;
28 import java.util.List;
29
30 import net.sf.jasperreports.engine.JRPropertiesMap;
31 import net.sf.jasperreports.engine.JRPropertiesUtil;
32 import net.sf.jasperreports.engine.JRPropertiesUtil.PropertySuffix;
33 import net.sf.jasperreports.extensions.DefaultExtensionsRegistry;
34 import net.sf.jasperreports.extensions.ExtensionsRegistry;
35 import net.sf.jasperreports.extensions.ExtensionsRegistryFactory;
36 import net.sf.jasperreports.extensions.ListExtensionRegistry;
37
38 import org.apache.commons.logging.Log;
39 import org.apache.commons.logging.LogFactory;
40
41
44 public class MatcherExportFilterMappingExtensionsRegistryFactory implements ExtensionsRegistryFactory
45 {
46 private static final Log log = LogFactory.getLog(MatcherExportFilterMappingExtensionsRegistryFactory.class);
47
48
51 public final static String MATCHER_EXPORT_FILTER_MAPPING_PROPERTY_PREFIX =
52 DefaultExtensionsRegistry.PROPERTY_REGISTRY_PREFIX + "matcher.export.filter.";
53
54
57 public final static String MATCHER_EXPORT_FILTER_MAPPING_INCLUDES_PROPERTY_SUFFIX = ".includes";
58
59
62 public final static String MATCHER_EXPORT_FILTER_MAPPING_EXCLUDES_PROPERTY_SUFFIX = ".excludes";
63
64 @Override
65 public ExtensionsRegistry createRegistry(String registryId, JRPropertiesMap properties)
66 {
67 List<PropertySuffix> exportFilterMappingProperties = JRPropertiesUtil.getProperties(properties, MATCHER_EXPORT_FILTER_MAPPING_PROPERTY_PREFIX);
68 List<MatcherExportFilterMapping> exportFilterMappings = new ArrayList<MatcherExportFilterMapping>();
69 for (Iterator<PropertySuffix> it = exportFilterMappingProperties.iterator(); it.hasNext();)
70 {
71 PropertySuffix exportFilterMappingProp = it.next();
72 String exporterKey = null;
73 boolean isIncludes = true;
74 String propSuffix = exportFilterMappingProp.getSuffix();
75 if (propSuffix.endsWith(MATCHER_EXPORT_FILTER_MAPPING_INCLUDES_PROPERTY_SUFFIX))
76 {
77 exporterKey = propSuffix.substring(0, propSuffix.length() - MATCHER_EXPORT_FILTER_MAPPING_INCLUDES_PROPERTY_SUFFIX.length());
78 isIncludes = true;
79 }
80 else if (propSuffix.endsWith(MATCHER_EXPORT_FILTER_MAPPING_EXCLUDES_PROPERTY_SUFFIX))
81 {
82 exporterKey = propSuffix.substring(0, propSuffix.length() - MATCHER_EXPORT_FILTER_MAPPING_EXCLUDES_PROPERTY_SUFFIX.length());
83 isIncludes = false;
84 }
85 if (exporterKey == null)
86 {
87 if (log.isDebugEnabled())
88 {
89 log.debug("Matcher mapping property suffix is invalid : " + propSuffix);
90 }
91 }
92 else
93 {
94 exportFilterMappings.add(
95 new MatcherExportFilterMapping(
96 exporterKey,
97 exportFilterMappingProp.getValue(),
98 isIncludes
99 )
100 );
101 }
102 }
103
104 return new ListExtensionRegistry<MatcherExportFilterMapping>(MatcherExportFilterMapping.class, exportFilterMappings);
105 }
106
107 }
108