Skip to content

Commit

Permalink
jackson and json extensions draft
Browse files Browse the repository at this point in the history
  • Loading branch information
teodord committed Dec 15, 2023
1 parent dad19f7 commit 74627ef
Show file tree
Hide file tree
Showing 168 changed files with 723 additions and 185 deletions.
1 change: 0 additions & 1 deletion jasperreports/.classpath
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" output="build/test-classes" path="tests"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=jasperreports&amp;ivyXmlPath=ivy.xml&amp;confs=*&amp;ivySettingsPath=ivysettings.xml&amp;loadSettingsOnDemand=false&amp;ivyUserDir=&amp;propertyFiles="/>
<classpathentry kind="output" path="build/classes"/>
Expand Down
9 changes: 9 additions & 0 deletions jasperreports/demo/samples/accessible/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,13 @@
<properties>
<sample.base.name>Accessible</sample.base.name>
</properties>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-json</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
</dependencies>
</project>
7 changes: 7 additions & 0 deletions jasperreports/demo/samples/crosstabs/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@
<sample.report.name>ShipmentsReport</sample.report.name>
</properties>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-json</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<!--
<dependency>
<groupId>net.sf.jasperreports</groupId>
Expand Down
7 changes: 7 additions & 0 deletions jasperreports/demo/samples/httpdataadapter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-json</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
Expand Down
7 changes: 7 additions & 0 deletions jasperreports/demo/samples/jasper/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@
<sample.report.name>FirstJasper</sample.report.name>
</properties>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-json</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
Expand Down
7 changes: 7 additions & 0 deletions jasperreports/ext/chart-themes/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@
<scope>runtime</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-jackson</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jcommon</artifactId>
Expand Down
21 changes: 14 additions & 7 deletions jasperreports/ext/custom-visualization/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@
<owasp.suppression.file>${basedir}/../../owasp-suppressions.xml</owasp.suppression.file>
</properties>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-json</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-velocity</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-pdf</artifactId>
Expand All @@ -45,12 +59,5 @@
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
</dependencies>
</project>
14 changes: 14 additions & 0 deletions jasperreports/ext/data-adapters/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,19 @@
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-jackson</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-json</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
</dependencies>
</project>
14 changes: 14 additions & 0 deletions jasperreports/ext/google-maps/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,20 @@
<skipDeploy>false</skipDeploy>
</properties>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-json</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-velocity</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-annotation-processors</artifactId>
Expand Down
28 changes: 28 additions & 0 deletions jasperreports/ext/interactivity/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,34 @@
<skipDeploy>false</skipDeploy>
</properties>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-jackson</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-json</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-velocity</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-annotation-processors</artifactId>
<version>${revision}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public class ConditionalFormattingCommand implements Command

private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;

public static final String COLUMN_CONDITIONAL_FORMATTING_PROPERTY = "net.sf.jasperreports.components.headertoolbar.conditional.formatting";
public static final String COLUMN_CONDITIONAL_FORMATTING_PROPERTY = "net.sf.jasperreports.components.headertoolbar.conditional.formatting"; //FIXME7 deprecate

private JasperReportsContext jasperReportsContext;
protected ConditionalFormattingData conditionalFormattingData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.apache.velocity.VelocityContext;

import net.sf.jasperreports.components.BaseElementHtmlHandler;
import net.sf.jasperreports.components.headertoolbar.HeaderToolbarElement;
import net.sf.jasperreports.components.sort.actions.FilterAction;
import net.sf.jasperreports.components.sort.actions.FilterCommand;
import net.sf.jasperreports.components.sort.actions.SortAction;
Expand Down Expand Up @@ -204,19 +205,6 @@ public boolean toExport(JRGenericPrintElement element) {
return true;
}

public static void getFieldFilters(DatasetFilter existingFilter, List<FieldFilter> fieldFilters, String fieldName) {//FIXMEJIVE put this in some util and reuse
if (existingFilter instanceof FieldFilter) {
if ( fieldName == null || (fieldName != null && ((FieldFilter)existingFilter).getField().equals(fieldName))) {
fieldFilters.add((FieldFilter)existingFilter);
}
} else if (existingFilter instanceof CompositeDatasetFilter) {
for (DatasetFilter filter : ((CompositeDatasetFilter)existingFilter).getFilters())
{
getFieldFilters(filter, fieldFilters, fieldName);
}
}
}

private List<FieldFilter> getExistingFiltersForField(
JasperReportsContext jasperReportsContext,
ReportContext reportContext,
Expand All @@ -237,8 +225,8 @@ private List<FieldFilter> getExistingFiltersForField(
// get existing filter as JSON string
String serializedFilters = "[]";
JRPropertiesMap propertiesMap = dataset.getPropertiesMap();
if (propertiesMap.getProperty(FilterCommand.DATASET_FILTER_PROPERTY) != null) {
serializedFilters = propertiesMap.getProperty(FilterCommand.DATASET_FILTER_PROPERTY);
if (propertiesMap.getProperty(HeaderToolbarElement.DATASET_FILTER_PROPERTY) != null) {
serializedFilters = propertiesMap.getProperty(HeaderToolbarElement.DATASET_FILTER_PROPERTY);
}

List<? extends DatasetFilter> existingFilters = JacksonUtil.getInstance(jasperReportsContext).loadList(serializedFilters, FieldFilter.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.VelocityContext;

import net.sf.jasperreports.components.headertoolbar.HeaderToolbarElement;
import net.sf.jasperreports.components.sort.actions.FilterAction;
import net.sf.jasperreports.components.sort.actions.FilterCommand;
import net.sf.jasperreports.components.sort.actions.SortAction;
Expand Down Expand Up @@ -246,19 +247,6 @@ private List<LinkedHashMap<String, String>> getTranslatedOperators(
return result;
}

public static void getFieldFilters(DatasetFilter existingFilter, List<FieldFilter> fieldFilters, String fieldName) {//FIXMEJIVE put this in some util and reuse
if (existingFilter instanceof FieldFilter) {
if ( fieldName == null || (fieldName != null && ((FieldFilter)existingFilter).getField().equals(fieldName))) {
fieldFilters.add((FieldFilter)existingFilter);
}
} else if (existingFilter instanceof CompositeDatasetFilter) {
for (DatasetFilter filter : ((CompositeDatasetFilter)existingFilter).getFilters())
{
getFieldFilters(filter, fieldFilters, fieldName);
}
}
}

private String getActionData(JsonExporterContext context, SortData sortData) {
return "{\"actionName\":\"sortica\",\"sortData\":" + JacksonUtil.getInstance(context.getJasperReportsContext()).getJsonString(sortData)+ "}";
}
Expand All @@ -283,8 +271,8 @@ private List<FieldFilter> getExistingFiltersForField(
// get existing filter as JSON string
String serializedFilters = "[]";
JRPropertiesMap propertiesMap = dataset.getPropertiesMap();
if (propertiesMap.getProperty(FilterCommand.DATASET_FILTER_PROPERTY) != null) {
serializedFilters = propertiesMap.getProperty(FilterCommand.DATASET_FILTER_PROPERTY);
if (propertiesMap.getProperty(HeaderToolbarElement.DATASET_FILTER_PROPERTY) != null) {
serializedFilters = propertiesMap.getProperty(HeaderToolbarElement.DATASET_FILTER_PROPERTY);
}

List<? extends DatasetFilter> existingFilters = JacksonUtil.getInstance(jasperReportsContext).loadList(serializedFilters, FieldFilter.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class FilterCommand implements Command

private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;

public static final String DATASET_FILTER_PROPERTY = "net.sf.jasperreports.filters";
public static final String DATASET_FILTER_PROPERTY = "net.sf.jasperreports.filters"; //FIXME7 deprecate

private JasperReportsContext jasperReportsContext;
protected JRDesignDataset dataset;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2023 Cloud Software Group, Inc. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.jasperreports.interactivity;

import java.util.Collections;
import java.util.List;

import net.sf.jasperreports.components.headertoolbar.HeaderToolbarElement;
import net.sf.jasperreports.components.headertoolbar.json.HeaderToolbarElementJsonHandler;
import net.sf.jasperreports.components.sort.SortElement;
import net.sf.jasperreports.components.sort.SortElementHtmlHandler;
import net.sf.jasperreports.components.sort.SortElementJsonHandler;
import net.sf.jasperreports.crosstabs.interactive.CrosstabInteractiveJsonHandler;
import net.sf.jasperreports.engine.JRPropertiesMap;
import net.sf.jasperreports.engine.export.GenericElementHandler;
import net.sf.jasperreports.engine.export.GenericElementHandlerBundle;
import net.sf.jasperreports.engine.export.HtmlExporter;
import net.sf.jasperreports.engine.export.JsonExporter;
import net.sf.jasperreports.engine.fill.JRFillCrosstab;
import net.sf.jasperreports.engine.xml.JRXmlConstants;
import net.sf.jasperreports.extensions.ExtensionsRegistry;
import net.sf.jasperreports.extensions.ExtensionsRegistryFactory;


/**
* @author Teodor Danciu (teodord@users.sourceforge.net)
*/
public class InteractivyExtensionsRegistryFactory implements ExtensionsRegistryFactory
{
private static final GenericElementHandlerBundle HANDLER_BUNDLE =
new GenericElementHandlerBundle()
{
@Override
public String getNamespace()
{
return JRXmlConstants.JASPERREPORTS_NAMESPACE;
}

@Override
public GenericElementHandler getHandler(String elementName,
String exporterKey)
{
if (SortElement.SORT_ELEMENT_NAME.equals(elementName))
{
if (HtmlExporter.HTML_EXPORTER_KEY.equals(exporterKey))
{
return new SortElementHtmlHandler();
} else if (JsonExporter.JSON_EXPORTER_KEY.equals(exporterKey))
{
return new SortElementJsonHandler();
}
}
if (HeaderToolbarElement.ELEMENT_NAME.equals(elementName) && JsonExporter.JSON_EXPORTER_KEY.equals(exporterKey))
{
return new HeaderToolbarElementJsonHandler();
}

if (JRFillCrosstab.CROSSTAB_INTERACTIVE_ELEMENT_NAME.equals(elementName))
{
if (JsonExporter.JSON_EXPORTER_KEY.equals(exporterKey))
{
return new CrosstabInteractiveJsonHandler();
}
}

return null;
}
};

private static final ExtensionsRegistry defaultExtensionsRegistry =
new ExtensionsRegistry()
{
@Override
public <T> List<T> getExtensions(Class<T> extensionType)
{
if (GenericElementHandlerBundle.class.equals(extensionType))
{
return (List<T>) Collections.singletonList((Object)HANDLER_BUNDLE);
}
return null;
}
};

@Override
public ExtensionsRegistry createRegistry(String registryId, JRPropertiesMap properties)
{
return defaultExtensionsRegistry;
}
}
Loading

0 comments on commit 74627ef

Please sign in to comment.