Software and Dependencies


Software Description

Abstract

Read a description of the Pull Reports™ JAR and how to use IVY or Maven dependency management with Pull Reports™.

Pull Reports™ is distributed as a JAR file from the Pull ReportsMaven repository. Downloading the JAR constitutes acceptance of the Pull Reports™ end user license agreement. The downloaded JAR is named pullreports-x.y.z.jar where x, y, and z correspond to the product major, minor, and patch version numbers respectively. Once downloaded, the JAR may be used for Community (free) or Standard (paid) edition license deployments.

Table 1. pullreports-x.y.z.jar Principle Components
ComponentDescription
META-INF/PullReportsEULA.pdf

The Pull Reports end user license agreement. Please read carefully.

Also available online

META-INF/pullreports-catalog-1.6.1.xsd

The XML schema definition for Pull Reports™ XML Catalog files. Use to validate Pull ReportsXML Catalog files.

Also available online

META-INF/maven/com.pullreports/pullreports/pom.xmlThe Maven POM file of required Pull Reports™ runtime dependencies.
com.pullreports.web.PullReportsContextListenerServletContextListener which reads Pull Reportsconfiguration properties and initializes Pull Reports™.
com.pullreports.web.PullReportsServletHttpServlet which serves all Pull Reports™ resources. Mapped to URL pattern /pullreports/*.

Within the META-INF/resources/assets directory:

  • pullreports.min.js

  • pullreports.js

  • pullreports.min.css

  • pullreports.css

CSS and JavaScript assets to support the Pull Reports™ Report Creator. Available at the following URL pattern relative to the context path of the WAR:

/[context]/assets/[filename]

For instance:

/[context]/assets/pullreports.min.js


Server Requirements

Java Virtual Machine

A Java 8 JVM.

Servlet Container

A Servlet Container which implements Servlet Specification 3.0 or higher (e.g. Tomcat 7).

Relational Database

A relational database which supports 2008 ANSI SQL.

Certified databases:

  • H2 1.4

  • MySQL 5.7, 8

  • Oracle 12.1, 18c

  • PostgreSQL 9.4, 9.6

  • SQLServer 2016, 2017

Database compatibility

The most common database variability effecting Pull Reports™ is the implementation of limit and offset within SQL written by the Export Report REST API. By default, Pull Reports™ uses the ANSI standard offset [offset] rows fetch first [limit] rows only syntax but also implements pluggable SQL dialects for databases which do not support this syntax.

Dependency Management

Pull Reports™ recommends using dependency management software when installing Pull Reports™ into an existing JEE web application. Dependency management software such as Gradle, IVY, or Maven ensures that JARs and their transitive dependencies are automatically resolved, downloaded, and installed.

When using dependency management software with Pull Reports™, there are two general techniques for resolving JAR file dependencies: an enterprise repository and project-local JARs.

Enterprise Maven Repository

An enterprise repository is a common file or network location into which common code artifacts are installed. Pull Reports™ hosts a Maven 2 enterprise repository at:

https://repo2.pullreports.com/maven2

Using the Pull Reports™ enterprise repository is the recommended way to install Pull Reports™ and its transitive JAR dependencies because the repository is the most up-to-date and secure authority for Pull Reportsreleases.

Downloading a Pull Reports™ JAR from the repository constitutes acceptance of the Pull Reports™ end user license agreement.

Gradle Configuration

Add this configuration to the Gradle build.gradle file:

repositories {
     maven {
         url "https://repo2.pullreports.com/maven2"
         content {
             includeGroupByRegex "com\\.pullreports.*"
         }
     }
 }

Then declare a dependency on the desired release of Pull Reports™:

dependencies {
    implementation 'com.pullreports:pullreports:2.2.2'
}

Maven Configuration

Add this configuration to the Maven pom.xml file:

<distributionManagement>
    <repository>
        <id>maven.pullreports.repo</id>
        <url>https://repo2.pullreports.com/maven2</url>
    </repository>
</distributionManagement>

Then declare a dependency on the desired release of Pull Reports™:

<dependencies>
    <dependency>
        <groupId>com.pullreports</groupId>
        <artifactId>pullreports</artifactId>
        <version>2.2.2</version>
    </dependency>
</dependencies>

Project-local JARs

For projects which choose to not use dependency management software, the Pull Reports™ JAR and all of its transitive, runtime dependencies may be installed within an application's project directly. When using project-local dependency management, know that the project must manage JAR version conflicts (e.g. two versions of the same JAR) and transitive, runtime dependencies itself. Additionally, since transitive, runtime JAR dependencies may change between Pull Reports™ versions, review each JAR within the Pull Reports™ JAR's META-INF/maven/com.pullreports/pullreports/pom.xml file with each Pull Reports™ upgrade.

To establish project-local dependency management, download the Pull Reports™ JAR and all transitive, runtime dependency JARs into a project directory such as lib. The application build must then include these JARs within the application's classpath. The following build.gradle demonstrates a project-local Pull Reports™ dependency assuming the Pull Reports™ JAR and all transitive, runtime dependency JARs are within the project's lib directory.

Example 1. build.gradle fragment with project local Jar dependency configuration
dependencies {
    runtimeOnly fileTree(dir: 'lib', include: '*.jar')
}