PIRL Java Packages

PIRL packages

An application to manage procedure pipelines with classes to resolve references to parameters (as are used in Configuration objects) and Database fields, asynchronous thread logging of streams, and utility applications to assist with pipeline source queue management, common processes used in process tables - including sending email notification messages to a list of recipients - and an expression evaluator (JCM) to test process success logical conditions.

The Maestro sub-package provides a Kapellmeister application for managaging Profiles of pipeline networds along with the Stage_Manager (a Messenger.Dispatcher subclass) used to relay messages between Kapellmeisters and Conductors, or other user applications.

An extension of the PVL.Parameter class for convenient management of configuration parameters and files.

A simplified interface for access to, and basic management of, relational SQL databases with Data_Port implementations for MySQL and PostgreSQL. An example database query tool is included along with Query_DB and Update_DB classes that can be used as generic utility applications.

Classes for obtaining metadata information from JP2 files, plus an ImageInputStream implementation for access to image files remotely via an HTTP server.

Classes to provide inter-process message passing services. A Dispatcher, designed to be extended by subclasses that add additional Message protocol suppor, is included to coordinate the connections between processes interested in participating in message passing.

The PIRL Parameter Value Language package provides for the input, output and manipulation of generic parameters and their data values. A PVL_to_DB class is provided to map PVL Parameter Values into Database fields for update or insert operations.

Character string manipulation capabilities used by the other PIRL packages.

Miscellaneous utilities classes that handle various helpful operations not easily classified into the classes of other packages. This includes client Authentication with public-private key pairs, a File subclass of the JFC File class to enable cannonical to logical pathname mapping, Host system identification, a Checker for use in unit testing, mathematical range definitions, a generic Stream factory class, and a set of enhanced Writer and Input/OutputStream classes.

Numerous classes for common capabilies associated with GUI viewers - including Animator, Blinker, Draggable_Rows, Icons, Size_Limits and View_Locator - useful components - including Dialog_Box, Font_Selector, Memory_Chart, Percent_Bar, Splash_Screen and Stream_Monitor - plus GUI viewers for PVL Parameters and Values.

Redistributed packages

A packaged version of Sun's TreeTable example files. The contents of the TreeTable package are based on the How to Use Trees tutorial files offered for download from Sun's Java web site and contain Sun's copyright. This package is used by Parameter_View and its Parameter_Model classes.

Software downloads

The package distribution files are available from the PIRL distribution site.

Each package is distributed in tarball form (Package.tar.gz). This is the most convenient way to incrementally upgrade an existing distribution when only one part needs to be changed. A complete tarball distribution (PIRL.tar.gz) is provided for new installations or a total upgrade to a new version. The tarballs include precompiled class files as well as the Java source code files. A Makefile (using gmake syntax) is also included that can be used to recompile the class files. Each tarball unpacks into a subdirectory named PIRL-N.N.N, where N.N.N is the distribution version, and provides a link to this directory named PIRL. The PIRL link is required to satisfy Java's dependency on filenames being identical to package/class names. Note: The tarball file does not include the redistributed packages (below) which are necessary dependencies for the Conductor and Database packages.

A jar file distribution (PIRL.jar) is also provided. Versions of the full PIRL jar file named Conductor.jar and Data_View.jar are provided as self-contained distributions of these applications (only the manifest has been changed to specify the appropriate MAIN class). The jar files do not include the Java source code files.


The software distribution site has an Apps subdirectory with wrapper scripts for the Java applications in the packages. The wrapper scripts are also included in the distribution files in the package directories where the applications are located. The wrappers enable the applications to be run in the Java Virtual Machine (JVM) as if they are standalone applications.

Model applicaiton configuration files are provided in the Configs subdirectory. These files include comments describing their entires to facilitate customizing them for individual users.


On-line reference manuals for the PIRL Java Packages are available in javadoc form. A tarball (PIRL-javadoc.tar.gz) of just the documentation files is provided from the distribution site.

To build the javadoc files from the source code distribution use the "make docs" command with the Makefile in the unpacked PIRL.tar.gz distribution (the Makefile uses GNU make syntax; on some systems GNU make is known as gmake). The Makefile's JAVA_DOCS_DIR variable specifies the location of the core Java documentation (where the api sudirectory is found). By default this is set to /opt/java/docs; set your JAVA_DOCS_DIR environment variable to the location for your site. The Makefile's PIRL_DOCS_DIR variable specifies where the PIRL Java Packages documentation will be created. By default this is set to the docs subdirectory of the current directory; if you want to change this, set your PIRL_DOCS_DIR environment variable to the appropriate pathname.

Dependency packages

Java Components For Mathematics
A project at Hobart and William Smith Colleges, is an effort to develop a framework of configurable mathematical software components written in the Java programming language. A tarball of the complete distribution is provided (jcm.tar.gz). However, this is a large tarball and only the edu.hws.jcm.data package is used by the PIRL software, so a jar file for just this package is provided (jcm_data.jar).

The MySQL Connector/J JDBC driver for MySQL
An implemntation of the JDBC API for the MySQL relational database server. Required for use of the MySQL_Data_Port of the Database package. Both tarball (mysql-connector.tar.gz) and jar (mysql-connector.jar) files are provided.

The PostgreSQL JDBC driver
An implemntation of the JDBC API for the PostgreSQL relational database server. Required for use of the PostgreSQL_Data_Port of the Database package. Both tarball (postgresql-jdbc.tar.gz) and jar (postgresql-jdbc.jar) files are provided.

Swing GUI component extensions. This package is required by the Conductor package.

These packages provide email message sending functionality as used by the Notify class. Note: These packages are only required when Notify must use an "unfriendly" email server. They may not be required at all, in which case a Notify-simple.java implementation is provided that only uses JFC classes and worked fine for many years until a "sophisticated" email server was encountered. Both zip (javamail.zip) and jar (javamail.jar) files are provided for JAVAMAIL; a zip (jaf.zip) file containing the appropriate jar (activation.jar) file is provided for JAF.

The Apache Commons CLI library
This package is only required by the Pipeline_Configuration utility in the Conductor package to provide command line parsing. Both zip (commons-cli.zip) and jar (commons-cli.jar) files are provided.

The appropriate versions of the dependency packages have been collected and made available from the PIRL software distribution site.


The PIRL Java Packages are Copyright (C) 2001 - 2012 Arizona Board of Regents on behalf of the Planetary Image Research Laboratory, Lunar and Planetary Laboratory at the University of Arizona. They are distributed under the terms of the GNU Lesser General Public License as published by the Free Software Foundation. A copy of this license should be included with the distributed files. If not, see http://www.gnu.org/licenses/.

The PIRL Java Packages are is distributed in the hope that they 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.


Comments, questions and contributions of code or corrections regarding the PIRL Java Packages may be sent to the author:

Bradford Castalia  
Senior Systems Analyst Castalia@Arizona.edu
Planetary Image Research Laboratory 520-621-4824
Department of Planetary Sciences 1541 E. University Blvd.
University of Arizona Tucson, Arizona 85721-0063

Last update: 30 April, 2012