Java is used to write code that needs to manipulate PDF. It does so using the iText library. In order to make it easier for such code to obtain the information it needs, we also use a PostgreSQL interface library with JDBC.

Code written here resides in the ca.uwaterloo.odyssey package, in accordance with the Java package naming standard. Nothing actually exists directly in that package but instead the following sub-packages are used:

  • exams — Classes related to producing and manipulating documents associated with examination management, including examination master stamping.
  • pdf — PDF-related code of general utility.
  • postgres — PostgreSQL-related code of general utility.
  • print — Code related to preparing jobs for printing. Currently not in use.
  • util — General-purpose utility code.

Numerous conventions are used in this code which I thought came from the official Java code conventions, but those seem to have disappeared from the Java web space and instead I find criticism of the (disappeared) conventions which makes me question whether the conventions ever made sense. In any case, use of Java is intended to be restricted to where it is needed, i.e., PDF manipulation and related activities.

Java code is accessed in production from .jar files in ~odyssey/a/java-jar. If Java code is updated, the odyssey.jar file in this directory needs to be updated accordingly.