Skip to content

Instantly share code, notes, and snippets.

@ChangdongLi
Forked from siepkes/install_birt_in_maven_repo.ksh
Last active March 13, 2024 15:04
Show Gist options
  • Save ChangdongLi/f354b36ed5f1b92bbb333b811860e0e3 to your computer and use it in GitHub Desktop.
Save ChangdongLi/f354b36ed5f1b92bbb333b811860e0e3 to your computer and use it in GitHub Desktop.

To create a BIRT runtime Maven artifact, please download birt-runtime-4.13.0-20230309.zip, unzip it to /tmp folder, then run the command

./src/main/scripts/install_birt_in_maven_repo.sh

This script was tested in macOS. It should work in Linux as well. It will generate this runtime artifact under the com.friss.org.eclipse.birt group ID.

All the dependencies will be installed into the local Maven repository ~/.m2/repository/.

Once it's successfully, this runtime artifact can be referred by the code

<dependency>
<groupId>com.friss.org.eclipse.birt</groupId>`
<artifactId>org.eclipse.birt.runtime</artifactId>
<version>4.14.0</version>
</dependency>

This runtime artifact doesn't import all the jars in the ReportEngine/lib folder. It may miss some jars if you use some rare BIRT report features.

Note Since BIRT 4.9.0, the minimum Java version required is 11. To run the unit tests, we need Java 11+.

import java.io.InputStream;
import java.util.Map;
import java.util.logging.Level;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* BIRT Report Engine.
*/
public class BirtEngine {
private static boolean platformStarted = false;
private static IReportEngine birtEngine = null;
private static final Logger logger = LoggerFactory.getLogger(BirtEngine.class);
/**
* Start the BIRT Report Platform.
*
* @return IReportEngine
*/
public static synchronized IReportEngine startPlatform() {
if (birtEngine != null) {
logger.info("Birt Platform Status: Running...");
return birtEngine;
}
logger.info("Starting Birt Platform...");
EngineConfig config = new EngineConfig();
config.setLogConfig("/tmp", Level.FINEST);
if (!platformStarted) {
try {
Platform.startup(config);
platformStarted = true;
} catch (BirtException e) {
e.printStackTrace();
logger.error("Exception starting Birt:" + e.getMessage());
}
}
if (birtEngine == null) {
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
birtEngine = factory.createReportEngine(config);
}
return birtEngine;
}
/**
* Stop the BIRT Report Platform.
*/
public static synchronized void stopPlatform() {
if (birtEngine != null) {
birtEngine.destroy();
birtEngine = null;
}
if (platformStarted) {
Platform.shutdown();
platformStarted = false;
}
}
public static void runBirtReport(IReportEngine engine, InputStream designInputStream, String reportFormat,
Map<String,Object> parameter, String outputFileName
) throws EngineException {
logger.info("Run report " + designInputStream.toString() + " with " + reportFormat + " output");
// find the emitter
String emitterId = "";
EmitterInfo[] emitterInfos = engine.getEmitterInfo();
for (EmitterInfo emitterInfo : emitterInfos) {
logger.debug("emitter info " + emitterInfo.getID() + " with " + emitterInfo.getFormat() + " format");
if (emitterInfo.getFormat().equalsIgnoreCase(reportFormat)) {
emitterId = emitterInfo.getID();
break;
}
}
logger.debug("Got emitter: " + emitterId);
// open design
IReportRunnable report;
synchronized (BirtEngine.class) {
report = engine.openReportDesign(designInputStream);
}
IRunAndRenderTask runAndRenderTask = engine.createRunAndRenderTask(report);
// pass parameters
runAndRenderTask.setParameterValues(parameter);
// render options
IRenderOption options;
options = new HTMLRenderOption();
logger.debug("Type of Output for report:" + reportFormat);
if ("pdf".equalsIgnoreCase(reportFormat)
|| "png".equalsIgnoreCase(reportFormat)) {
reportFormat = HTMLRenderOption.OUTPUT_FORMAT_PDF;
//PDF emitter has a bug to render SVG. so SVG isn't supported well. see https://www.eclipse.org/forums/index.php/t/207971/
engine.getConfig().getAppContext().put(EngineConstants.APPCONTEXT_CHART_RESOLUTION, 300);
options.setSupportedImageFormats("PNG;GIF;JPG;BMP;SWF;SVG");
}
else if ("html".equalsIgnoreCase(reportFormat)) {
reportFormat = HTMLRenderOption.OUTPUT_FORMAT_HTML;
engine.getConfig().getAppContext().put(EngineConstants.APPCONTEXT_CHART_RESOLUTION, 300);
options.setSupportedImageFormats("PNG;GIF;JPG;BMP;SWF;SVG");
}
options.setOutputFormat(reportFormat);
options.setOutputFileName(outputFileName);
options.setEmitterID(emitterId);
runAndRenderTask.setRenderOption(options);
// now we are ready to execute the report!
runAndRenderTask.run();
runAndRenderTask.close();
logger.info("End of report run");
}
}
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import static org.junit.jupiter.api.Assertions.assertNotNull;
class BirtRuntimeTest {
private static IReportEngine engine = null;
@BeforeAll
static void setup() {
engine = BirtEngine.startPlatform();
assertNotNull(engine);
}
@AfterAll
static void complete() {
BirtEngine.stopPlatform();
}
static Stream<Arguments> getReportFormatList() {
return Stream.of(
Arguments.of("pdf", "/tmp/REPORT_NAME.pdf"),
Arguments.of("doc", "/tmp/REPORT_NAME.doc"),
Arguments.of("docx", "/tmp/REPORT_NAME.docx"),
Arguments.of("xls", "/tmp/REPORT_NAME.xls"),
Arguments.of("xlsx", "/tmp/REPORT_NAME.xlsx"),
Arguments.of("xls_spudsoft", "/tmp/REPORT_NAME_spudsoft.xls"),
Arguments.of("html", "/tmp/REPORT_NAME.html"),
Arguments.of("odt", "/tmp/REPORT_NAME.odt"),
Arguments.of("ppt", "/tmp/REPORT_NAME.ppt"), //BIRT generates a ppt file which can't be opened in MS Office 2010+, this is a known issue.
Arguments.of("pptx", "/tmp/REPORT_NAME.pptx")
);
}
@ParameterizedTest
@MethodSource("getReportFormatList")
public void testDifferentOutputWithImageAndGridAndOtherElements(String reportFormat,
String outputFileName) throws EngineException {
String designFileName = "hello_world";
Map<String, Object> parameter = new HashMap<>();
parameter.put("paramString", "hello BIRT");
parameter.put("paramInteger", 99);
parameter.put("paramList", 2);
InputStream designInputStream = getClass().getClassLoader().getResourceAsStream(designFileName + ".rptdesign");
assertNotNull(designInputStream);
BirtEngine.runBirtReport(engine, designInputStream, reportFormat, parameter, outputFileName.replace("REPORT_NAME", designFileName));
}
@ParameterizedTest
@MethodSource("getReportFormatList")
public void testDatabaseConnection(String reportFormat, String outputFileName) throws EngineException {
String designFileName = "hello_world_chart";
Map<String, Object> parameter = new HashMap<>();
parameter.put("paramCust", BigDecimal.valueOf(99.99));
InputStream designInputStream = getClass().getClassLoader().getResourceAsStream(designFileName + ".rptdesign");
assertNotNull(designInputStream);
BirtEngine.runBirtReport(engine, designInputStream, reportFormat, parameter, outputFileName.replace("REPORT_NAME", designFileName));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.24" id="1">
<property name="author">Bertie the Platypus</property>
<property name="comments">Not a very interesting report, just a "Hello World" with a param.</property>
<property name="createdBy">Eclipse BIRT Designer Version 4.9.0.v202203150031</property>
<text-property name="title">Birt Engine Simple Example</text-property>
<html-property name="description">Sample report used to test the BIRT viewer.</html-property>
<property name="units">mm</property>
<property name="layoutPreference">auto layout</property>
<list-property name="configVars">
<structure>
<property name="name">sample</property>
<property name="value">aaa</property>
</structure>
</list-property>
<parameters>
<scalar-parameter name="paramString" id="2">
<text-property name="displayName">Sample Parameter</text-property>
<property name="hidden">false</property>
<text-property name="promptText">Parameter of String</text-property>
<property name="valueType">static</property>
<property name="isRequired">false</property>
<property name="dataType">string</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant"></value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="concealValue">false</property>
<property name="controlType">text-box</property>
<structure name="format">
<property name="category">Unformatted</property>
</structure>
</scalar-parameter>
<scalar-parameter name="paramInteger" id="2367">
<text-property name="promptText">Parameter of Integer</text-property>
<property name="valueType">static</property>
<property name="dataType">integer</property>
<property name="distinct">true</property>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">text-box</property>
<structure name="format">
<property name="category">Unformatted</property>
</structure>
</scalar-parameter>
<scalar-parameter name="paramList" id="2368">
<text-property name="promptText">Parameter as List</text-property>
<property name="valueType">static</property>
<property name="dataType">integer</property>
<property name="distinct">true</property>
<list-property name="selectionList">
<structure>
<property name="value">1</property>
<property name="label">List entry 01</property>
</structure>
<structure>
<property name="value">2</property>
<property name="label">List entry 02</property>
</structure>
<structure>
<property name="value">3</property>
<property name="label">List entry 03</property>
</structure>
</list-property>
<property name="paramType">simple</property>
<property name="controlType">list-box</property>
<property name="mustMatch">true</property>
<property name="fixedOrder">true</property>
<structure name="format">
<property name="category">Unformatted</property>
</structure>
</scalar-parameter>
</parameters>
<page-setup>
<simple-master-page name="Simple MasterPage" id="3">
<property name="type">a4</property>
<property name="orientation">landscape</property>
<property name="topMargin">1in</property>
<property name="leftMargin">1.25in</property>
<property name="bottomMargin">1in</property>
<property name="rightMargin">1.25in</property>
</simple-master-page>
</page-setup>
<body>
<grid id="27">
<property name="fontFamily">sans-serif</property>
<property name="borderBottomColor">#4682B4</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">medium</property>
<property name="borderLeftColor">#4682B4</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">medium</property>
<property name="borderRightColor">#4682B4</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">medium</property>
<property name="borderTopColor">#4682B4</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">medium</property>
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<property name="width">99%</property>
<column id="28"/>
<row id="36">
<property name="backgroundColor">#4682B4</property>
<cell id="37">
<grid id="38">
<column id="39">
<property name="width">160mm</property>
</column>
<column id="40">
<property name="textAlign">right</property>
</column>
<row id="41">
<property name="fontWeight">bold</property>
<property name="color">white</property>
<property name="verticalAlign">middle</property>
<cell id="42">
<label id="50">
<property name="fontSize">12pt</property>
<property name="marginLeft">8pt</property>
<text-property name="text">BIRT Engine</text-property>
</label>
<label id="51">
<property name="fontSize">18pt</property>
<property name="marginLeft">8pt</property>
<text-property name="text">Congratulations!</text-property>
</label>
</cell>
<cell id="43">
<grid id="45">
<property name="backgroundColor">white</property>
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<property name="textAlign">center</property>
<property name="width">200px</property>
<column id="46"/>
<row id="47">
<cell id="48">
<image id="44">
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<property name="height">48px</property>
<property name="width">186px</property>
<property name="source">embed</property>
<property name="imageName">BIRT-Logo.png</property>
</image>
</cell>
</row>
</grid>
</cell>
</row>
</grid>
</cell>
</row>
<row id="29">
<cell id="30">
<text id="17">
<property name="fontSize">12pt</property>
<property name="fontWeight">bold</property>
<property name="color">#353535</property>
<property name="marginTop">32pt</property>
<property name="marginLeft">20pt</property>
<property name="marginBottom">20pt</property>
<property name="contentType">html</property>
<text-property name="content"><![CDATA[If you can see this report, it means that the BIRT Engine is installed correctly.]]></text-property>
</text>
</cell>
</row>
<row id="31">
<cell id="32">
<grid id="18">
<property name="fontSize">9pt</property>
<property name="borderBottomColor">#C0C0C0</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1px</property>
<property name="borderLeftColor">#C0C0C0</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">1px</property>
<property name="borderRightColor">#C0C0C0</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">1px</property>
<property name="borderTopColor">#C0C0C0</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1px</property>
<property name="marginTop">16pt</property>
<property name="marginLeft">16pt</property>
<property name="marginBottom">32pt</property>
<property name="marginRight">16pt</property>
<column id="19">
<property name="width">56mm</property>
</column>
<column id="20">
<property name="width">156mm</property>
</column>
<row id="2377">
<property name="backgroundColor">silver</property>
<property name="fontWeight">bold</property>
<property name="color">white</property>
<property name="verticalAlign">middle</property>
<cell id="2378">
<property name="colSpan">2</property>
<property name="rowSpan">1</property>
<label id="2380">
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<text-property name="text">Example of parameter definitions</text-property>
</label>
</cell>
</row>
<row id="21">
<property name="verticalAlign">middle</property>
<cell id="22">
<label id="23">
<property name="marginTop">8pt</property>
<property name="marginLeft">8pt</property>
<property name="marginBottom">8pt</property>
<property name="marginRight">8pt</property>
<text-property name="text">Sample Parameter "String":</text-property>
</label>
</cell>
<cell id="24">
<data id="2370">
<list-property name="boundDataColumns">
<structure>
<property name="name">paramString</property>
<expression name="expression" type="javascript">params["paramString"].value</expression>
<property name="dataType">string</property>
<property name="allowExport">true</property>
</structure>
</list-property>
<property name="resultSetColumn">paramString</property>
</data>
</cell>
</row>
<row id="33">
<property name="verticalAlign">middle</property>
<cell id="34">
<label id="2369">
<property name="marginTop">8pt</property>
<property name="marginLeft">8pt</property>
<property name="marginBottom">8pt</property>
<property name="marginRight">8pt</property>
<text-property name="text">Sample Parameter "Integer":</text-property>
</label>
</cell>
<cell id="35">
<data id="2371">
<list-property name="boundDataColumns">
<structure>
<property name="name">paramInteger</property>
<expression name="expression" type="javascript">params["paramInteger"].value</expression>
<property name="dataType">integer</property>
<property name="allowExport">true</property>
</structure>
</list-property>
<property name="resultSetColumn">paramInteger</property>
</data>
</cell>
</row>
<row id="2372">
<property name="verticalAlign">middle</property>
<cell id="2373">
<label id="2376">
<property name="marginTop">8pt</property>
<property name="marginLeft">8pt</property>
<property name="marginBottom">8pt</property>
<property name="marginRight">8pt</property>
<text-property name="text">Sample Parameter "List":</text-property>
</label>
</cell>
<cell id="2374">
<data id="2375">
<list-property name="boundDataColumns">
<structure>
<property name="name">paramList</property>
<expression name="expression" type="javascript">params["paramList"].value</expression>
<property name="dataType">integer</property>
<property name="allowExport">true</property>
</structure>
</list-property>
<property name="resultSetColumn">paramList</property>
</data>
</cell>
</row>
</grid>
</cell>
</row>
<row id="52">
<property name="borderTopColor">#C0C0C0</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1px</property>
<cell id="53">
<text-data id="2366">
<property name="fontFamily">sans-serif</property>
<property name="fontSize">9pt</property>
<property name="marginTop">4pt</property>
<property name="marginLeft">16pt</property>
<property name="marginBottom">4pt</property>
<expression name="valueExpr">this.value = "Created at: "+Formatter.format(BirtDateTime.today(),'MM.dd.yyyy');</expression>
<property name="contentType">html</property>
</text-data>
</cell>
</row>
</grid>
</body>
<list-property name="images">
<structure>
<property name="name">BIRT-Logo.png</property>
<property name="type">image/png</property>
<property name="data">
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
</property>
</structure>
</list-property>
</report>
<?xml version="1.0" encoding="UTF-8"?>
<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.24" id="1">
<property name="author">Bertie the Platypus</property>
<property name="comments">Not a very interesting report, just a "Hello World" with a param.</property>
<property name="createdBy">Eclipse BIRT Designer Version 4.14.0.v202306101704</property>
<text-property name="title">Birt Engine Chart Example</text-property>
<html-property name="description">Sample report used to test the BIRT viewer.</html-property>
<property name="units">mm</property>
<property name="layoutPreference">fixed layout</property>
<list-property name="configVars">
<structure>
<property name="name">sample</property>
<property name="value">aaa</property>
</structure>
</list-property>
<parameters>
<scalar-parameter name="paramCust" id="59">
<text-property name="promptText">CustomerNumber in list less than</text-property>
<property name="valueType">static</property>
<property name="isRequired">true</property>
<property name="dataType">decimal</property>
<property name="distinct">true</property>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">text-box</property>
<structure name="format">
<property name="category">Unformatted</property>
</structure>
</scalar-parameter>
</parameters>
<data-sources>
<oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="Data Source" id="26">
<property name="odaDriverClass">org.eclipse.birt.report.data.oda.sampledb.Driver</property>
<property name="odaURL">jdbc:classicmodels:sampledb</property>
<property name="odaUser">ClassicModels</property>
</oda-data-source>
</data-sources>
<data-sets>
<oda-data-set extensionID="org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" name="Data Set" id="27">
<list-property name="resultSetHints">
<structure>
<property name="position">1</property>
<property name="name">CUSTOMERNUMBER</property>
<property name="dataType">integer</property>
<property name="nativeDataType">4</property>
</structure>
<structure>
<property name="position">2</property>
<property name="name">CUSTOMERNAME</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">3</property>
<property name="name">CONTACTLASTNAME</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">4</property>
<property name="name">CONTACTFIRSTNAME</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">5</property>
<property name="name">PHONE</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">6</property>
<property name="name">ADDRESSLINE1</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">7</property>
<property name="name">ADDRESSLINE2</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">8</property>
<property name="name">CITY</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">9</property>
<property name="name">STATE</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">10</property>
<property name="name">POSTALCODE</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">11</property>
<property name="name">COUNTRY</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">12</property>
<property name="name">SALESREPEMPLOYEENUMBER</property>
<property name="dataType">integer</property>
<property name="nativeDataType">4</property>
</structure>
<structure>
<property name="position">13</property>
<property name="name">CREDITLIMIT</property>
<property name="dataType">float</property>
<property name="nativeDataType">8</property>
</structure>
</list-property>
<structure name="cachedMetaData">
<list-property name="resultSet">
<structure>
<property name="position">1</property>
<property name="name">CUSTOMERNUMBER</property>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="position">2</property>
<property name="name">CUSTOMERNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">3</property>
<property name="name">CONTACTLASTNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">4</property>
<property name="name">CONTACTFIRSTNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">5</property>
<property name="name">PHONE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">6</property>
<property name="name">ADDRESSLINE1</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">7</property>
<property name="name">ADDRESSLINE2</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">8</property>
<property name="name">CITY</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">9</property>
<property name="name">STATE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">10</property>
<property name="name">POSTALCODE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">11</property>
<property name="name">COUNTRY</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">12</property>
<property name="name">SALESREPEMPLOYEENUMBER</property>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="position">13</property>
<property name="name">CREDITLIMIT</property>
<property name="dataType">float</property>
</structure>
</list-property>
</structure>
<property name="dataSource">Data Source</property>
<list-property name="resultSet">
<structure>
<property name="position">1</property>
<property name="name">CUSTOMERNUMBER</property>
<property name="nativeName">CUSTOMERNUMBER</property>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="position">2</property>
<property name="name">CUSTOMERNAME</property>
<property name="nativeName">CUSTOMERNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">3</property>
<property name="name">CONTACTLASTNAME</property>
<property name="nativeName">CONTACTLASTNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">4</property>
<property name="name">CONTACTFIRSTNAME</property>
<property name="nativeName">CONTACTFIRSTNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">5</property>
<property name="name">PHONE</property>
<property name="nativeName">PHONE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">6</property>
<property name="name">ADDRESSLINE1</property>
<property name="nativeName">ADDRESSLINE1</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">7</property>
<property name="name">ADDRESSLINE2</property>
<property name="nativeName">ADDRESSLINE2</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">8</property>
<property name="name">CITY</property>
<property name="nativeName">CITY</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">9</property>
<property name="name">STATE</property>
<property name="nativeName">STATE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">10</property>
<property name="name">POSTALCODE</property>
<property name="nativeName">POSTALCODE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">11</property>
<property name="name">COUNTRY</property>
<property name="nativeName">COUNTRY</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">12</property>
<property name="name">SALESREPEMPLOYEENUMBER</property>
<property name="nativeName">SALESREPEMPLOYEENUMBER</property>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="position">13</property>
<property name="name">CREDITLIMIT</property>
<property name="nativeName">CREDITLIMIT</property>
<property name="dataType">float</property>
</structure>
</list-property>
<xml-property name="queryText"><![CDATA[select *
from CLASSICMODELS.CUSTOMERS]]></xml-property>
</oda-data-set>
</data-sets>
<page-setup>
<simple-master-page name="Simple MasterPage" id="3">
<property name="type">custom</property>
<property name="orientation">landscape</property>
<property name="topMargin">5mm</property>
<property name="leftMargin">5mm</property>
<property name="bottomMargin">5mm</property>
<property name="rightMargin">5mm</property>
<property name="height">248mm</property>
<property name="width">297mm</property>
</simple-master-page>
</page-setup>
<body>
<grid id="60">
<property name="fontFamily">sans-serif</property>
<property name="borderBottomColor">#4682B4</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">medium</property>
<property name="borderLeftColor">#4682B4</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">medium</property>
<property name="borderRightColor">#4682B4</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">medium</property>
<property name="borderTopColor">#4682B4</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">medium</property>
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<property name="width">284mm</property>
<column id="61"/>
<row id="36">
<property name="backgroundColor">#4682B4</property>
<cell id="62">
<grid id="63">
<column id="64">
<property name="width">160mm</property>
</column>
<column id="40">
<property name="textAlign">right</property>
</column>
<row id="65">
<property name="fontWeight">bold</property>
<property name="color">white</property>
<property name="verticalAlign">middle</property>
<cell id="66">
<label id="67">
<property name="fontSize">12pt</property>
<property name="marginLeft">8pt</property>
<text-property name="text">BIRT Engine</text-property>
</label>
<label id="68">
<property name="fontSize">18pt</property>
<property name="marginLeft">8pt</property>
<text-property name="text">Congratulations!</text-property>
</label>
</cell>
<cell id="43">
<grid id="69">
<property name="backgroundColor">white</property>
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<property name="textAlign">center</property>
<property name="width">200px</property>
<column id="70"/>
<row id="71">
<cell id="48">
<image id="72">
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<property name="height">48px</property>
<property name="width">186px</property>
<property name="source">embed</property>
<property name="imageName">BIRT-Logo.png</property>
</image>
</cell>
</row>
</grid>
</cell>
</row>
</grid>
</cell>
</row>
<row id="73">
<cell id="74">
<text id="75">
<property name="fontSize">12pt</property>
<property name="fontWeight">bold</property>
<property name="color">#353535</property>
<property name="marginTop">32pt</property>
<property name="marginLeft">20pt</property>
<property name="marginBottom">20pt</property>
<property name="contentType">html</property>
<text-property name="content"><![CDATA[If you can see this report, it means that the BIRT Engine is installed correctly.]]></text-property>
</text>
</cell>
</row>
<row id="76">
<cell id="32">
<grid id="77">
<property name="fontSize">9pt</property>
<property name="borderBottomColor">#C0C0C0</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1px</property>
<property name="borderLeftColor">#C0C0C0</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">1px</property>
<property name="borderRightColor">#C0C0C0</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">1px</property>
<property name="borderTopColor">#C0C0C0</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1px</property>
<property name="marginTop">16pt</property>
<property name="marginLeft">16pt</property>
<property name="marginBottom">32pt</property>
<property name="marginRight">16pt</property>
<column id="78">
<property name="width">72mm</property>
</column>
<column id="79">
<property name="width">180mm</property>
</column>
<row id="2377">
<property name="backgroundColor">silver</property>
<property name="fontWeight">bold</property>
<property name="color">white</property>
<property name="verticalAlign">middle</property>
<cell id="2378">
<property name="colSpan">2</property>
<property name="rowSpan">1</property>
<label id="2380">
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<text-property name="text">Example of parameter definitions</text-property>
</label>
</cell>
</row>
<row id="2385">
<property name="verticalAlign">middle</property>
<cell id="2386">
<label id="2369">
<property name="marginTop">8pt</property>
<property name="marginLeft">8pt</property>
<property name="marginBottom">8pt</property>
<property name="marginRight">8pt</property>
<text-property name="text">Customer no. Parameter "Integer":</text-property>
</label>
</cell>
<cell id="2387">
<data id="2391">
<list-property name="boundDataColumns">
<structure>
<property name="name">paramCust</property>
<expression name="expression" type="javascript">params["paramCust"]</expression>
<property name="dataType">decimal</property>
</structure>
</list-property>
<property name="resultSetColumn">paramCust</property>
</data>
</cell>
</row>
</grid>
</cell>
</row>
<row id="2389">
<cell id="2390">
<table id="28">
<property name="marginLeft">16pt</property>
<property name="marginRight">16pt</property>
<property name="dataSet">Data Set</property>
<list-property name="boundDataColumns">
<structure>
<property name="name">CUSTOMERNUMBER</property>
<text-property name="displayName">CUSTOMERNUMBER</text-property>
<expression name="expression" type="javascript">dataSetRow["CUSTOMERNUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">CUSTOMERNAME</property>
<text-property name="displayName">CUSTOMERNAME</text-property>
<expression name="expression" type="javascript">dataSetRow["CUSTOMERNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CONTACTLASTNAME</property>
<text-property name="displayName">CONTACTLASTNAME</text-property>
<expression name="expression" type="javascript">dataSetRow["CONTACTLASTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CONTACTFIRSTNAME</property>
<text-property name="displayName">CONTACTFIRSTNAME</text-property>
<expression name="expression" type="javascript">dataSetRow["CONTACTFIRSTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">PHONE</property>
<text-property name="displayName">PHONE</text-property>
<expression name="expression" type="javascript">dataSetRow["PHONE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">ADDRESSLINE1</property>
<text-property name="displayName">ADDRESSLINE1</text-property>
<expression name="expression" type="javascript">dataSetRow["ADDRESSLINE1"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">ADDRESSLINE2</property>
<text-property name="displayName">ADDRESSLINE2</text-property>
<expression name="expression" type="javascript">dataSetRow["ADDRESSLINE2"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CITY</property>
<text-property name="displayName">CITY</text-property>
<expression name="expression" type="javascript">dataSetRow["CITY"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">STATE</property>
<text-property name="displayName">STATE</text-property>
<expression name="expression" type="javascript">dataSetRow["STATE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">POSTALCODE</property>
<text-property name="displayName">POSTALCODE</text-property>
<expression name="expression" type="javascript">dataSetRow["POSTALCODE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">COUNTRY</property>
<text-property name="displayName">COUNTRY</text-property>
<expression name="expression" type="javascript">dataSetRow["COUNTRY"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">SALESREPEMPLOYEENUMBER</property>
<text-property name="displayName">SALESREPEMPLOYEENUMBER</text-property>
<expression name="expression" type="javascript">dataSetRow["SALESREPEMPLOYEENUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">CREDITLIMIT</property>
<text-property name="displayName">CREDITLIMIT</text-property>
<expression name="expression" type="javascript">dataSetRow["CREDITLIMIT"]</expression>
<property name="dataType">float</property>
</structure>
</list-property>
<property name="pageBreakInterval">50</property>
<column id="41">
<property name="width">72mm</property>
</column>
<column id="2405">
<property name="width">40mm</property>
</column>
<column id="42">
<property name="width">140mm</property>
</column>
<group id="44">
<property name="groupName">customernumber</property>
<property name="interval">interval</property>
<property name="intervalRange">30.0</property>
<property name="sortDirection">asc</property>
<expression name="keyExpr" type="javascript">row["CUSTOMERNUMBER"]</expression>
<property name="repeatHeader">true</property>
<property name="hideDetail">false</property>
<property name="pageBreakAfter">auto</property>
<property name="pageBreakBefore">auto</property>
<header>
<row id="45">
<property name="borderTopColor">#808080</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1px</property>
<cell id="46">
<text-data id="2397">
<property name="fontWeight">bold</property>
<property name="marginTop">12pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<expression name="valueExpr">"Customer no.: " + row["CUSTOMERNUMBER"]</expression>
<property name="contentType">html</property>
</text-data>
</cell>
<cell id="2401">
<property name="colSpan">2</property>
<property name="rowSpan">1</property>
<extended-item extensionName="Chart" name="NewChart" id="56">
<xml-property name="xmlRepresentation"><![CDATA[<model:ChartWithAxes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:attribute="http://www.birt.eclipse.org/ChartModelAttribute" xmlns:data="http://www.birt.eclipse.org/ChartModelData" xmlns:layout="http://www.birt.eclipse.org/ChartModelLayout" xmlns:model="http://www.birt.eclipse.org/ChartModel" xmlns:type="http://www.birt.eclipse.org/ChartModelType">
<Version>2.6.1</Version>
<Type>Bar Chart</Type>
<SubType>Side-by-side</SubType>
<Block>
<Children xsi:type="layout:TitleBlock">
<Bounds>
<Left>0.0</Left>
<Top>0.0</Top>
<Width>0.0</Width>
<Height>0.0</Height>
</Bounds>
<Insets>
<Top>3.0</Top>
<Left>3.0</Left>
<Bottom>3.0</Bottom>
<Right>3.0</Right>
</Insets>
<Row>-1</Row>
<Column>-1</Column>
<Rowspan>-1</Rowspan>
<Columnspan>-1</Columnspan>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Visible>true</Visible>
<Label>
<Caption>
<Value>Credit limit overview</Value>
<Font>
<Size>16.0</Size>
<Bold>true</Bold>
<Alignment>
<horizontalAlignment>Center</horizontalAlignment>
<verticalAlignment>Center</verticalAlignment>
</Alignment>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>true</Visible>
</Label>
</Children>
<Children xsi:type="layout:Plot">
<Bounds>
<Left>0.0</Left>
<Top>0.0</Top>
<Width>0.0</Width>
<Height>0.0</Height>
</Bounds>
<Insets>
<Top>3.0</Top>
<Left>3.0</Left>
<Bottom>3.0</Bottom>
<Right>3.0</Right>
</Insets>
<Row>-1</Row>
<Column>-1</Column>
<Rowspan>-1</Rowspan>
<Columnspan>-1</Columnspan>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Visible>true</Visible>
<HorizontalSpacing>5</HorizontalSpacing>
<VerticalSpacing>5</VerticalSpacing>
<ClientArea>
<Outline>
<Style>Solid</Style>
<Thickness>0</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>0.0</Left>
<Bottom>0.0</Bottom>
<Right>0.0</Right>
</Insets>
</ClientArea>
</Children>
<Children xsi:type="layout:Legend">
<Bounds>
<Left>0.0</Left>
<Top>0.0</Top>
<Width>0.0</Width>
<Height>0.0</Height>
</Bounds>
<Insets>
<Top>3.0</Top>
<Left>3.0</Left>
<Bottom>3.0</Bottom>
<Right>3.0</Right>
</Insets>
<Row>-1</Row>
<Column>-1</Column>
<Rowspan>-1</Rowspan>
<Columnspan>-1</Columnspan>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Visible>false</Visible>
<ClientArea>
<Outline>
<Style>Solid</Style>
<Thickness>0</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>2.0</Top>
<Left>2.0</Left>
<Bottom>2.0</Bottom>
<Right>2.0</Right>
</Insets>
</ClientArea>
<Text>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Text>
<Orientation>Vertical</Orientation>
<Direction>Top_Bottom</Direction>
<Separator>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>true</Visible>
</Separator>
<Position>Right</Position>
<ItemType>Series</ItemType>
<Title>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Title>
<TitlePosition>Above</TitlePosition>
</Children>
<Bounds>
<Left>0.0</Left>
<Top>0.0</Top>
<Width>212.0</Width>
<Height>130.0</Height>
</Bounds>
<Insets>
<Top>3.0</Top>
<Left>3.0</Left>
<Bottom>3.0</Bottom>
<Right>3.0</Right>
</Insets>
<Row>-1</Row>
<Column>-1</Column>
<Rowspan>-1</Rowspan>
<Columnspan>-1</Columnspan>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Visible>true</Visible>
</Block>
<Dimension>Two_Dimensional</Dimension>
<Units>Points</Units>
<SeriesThickness>10.0</SeriesThickness>
<ExtendedProperties>
<Name>enable.area.alt</Name>
<Value>false</Value>
</ExtendedProperties>
<SampleData>
<BaseSampleData>
<DataSetRepresentation>A, B, C</DataSetRepresentation>
</BaseSampleData>
<OrthogonalSampleData>
<DataSetRepresentation>5,4,12</DataSetRepresentation>
<SeriesDefinitionIndex>0</SeriesDefinitionIndex>
</OrthogonalSampleData>
</SampleData>
<Interactivity/>
<EmptyMessage>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</EmptyMessage>
<Axes>
<Type>Text</Type>
<Title>
<Caption>
<Value>Customer names</Value>
<Font>
<Size>14.0</Size>
<Bold>true</Bold>
<Alignment>
<horizontalAlignment>Center</horizontalAlignment>
<verticalAlignment>Center</verticalAlignment>
</Alignment>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Title>
<TitlePosition>Below</TitlePosition>
<AssociatedAxes>
<Type>Linear</Type>
<Title>
<Caption>
<Value>Y-Axis Title</Value>
<Font>
<Size>14.0</Size>
<Bold>true</Bold>
<Alignment>
<horizontalAlignment>Center</horizontalAlignment>
<verticalAlignment>Center</verticalAlignment>
</Alignment>
<Rotation>90.0</Rotation>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Title>
<TitlePosition>Left</TitlePosition>
<SeriesDefinitions>
<Query>
<Definition></Definition>
</Query>
<SeriesPalette>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>80</Red>
<Green>166</Green>
<Blue>218</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>242</Red>
<Green>88</Green>
<Blue>106</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>232</Red>
<Green>172</Green>
<Blue>57</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>255</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>64</Red>
<Green>128</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>170</Red>
<Green>85</Green>
<Blue>85</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>0</Blue>
</Entries>
</SeriesPalette>
<Series xsi:type="type:BarSeries">
<Visible>true</Visible>
<Label>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>true</Visible>
</Label>
<DataDefinition>
<Definition>row[&quot;CREDITLIMIT&quot;]</Definition>
<Grouping>
<GroupType>Text</GroupType>
<AggregateExpression>Sum</AggregateExpression>
</Grouping>
</DataDefinition>
<SeriesIdentifier></SeriesIdentifier>
<DataPoint>
<Components>
<Type>Orthogonal_Value</Type>
</Components>
<Separator>, </Separator>
</DataPoint>
<LabelPosition>Outside</LabelPosition>
<Stacked>false</Stacked>
<Riser>Rectangle</Riser>
</Series>
<Grouping>
<Enabled>false</Enabled>
<GroupingInterval>2.0</GroupingInterval>
<GroupType>Text</GroupType>
<AggregateExpression>Sum</AggregateExpression>
</Grouping>
<Sorting>Ascending</Sorting>
</SeriesDefinitions>
<Orientation>Vertical</Orientation>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>true</Visible>
</LineAttributes>
<Label>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>true</Visible>
</Label>
<LabelPosition>Left</LabelPosition>
<Staggered>false</Staggered>
<MajorGrid>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>196</Red>
<Green>196</Green>
<Blue>196</Blue>
</Color>
<Visible>false</Visible>
</LineAttributes>
<TickStyle>Across</TickStyle>
<TickAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>196</Red>
<Green>196</Green>
<Blue>196</Blue>
</Color>
<Visible>true</Visible>
</TickAttributes>
</MajorGrid>
<MinorGrid>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>225</Red>
<Green>225</Green>
<Blue>225</Blue>
</Color>
<Visible>false</Visible>
</LineAttributes>
<TickStyle>Across</TickStyle>
<TickAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>225</Red>
<Green>225</Green>
<Blue>225</Blue>
</Color>
<Visible>false</Visible>
</TickAttributes>
</MinorGrid>
<Scale>
<MinorGridsPerUnit>5</MinorGridsPerUnit>
<AutoExpand>true</AutoExpand>
</Scale>
<Origin>
<Type>Min</Type>
<Value xsi:type="data:NumberDataElement">
<Value>0.0</Value>
</Value>
</Origin>
<PrimaryAxis>true</PrimaryAxis>
<Percent>false</Percent>
</AssociatedAxes>
<SeriesDefinitions>
<Query>
<Definition></Definition>
</Query>
<SeriesPalette>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>80</Red>
<Green>166</Green>
<Blue>218</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>242</Red>
<Green>88</Green>
<Blue>106</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>232</Red>
<Green>172</Green>
<Blue>57</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>255</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>64</Red>
<Green>128</Green>
<Blue>128</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>192</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>170</Red>
<Green>85</Green>
<Blue>85</Blue>
</Entries>
<Entries xsi:type="attribute:ColorDefinition">
<Transparency>255</Transparency>
<Red>128</Red>
<Green>128</Green>
<Blue>0</Blue>
</Entries>
</SeriesPalette>
<Series>
<Visible>true</Visible>
<Label>
<Caption>
<Value></Value>
<Font>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>false</Visible>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>false</Visible>
</Label>
<DataDefinition>
<Definition>row[&quot;CUSTOMERNAME_1&quot;]</Definition>
</DataDefinition>
<SeriesIdentifier></SeriesIdentifier>
<DataPoint>
<Components>
<Type>Orthogonal_Value</Type>
</Components>
<Separator>, </Separator>
</DataPoint>
<LabelPosition>Outside</LabelPosition>
<Stacked>false</Stacked>
</Series>
<Grouping>
<Enabled>false</Enabled>
<GroupingInterval>2.0</GroupingInterval>
<GroupType>Text</GroupType>
<AggregateExpression>Sum</AggregateExpression>
</Grouping>
</SeriesDefinitions>
<Orientation>Horizontal</Orientation>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
<Visible>true</Visible>
</LineAttributes>
<Label>
<Caption>
<Value></Value>
<Font>
<Size>9.0</Size>
<Alignment/>
</Font>
</Caption>
<Background xsi:type="attribute:ColorDefinition">
<Transparency>0</Transparency>
<Red>255</Red>
<Green>255</Green>
<Blue>255</Blue>
</Background>
<Outline>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>0</Red>
<Green>0</Green>
<Blue>0</Blue>
</Color>
</Outline>
<Insets>
<Top>0.0</Top>
<Left>2.0</Left>
<Bottom>0.0</Bottom>
<Right>3.0</Right>
</Insets>
<Visible>true</Visible>
</Label>
<LabelPosition>Below</LabelPosition>
<Staggered>true</Staggered>
<MajorGrid>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>196</Red>
<Green>196</Green>
<Blue>196</Blue>
</Color>
<Visible>false</Visible>
</LineAttributes>
<TickStyle>Across</TickStyle>
<TickAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>196</Red>
<Green>196</Green>
<Blue>196</Blue>
</Color>
<Visible>true</Visible>
</TickAttributes>
</MajorGrid>
<MinorGrid>
<LineAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>225</Red>
<Green>225</Green>
<Blue>225</Blue>
</Color>
<Visible>false</Visible>
</LineAttributes>
<TickStyle>Across</TickStyle>
<TickAttributes>
<Style>Solid</Style>
<Thickness>1</Thickness>
<Color>
<Transparency>255</Transparency>
<Red>225</Red>
<Green>225</Green>
<Blue>225</Blue>
</Color>
<Visible>false</Visible>
</TickAttributes>
</MinorGrid>
<Scale>
<MinorGridsPerUnit>5</MinorGridsPerUnit>
</Scale>
<Origin>
<Type>Min</Type>
<Value xsi:type="data:NumberDataElement">
<Value>0.0</Value>
</Value>
</Origin>
<PrimaryAxis>true</PrimaryAxis>
<CategoryAxis>true</CategoryAxis>
<Percent>false</Percent>
</Axes>
<Orientation>Vertical</Orientation>
<UnitSpacing>50.0</UnitSpacing>
<Rotation/>
<ReverseCategory>false</ReverseCategory>
</model:ChartWithAxes>
]]></xml-property>
<property name="outputFormat">SVG</property>
<property name="inheritColumns">false</property>
<property name="marginTop">12pt</property>
<property name="marginBottom">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginRight">4pt</property>
<property name="height">64mm</property>
<property name="width">176mm</property>
<list-property name="boundDataColumns">
<structure>
<property name="name">CUSTOMERNUMBER_2</property>
<expression name="expression">dataSetRow["CUSTOMERNUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">CUSTOMERNAME_1</property>
<expression name="expression">dataSetRow["CUSTOMERNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CONTACTLASTNAME_1</property>
<expression name="expression">dataSetRow["CONTACTLASTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CONTACTFIRSTNAME_1</property>
<expression name="expression">dataSetRow["CONTACTFIRSTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">PHONE_1</property>
<expression name="expression">dataSetRow["PHONE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">ADDRESSLINE1_1</property>
<expression name="expression">dataSetRow["ADDRESSLINE1"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">ADDRESSLINE2_1</property>
<expression name="expression">dataSetRow["ADDRESSLINE2"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CITY_1</property>
<expression name="expression">dataSetRow["CITY"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">STATE_1</property>
<expression name="expression">dataSetRow["STATE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">POSTALCODE_1</property>
<expression name="expression">dataSetRow["POSTALCODE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">COUNTRY_1</property>
<expression name="expression">dataSetRow["COUNTRY"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">SALESREPEMPLOYEENUMBER_1</property>
<expression name="expression">dataSetRow["SALESREPEMPLOYEENUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">CREDITLIMIT_1</property>
<expression name="expression">dataSetRow["CREDITLIMIT"]</expression>
<property name="dataType">float</property>
</structure>
</list-property>
</extended-item>
</cell>
</row>
<row id="2392">
<property name="backgroundColor">gray</property>
<property name="fontWeight">bold</property>
<property name="color">white</property>
<cell id="2393">
<property name="colSpan">1</property>
<property name="rowSpan">1</property>
<label id="2395">
<property name="marginTop">4pt</property>
<property name="marginLeft">4pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<text-property name="text">Customer name</text-property>
</label>
</cell>
<cell id="2407">
<property name="colSpan">2</property>
<property name="rowSpan">1</property>
<property name="borderLeftColor">#FFFFFF</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">medium</property>
<label id="2396">
<property name="marginTop">4pt</property>
<property name="marginLeft">16pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<text-property name="text">Credit limit</text-property>
</label>
</cell>
</row>
</header>
<footer>
<row id="2398">
<property name="borderBottomColor">#808080</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1px</property>
<cell id="2399"/>
<cell id="2404"/>
<cell id="2400"/>
</row>
</footer>
</group>
<detail>
<row id="33">
<cell id="34">
<property name="colSpan">1</property>
<property name="rowSpan">1</property>
<data id="54">
<property name="marginTop">4pt</property>
<property name="marginLeft">16pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<property name="resultSetColumn">CUSTOMERNAME</property>
</data>
</cell>
<cell id="2406">
<property name="colSpan">2</property>
<property name="rowSpan">1</property>
<data id="55">
<property name="marginTop">4pt</property>
<property name="marginLeft">28pt</property>
<property name="marginBottom">4pt</property>
<property name="marginRight">4pt</property>
<structure name="numberFormat">
<property name="category">Fixed</property>
<property name="pattern">#,##0.00{RoundingMode=HALF_UP}</property>
</structure>
<property name="resultSetColumn">CREDITLIMIT</property>
</data>
</cell>
</row>
</detail>
</table>
<list id="57">
<property name="dataSet">Data Set</property>
<list-property name="boundDataColumns">
<structure>
<property name="name">CUSTOMERNUMBER</property>
<expression name="expression">dataSetRow["CUSTOMERNUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">CUSTOMERNAME</property>
<expression name="expression">dataSetRow["CUSTOMERNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CONTACTLASTNAME</property>
<expression name="expression">dataSetRow["CONTACTLASTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CONTACTFIRSTNAME</property>
<expression name="expression">dataSetRow["CONTACTFIRSTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">PHONE</property>
<expression name="expression">dataSetRow["PHONE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">ADDRESSLINE1</property>
<expression name="expression">dataSetRow["ADDRESSLINE1"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">ADDRESSLINE2</property>
<expression name="expression">dataSetRow["ADDRESSLINE2"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CITY</property>
<expression name="expression">dataSetRow["CITY"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">STATE</property>
<expression name="expression">dataSetRow["STATE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">POSTALCODE</property>
<expression name="expression">dataSetRow["POSTALCODE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">COUNTRY</property>
<expression name="expression">dataSetRow["COUNTRY"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">SALESREPEMPLOYEENUMBER</property>
<expression name="expression">dataSetRow["SALESREPEMPLOYEENUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">CREDITLIMIT</property>
<expression name="expression">dataSetRow["CREDITLIMIT"]</expression>
<property name="dataType">float</property>
</structure>
</list-property>
<property name="pageBreakInterval">50</property>
<list-property name="filter">
<structure>
<property name="operator">lt</property>
<expression name="expr" type="javascript">row["CUSTOMERNUMBER"]</expression>
<simple-property-list name="value1">
<value>params["paramCust"].value</value>
</simple-property-list>
<property name="updateAggregation">true</property>
</structure>
</list-property>
<detail>
<data id="58">
<property name="resultSetColumn">CITY</property>
</data>
</detail>
</list>
</cell>
</row>
<row id="52">
<property name="borderTopColor">#C0C0C0</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1px</property>
<cell id="2388">
<text-data id="2366">
<property name="fontFamily">sans-serif</property>
<property name="fontSize">9pt</property>
<property name="marginTop">4pt</property>
<property name="marginLeft">16pt</property>
<property name="marginBottom">4pt</property>
<expression name="valueExpr">this.value = "Created at: "+Formatter.format(BirtDateTime.today(),'MM.dd.yyyy');</expression>
<property name="contentType">html</property>
</text-data>
</cell>
</row>
</grid>
</body>
<list-property name="images">
<structure>
<property name="name">BIRT-Logo.png</property>
<property name="type">image/png</property>
<property name="data">
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
</property>
</structure>
</list-property>
</report>
#!/bin/bash
# This script was tested in macOS.
# Download 'birt-runtime-4.13.0-20230309.zip' BIRT runtime ZIP file, then unzip it.
# unzip ~/Downloads/birt-runtime-4.14.0-202312020807.zip -d /tmp/birt-runtime-4.14.0-202312020807
RUNTIME_PATH="/tmp/birt-runtime-4.14.0-202312020807"
LIB_PATH="${RUNTIME_PATH}/ReportEngine/lib"
ADDONS_PATH="${RUNTIME_PATH}/ReportEngine/addons"
GROUP_ID_BASE="com.friss.org.eclipse.birt"
rm -rf /tmp/pom.xml
cat <<EOT >>/tmp/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>${GROUP_ID_BASE}</groupId>
<artifactId>org.eclipse.birt.runtime</artifactId>
<version>4.14.0</version>
<packaging>jar</packaging>
<name>org.eclipse.birt.runtime_4.14.0.jar</name>
<description>the BIRT runtime artifact</description>
<url>https://projects.eclipse.org/projects/technology.birt</url>
<licenses>
<license>
<name>Eclipse Public License - v 1.0</name>
<url>http://www.eclipse.org/org/documents/epl-v10.html</url>
</license>
</licenses>
<dependencies>
EOT
function addToPom {
GROUP_ID="${1}"
ARTIFACT_ID="${2}"
ARTIFACT_VERSION="${3}"
cat <<EOT >> /tmp/pom.xml
<dependency>
<groupId>${GROUP_ID}</groupId>
<artifactId>${ARTIFACT_ID}</artifactId>
<version>${ARTIFACT_VERSION}</version>
</dependency>
EOT
}
function deploy {
FILE="${1}"
GROUP_ID="${2}"
ARTIFACT_ID="${3}"
ARTIFACT_VERSION="${4}"
# Reposilite will always serve the POM inside the JAR instead of the one we generate. Unfortunately this POM is
# incorrect (contains deps with -SNAPSHOT versions). Therefor we delete it from the JAR's.
zip --delete ${FILE} "META-INF/maven/*"
#mvn deploy:deploy-file -Durl=https://reposilite.serviceplanet.nl/third-party \
mvn deploy:deploy-file -Durl=file://${HOME}/.m2/repository \
-DgeneratePom=true \
-DrepositoryId=third-party \
-Dfile=${FILE} \
-DgroupId=${GROUP_ID} \
-DartifactId=${ARTIFACT_ID} \
-Dversion=${ARTIFACT_VERSION} \
-Dpackaging=jar \
-Ddescription="Eclipse BIRT Runtime"
addToPom ${GROUP_ID} ${ARTIFACT_ID} ${ARTIFACT_VERSION}
EOT
}
# Core
deploy "${LIB_PATH}/org.eclipse.core.runtime_3.30.0.v20231102-0719.jar" "${GROUP_ID_BASE}" "org.eclipse.core.runtime" "3.30.0"
deploy "${LIB_PATH}/org.eclipse.datatools.connectivity.oda.consumer_3.5.0.202311071249.jar" "${GROUP_ID_BASE}" "org.eclipse.datatools.connectivity.oda.consumer" "3.5.0"
deploy "${LIB_PATH}/org.eclipse.datatools.connectivity.oda_3.7.0.202311071249.jar" "${GROUP_ID_BASE}" "org.eclipse.datatools.connectivity.oda" "3.7.0"
deploy "${LIB_PATH}/org.eclipse.datatools.connectivity_1.15.0.202311071249.jar" "${GROUP_ID_BASE}" "org.eclipse.datatools.connectivity" "1.15.0"
deploy "${LIB_PATH}/org.eclipse.emf.common_2.29.0.v20230916-0637.jar" "${GROUP_ID_BASE}" "org.eclipse.emf.common" "2.29.0"
deploy "${LIB_PATH}/org.eclipse.emf.ecore.xmi_2.36.0.v20231002-1156.jar" "${GROUP_ID_BASE}" "org.eclipse.emf.ecore.xmi" "2.36.0"
deploy "${LIB_PATH}/org.eclipse.emf.ecore_2.35.0.v20230829-0934.jar" "${GROUP_ID_BASE}" "org.eclipse.emf.ecore" "2.35.0"
deploy "${LIB_PATH}/org.eclipse.equinox.common_3.18.200.v20231106-1826.jar" "${GROUP_ID_BASE}" "org.eclipse.equinox.common" "3.18.200"
deploy "${LIB_PATH}/org.eclipse.equinox.registry_3.11.400.v20231102-2218.jar" "${GROUP_ID_BASE}" "org.eclipse.equinox.registry" "3.11.400"
deploy "${LIB_PATH}/org.eclipse.osgi_3.18.600.v20231110-1900.jar" "${GROUP_ID_BASE}" "org.eclipse.osgi" "3.18.600"
#replace it with standard maven artifact to reduce conflicts with the project importing this runtime
#deploy "${LIB_PATH}/com.github.librepdf.openpdf_1.3.33.jar" "${GROUP_ID_BASE}" "com.github.librepdf.openpdf" "1.3.33"
addToPom "com.github.librepdf" "openpdf" "1.3.39"
#deploy "${LIB_PATH}/org.apache.batik.anim_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.anim" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-anim" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.awt.util_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.awt.util" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-awt-util" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.bridge_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.bridge" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-bridge" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.css_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.css" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-css" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.constants_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.constants" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-constants" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.dom_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.dom" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-dom" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.ext_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.ext" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-ext" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.gvt_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.gvt" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-gvt" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.i18n_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.i18n" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-i18n" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.parser_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.parser" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-parser" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.script_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.script" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-script" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.dom.svg_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.dom.svg" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-svg-dom" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.transcoder_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.transcoder" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-transcoder" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.util_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.util" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-util" "1.17"
#deploy "${LIB_PATH}/org.apache.batik.xml_1.17.0.v20231009-1000.jar" "${GROUP_ID_BASE}" "org.apache.batik.xml" "1.17.0"
addToPom "org.apache.xmlgraphics" "batik-xml" "1.17"
#deploy "${LIB_PATH}/org.apache.xerces_2.12.2.v20220131-0835.jar" "${GROUP_ID_BASE}" "org.apache.xerces" "2.12.2"
addToPom "xerces" "xercesImpl" "2.12.2"
#deploy "${LIB_PATH}/org.apache.xmlgraphics_2.9.0.v20230916-1600.jar" "${GROUP_ID_BASE}" "org.apache.xmlgraphics" "2.9.0"
addToPom "org.apache.xmlgraphics" "xmlgraphics-commons" "2.9"
#deploy "${LIB_PATH}/com.ibm.icu_74.1.0.jar" "${GROUP_ID_BASE}" "com.ibm.icu" "74.1.0"
addToPom "com.ibm.icu" "icu4j" "74.2"
#higher rhino version will break some reports.
#deploy "${LIB_PATH}/org.mozilla.javascript_1.7.10.v20221112-0806.jar" "${GROUP_ID_BASE}" "org.mozilla.javascript" "1.7.10"
addToPom "org.mozilla" "rhino" "1.7.10"
#this is not needed, JDK has included this
#deploy "${LIB_PATH}/javax.xml_1.3.4.v201005080400.jar" "${GROUP_ID_BASE}" "javax.xml" "1.3.4"
#bad package name in original BIRT runtime lib folder
#deploy "${LIB_PATH}/org.eclipse.orbit.xml-apis-ext_1.0.0.v20230923-0644.jar" "${GROUP_ID_BASE}" "w3c.dom.and.css" "1.0.0"
addToPom "org.eclipse.birt.runtime.3_7_1" "org.w3c.dom.svg" "1.1.0"
addToPom "org.eclipse.birt.runtime" "org.w3c.dom.smil" "1.0.1.v200903091627"
addToPom "org.eclipse.birt.runtime" "org.w3c.css.sac" "1.3.1.v200903091627"
#deploy "${LIB_PATH}/org.apache.commons.commons-collections4_4.4.0.jar" "${GROUP_ID_BASE}" "org.apache.commons.commons-collections4" "4.4.0"
addToPom "org.apache.commons" "commons-collections4" "4.4"
#deploy "${LIB_PATH}/org.apache.commons.commons-compress_1.25.0.jar" "${GROUP_ID_BASE}" "org.apache.commons.commons-compress" "1.25.0"
addToPom "org.apache.commons" "commons-compress" "1.25.0"
#deploy "${LIB_PATH}/org.apache.commons.commons-io_2.15.0.jar" "${GROUP_ID_BASE}" "org.apache.commons.commons-io" "2.15.0"
addToPom "commons-io" "commons-io" "2.15.1"
#deploy "${LIB_PATH}/org.apache.logging.log4j.api_2.21.1.jar" "${GROUP_ID_BASE}" "org.apache.logging.log4j.api" "2.21.1"
addToPom "org.apache.logging.log4j" "log4j-api" "2.22.1"
#deploy "${LIB_PATH}/org.apache.poi_5.2.4.v20231007-1530.jar" "${GROUP_ID_BASE}" "org.apache.poi" "5.2.4"
addToPom "org.apache.poi" "poi" "5.2.5"
#deploy "${LIB_PATH}/org.apache.poi.ooxml_5.2.4.v20231007-1530.jar" "${GROUP_ID_BASE}" "org.apache.poi.ooxml" "5.2.4"
addToPom "org.apache.poi" "poi-ooxml" "5.2.5"
#poi-ooxml should be enough without ooxml.schemas
#deploy "${LIB_PATH}/org.apache.poi.ooxml.schemas_5.2.4.v20231007-1530.jar" "${GROUP_ID_BASE}" "org.apache.poi.ooxml.schemas" "5.2.4"
#xmlbeans is a dependency of poi-ooxml
#deploy "${LIB_PATH}/org.apache.xmlbeans_5.1.1.v20230929-1100.jar" "${GROUP_ID_BASE}" "org.apache.xmlbeans" "5.1.1"
#deploy "${LIB_PATH}/org.osgi.service.prefs_1.1.2.202109301733.jar" "${GROUP_ID_BASE}" "org.osgi.service.prefs" "1.1.2"
addToPom "org.osgi" "org.osgi.service.prefs" "1.1.2"
#the following are needed to pass xls_spudsoft test
#deploy "${LIB_PATH}/com.zaxxer.sparsebits_1.3.0.v20230929-1000.jar" "${GROUP_ID_BASE}" "com.zaxxer.sparsebits" "1.3.0"
addToPom "com.zaxxer" "SparseBitSet" "1.3"
# Addons
#deploy "${ADDONS_PATH}/org.eclipse.datatools.enablement.oda.xml_1.5.0.202311071249.jar" "${GROUP_ID_BASE}" "org.eclipse.datatools.enablement.oda.xml" "1.5.0"
cat <<EOT >>/tmp/pom.xml
</dependencies>
</project>
EOT
# The final jar we will refer to in our own projects
zip --delete ${LIB_PATH}/org.eclipse.birt.runtime_4.14.0-202312020807.jar "META-INF/maven/*"
mvn deploy:deploy-file -Durl=file://${HOME}/.m2/repository \
-DpomFile=/tmp/pom.xml \
-DrepositoryId=third-party \
-Dfile=${LIB_PATH}/org.eclipse.birt.runtime_4.14.0-202312020807.jar \
-DgroupId=${GROUP_ID_BASE} \
-DartifactId=org.eclipse.birt.runtime \
-Dversion=4.14.0 \
-Dpackaging=jar \
-Ddescription="Eclipse BIRT Runtime"
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.birt</groupId>
<artifactId>runtime_maven_library_builder</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.friss.org.eclipse.birt</groupId>
<artifactId>org.eclipse.birt.runtime</artifactId>
<version>4.14.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.3.5</version>
</dependency>
<!--this is needed to test database connection in hello_world_chart.rptdesign -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.11.1.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</build>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment