Software and Dependencies


Software Description

Abstract

Read a description of the Pull Reports™ software media ZIP file and learn how to use IVY or Maven dependency management with Pull Reports™.

The Pull Reports™ software is available for download after purchase. The downloaded file is named pullreports-dist-x.y.z.zip where x, y, and z correspond to the product major, minor, and patch version numbers respectively.

Even though the zip file contains the complete Pull Reports™ software, all artifacts within the zip are also available online at https://www.pullreports.com or via the Pull Reportsenterprise repository for licensed or trial users.

Table 1. pullreports-x.y.z.zip contents
File / DirectoryDescription
PullReportsEULA.pdfThe Pull Reports end user license agreement. Please read carefully.
dist/pullreports-x.y.z.jarThe Pull Reports software. See following table for a component description.
dist/pullreports-catalog-1.5.0.xsd

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

Also available at https://www.pullreports.com/docs/xsd/pullreports-catalog-1.5.0.xsd

dist/pom.xmlThe Maven POM file of required Pull Reports™ runtime dependencies. These dependencies are also found in the lib directory.
libThe transitive, runtime dependency JARs for Pull Reports™. These same dependencies are listed within dist/pom.xml and are included in the distribution as a convenience.

Table 2. pullreports-x.y.z.jar Principle Components
ComponentDescription
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™ Ad Hoc 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

  • Oracle 12.1

  • 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 three general techniques for hosting JAR files: an enterprise repository, a local repository, and project-local JARs. The following examples use Gradle when discussing these three techniques in the context of Pull Reports™ installation but the technique is analogous for Maven and IVY.

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 via the AWS S3 protocol for the benefit of Pull Reports™ licensees and trial users at:

s3://repo.pullreports.com/maven2

After purchase, each licensee is given unique access and secret keys which permit downloading the Pull Reports™ JAR from the repository. 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.

To use the repository, add this configuration to the Gradle build.gradle file where YourAccessKey and YourSecretKey are credentials provided by Pull Reports™:

Example 1. Pull Reports™ repository configuration
repositories {
     mavenCentral()
     maven {
         url "s3://repo.pullreports.com/maven2"
         credentials(AwsCredentials) {
             accessKey 'YourAccessKey'
             secretKey 'YourSecretKey'
         }
     }
 }

Then declare a dependency on the desired release of Pull Reports™ in the dependencies configuration within build.gradle.

Example 2. Pull Reports™ dependency configuration
dependencies {
    runtime 'com.pullreports:pullreports:1.3.2'
}

Project-local JARs

For projects which do not or 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™ media's lib directory with each Pull Reports™ upgrade.

To establish project-local dependency management, copy 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 3. build.gradle fragment with project local Jar dependency configuration
dependencies {
    runtime fileTree(dir: 'lib', include: '*.jar')
}