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.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 /**
42  * @author Teodor Danciu (teodord@users.sourceforge.net)
43  */

44 public class MatcherExportFilterMappingExtensionsRegistryFactory implements ExtensionsRegistryFactory
45 {
46     private static final Log log = LogFactory.getLog(MatcherExportFilterMappingExtensionsRegistryFactory.class);
47
48     /**
49      * 
50      */

51     public final static String MATCHER_EXPORT_FILTER_MAPPING_PROPERTY_PREFIX = 
52         DefaultExtensionsRegistry.PROPERTY_REGISTRY_PREFIX + "matcher.export.filter.";
53     
54     /**
55      * 
56      */

57     public final static String MATCHER_EXPORT_FILTER_MAPPING_INCLUDES_PROPERTY_SUFFIX = ".includes";
58     
59     /**
60      * 
61      */

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