Release Changes

Release History

Version Date Description 3.7.0 2019-06-24 First release using open source repo. 3.6.0 2017-09-27 This is a maintenance release of the Product Tools Library addressing parsed statement ordering. 3.5.0 2015-09-23 This is a maintenance release of the Product Tools Library that fixes an issue that would occur in large validation runs on a Linux environment. 3.4.1 2014-05-19 This is a maintenance release of the Product Tools Library mainly addressing support for Java 7. 3.4.0 2014-03-11 This is a maintenance release of the Product Tools Library software including a number of modifications. 3.3.0 2013-07-25 This maintenance release of the Product Tools Library software includes a modification to support up to 9 digits for fractional seconds in a date/time value. 3.2.0 2011-08-24 This maintenance release of the Product Tools Library software includes fixes dealing with validation of Group objects. 3.1.0 2011-02-08 This maintenance release of the Product Tools Library software includes a number of corrections and modifications. 3.0.2 2010-03-23 This release of the Product Tools software includes corrections and modifications resulting from the beta test results of the Validation Tool integration. 3.0.1 2010-02-05 This release of the Product Tools software supports the beta release of the Validation Tool and includes a number of updates and corrections. 3.0.0 2009-10-12 This release of the Product Tools software represents the reconciliation of the Ames and JPL versions of the library. 2.0.2 2009-10-11 This release of the Product Tools software supports the beta releases of the Catalog Ingest Tool. 2.0.1 2009-02-06 The operational release of the Product Tools software incorporating the Phase II capability supporting validation of catalog files. 2.0.0 2009-01-09 This release of the Product Tools software incorporates the Phase II capability supporting validation of catalog files. 1.2.1 2008-09-09 This is a maintenance release of the Product Tools software to support release 2.0.0 of the Label Template Design Tool. 1.2.0 2008-07-24 This is a maintenance release of the Product Tools software to support release 2.0.0 of the Label Template Design Tool and release 1.2.0 of the Validation Tool. 1.1.2 2008-02-21 This is a maintenance release of the Product Tools software to support release 0.4.0 of the Label Template Design Tool. 1.1.1 2007-11-08 This is a maintenance release of the Product Tools software to support release 0.3.0 of the Label Template Design Tool. 1.1.0 2007-09-28 This is a maintenance release of the Product Tools software including fixes and changes requested by the early adopters of the software. 1.0.0 2007-05-04 This release of the Product Tools software, including the Validation Tool, represents the operational release for the Phase I targeted capabilities. 0.4.0 2007-02-01 Binary release for the beta test phase. 0.3.0 2006-09-12 Binary release for the second phase of alpha testing. 0.2.0 2006-08-01 Binary release for the first phase of alpha testing. 0.1.0 2006-06-16 Source release for the Code Walk-through.

Release 3.7.0 – 2019-06-24

Type Changes By Update Update build and tests to prep for first release under open source repo. jpadams

Release 3.6.0 – 2017-09-27

Type Changes By Update Updated to store the parsed statements in the order in which they appear in the label. Fixes PDSEN-385. mcayanan Update Updated PDS data dictionary version to 1r102. shardman

Release 3.5.0 – 2015-09-23

Type Changes By Fix File stream needs to be properly closed when certain errors are thrown when parsing a label. Fixes PDSEN-376. mcayanan

Release 3.4.1 – 2014-05-19

Type Changes By Fix Fixed to support the merging of unit lists when multiple dictionaries are merged. Fixes PDSEN-357. mcayanan Fix Fixed an issue where a "Resetting to invalid mark" exception was being thrown when running under Java 1.7. mcayanan

Release 3.4.0 – 2014-03-11

Type Changes By Fix Updated PDS data dictionary version 1r91 to not require a COLUMN object in a TABLE object. See PDSEN-365 for implementation of this check programmatically. Fixes PDSEN-349. jho Fix Fix to allow the ManualPathResolver to return the correct base URI. Fixes PDSEN-361. mcayanan Update Updated to check that a TABLE object contains at least one COLUMN object at the top-level of the object or within an optional CONTAINER object. Fixes PDSEN-365. mcayanan Add Added new methods to the API that will return a string representation of a Scalar with quotes surrounding it if it was originally there in the label. This also applies to Scalars found within Sets and Sequences. Currently, the only Scalar child classes that are affected by this change are TextStrings and Symbols. mcayanan Fix Fix to be able to retrieve the offending statement (when possible) associated with the problem being reported. mcayanan

Release 3.3.0 – 2013-07-25

Type Changes By Update Allow up to 9 digits of fractional seconds in a date/time value. Fixes PDSEN-351. pramirez

Release 3.2.0 – 2011-08-24

Type Changes By Fix Fix to associate aliases with Group definitions. Fixes PDSEN-341. pramirez Fix Fix to capture and report all errors in a Group object during a single validation run. Fixes PDSEN-345. mcayanan

Release 3.1.0 – 2011-02-08

Type Changes By Fix Fix for valid value match with "_" replaced by " ". Will still issue a warning letting one know the value has been manipulated. Fixes PDSEN-277. pramirez Fix Fixed truncation of file names in some of the log messages. Fixes PDSEN-316. pramirez Fix Changed the way date/times were parsed to be simpler and cleaner. Also addressed a bug found in old parsing code. For the time being the invalid date messages may be less specific than in the past. Fixes PDSEN-329. merose, pramirez Update Added back the capability to add outside implementations of the LabelValidator class. Fixes PDSEN-330. mcayanan Update Added back the equals implementation for the Statement class. Fixes PDSEN-331. mcayanan Add Added the equals implementation for the Value class. Fixes PDSEN-332. mcayanan Fix Updated messaging for min and max value checking to display the number as a string to stop rounding from occurring. Some extreme cases still round in messaging but min/max checks remain working as published. Fixes PDSEN-335. pramirez Fix Make sure that loading statements from include pointers only happens when the option is set. pramirez Fix Changing circular pointer tests to only check if a pointed to file is in your ancestor list. Old logic failed when you used a format file in multiple table definitions in the same label. jagander Fix Defaulting numeric position of a FileReference to the beginning of a file. This was causing issues in file maps where null positions resulted in record overwriting. jagander Fix Setting dictionary source string at instantiation so that the string can be serialized. Required for working with dictionary changes in the volume validator. jagander Fix Making sure key is never null for LabelParserException, defaulting to exception message as is done elsewhere. jagander Fix Making parsing of a label fragment as robust as parsing a label when a FileNotFoundException is thrown. Also differentiated between missing file and insufficient permissions. Did not add a test on permissions due issues of correctly storing file permissions in Subversion. jagander Fix Made Dictionary transient in SimpleDictionaryChange and Definition as unnecessary when serializing. Added source string property to SimpleDictionaryChange as simple alternative to getting path to file (used to be from Dictionary instance). jagander Fix Made Alias and Identifier serializable so that they can be used in dictionary change results for the volume validator. jagander

Release 3.0.2 – 2010-03-23

Type Changes By Fix Wrapping BufferedInputStream in a custom stream that returns EOF after the first non-whitespace character is found following the END statement. This was done in an effort to prevent memory overflow issues with large attached labels. Fixes PDSEN-259. jagander Fix Fixed dictionary parser to support reading a default dictionary located inside the product tools jar file. Fixes PDSEN-297. mcayanan Fix Fixed dictionary parser to support dictionary definitions where the MAXIMUM attribute is set to UNK. Fixes PDSEN-298. mcayanan Fix Fixed dictionary parser to support SPECIFIC_GROUP definitions. Fixes PDSEN-300. mcayanan Fix Fixed parser to correctly throw the referenced file name when it cannot be found. This bug only occurred in pointer statements that contained multiple referenced files (Example: ^DATA_SET_CATALOG = {"L0_DS.CAT", "L1B_DS.CAT"}). Fixes PDSEN-303. mcayanan Fix Fixed to support proper checking of required/optional nested objects with descriptor names. Fixes PDSEN-304. mcayanan Fix Getting attached data start byte from custom input stream instead of lexer due to tokenization and error recovery issues skipping until start of next line when encountering non-parseable binary data. Fixes PDSEN-306. jagander Update Update to truncate long values when error messages get thrown for exceeding the acceptable maximum length of an element definition. Fixes PDSEN-307. mcayanan Fix Fixed to capture problems if errors occurred in a nested fragment file. Fixes PDSEN-310. mcayanan Fix Fixed issue where lines containing only a CRLF preceded by a line ending with only an LF falsely reported a bad line ending. Fixes PDSEN-314. jagander Update Correcting a typo in wrong line length message (RECORD_LENGTH vs RECORD_BYTES) and expanding the message to indicate that CRLF chars are not counted. jagander Update Updating included dictionary to current release. jagander Update Updating a message for start byte mismatch to be more clear jagander Update Updating version display to be in X.XX format rather than XrXX format to match standard and published materials. jagander

Release 3.0.1 – 2010-02-05

Type Changes By Update Updates the ManualPathResolver to add problems to the pointers label instead of logging them. Fixes PDSEN-255. pramirez Fix Fixed group definition lookups. Used DictIdentifiers instead of strings. Fixes PDSEN-260. pramirez Fix Fixing issue where "+" sign on integer caused an error. Issue was the conversion to a Long value rather than the integer test itself. Resolution was to strip "+" before parsing into a Long value. Fixes PDSEN-263. jagander Fix Consume newline after SFDU header so that new line read reads next line rather than reading an empty line. This solves the erroneous error about pds version being mislocated when SFDU. Removed no longer necessary skip based on presence of SFDU header. Note that this represents an improvement since skip always assumed 2 newline chars which was not always true. Fixes PDSEN-266. jagander Fix Sets the dev mode to off for LocaleUtils. This will prevent RuntimeExceptions from being thrown. Fixes PDSEN-269. pramirez Fix Problem was with Windows pathing and the way it converted from URIs to Files (i.e. change in slashing). Simplified method of getting parent path by avoiding substring. This was only related to the ManaulPathResolver. Fixes PDSEN-270. pramirez Update Converted some System.out.println over to logging. Using System.out conflicts with command-line interfaces. Fixes PDSEN-271. pramirez Add Implemented a flag to allow child label problems to be captured by a label. Allowing external problems to be logged to a label could mean duplication of problems and thus usage of this flag should be used with caution. Fixes PDSEN-276. pramirez Fix Updated error name and message to be more explicit about start byte mismatch being about attached data rather than column def issues. Fixes PDSEN-279. jagander Fix Updating message to indicate that time might be out of range, not just date. Fixes PDSEN-280. jagander Fix Pointers don't have to share paths and therefore may not have the same relative path. The call to get relative path was wrapped to ignore this and return label path. This was encapsulated in a new function as to not conflict with the existing one. Fixes PDSEN-285. pramirez Fix Null protecting parsing of pointers when assignment statement parsing fails. Fixes PDSEN-288. jagander Fix Pointer Statements were sharing identifiers with attributes statements. This caused them to be grouped together. When accessed through ObjectStatement.hasAttribute() this caused a ClassCastException. The PointerStatementFactory was updated to use the appropriate type of dictionary identifier. In addition, the ObjectValidator was update to allow pointers to satisfy the required element part of a definition. Fixes PDSEN-289. pramirez Fix Error only appeared when alias shared same identifier with an existing definition. When a dictionary identifier is created from the toString method which contains the object context instead of just the identifier. Fixes PDSEN-292. pramirez Update Modifying displayRecognitionError to handle two more explicit cases per the examples in the issue's attached labels. Also modified the fall through case to pass the exception message through but warn the user that it is an unhandled message and they should report it. Fixes PDSEN-293. jagander Update Allows required element checks in objects to pass if a description pointer with the required identifier exists. This is a restriction of older behavior in original product tools library but was something not present in the merged product tools. This was done with consultation with the standards team and is common practice in labels. Fixes PDSEN-294. pramirez Add Added the capability to report line lengths greater than 80 characters (78 + CR/LF). pramirez Add Added the capability to report lines that don’t end in CR/LF. pramirez Add Added the capability to combine attribute value lists of two identical dictionary definitions together instead of one overwriting the other when two dictionaries are merged (i.e. STANDARD_VALUE_SET, REQUIRED_ELEMENT_SET, OPTIONAL_ELEMENT_SET, etc.). pramirez Fix Related to PDSEN-269 - Set the overriding locale utils when an override is passed in. Previously, the method was just dropping the override on the floor. pramirez Fix Related to PDSEN-276 - Update to fix a bug with allowing external problems to be reported such that the source URI would match the place where the error in which the file occurred. The source was erroneously being overwritten by the parent's label URI. This was only occurred with the addition of the allow external problems flag. The issue is now resolved. pramirez

Release 3.0.0 – 2009-10-12

Type Changes By Update Improve VTool's Reporting on Malformed Numbers in Exponential Notation. This was addressed as a result of message infrastructure modification. Fixes PDSEN-133. pramirez, jagander Fix VTool validation does not examine END statement. Fixes PDSEN-158. pramirez, jagander Update Truncate reporting of values that span multiple lines. Fixes PDSEN-246. pramirez, jagander Fix Product Tools library does not properly handle objects and elements of the same name in the data dictionary. Fixes PDSEN-249. pramirez, jagander Add Added numerous unit tests to support the evolution of the code base. pramirez, jagander Update The grammar has been retooled to recover from errors which previously caused issues (e.g. Missing end quote). The messages generated from these type of errors is now easier to understand. jagander, pramirez Update Enhanced messaging due to messages are now externalized from the library in a resources file. In addition, the messages generated are now easier to sort through as they contain keys. This will help those that need to programmatically interface with the library. jagander, pramirez Update Much of the code was overhauled and simplified. For instance, parsing of labels is no longer mixed with dictionary validation. pramirez, jagander Update Updated code to use Java 1.5 generics constructs pervasively to support stronger type checking. pramirez, jagander

Release 2.0.2 – 2009-10-11

Type Changes By Add Added the capability to configure the label parser to do file-specific checks based on the specified file to be parsed. mcayanan Add Implemented the equals method to compare two Statement objects. mcayanan

Release 2.0.1 – 2009-02-06

Type Changes By Update Modified how catalog pointers are handled to not include referenced content but to validate the existence of the referenced file. Added check for valid catalog pointer names. pramirez

Release 2.0.0 – 2009-01-09

Type Changes By Fix Inconsistent validation of values with quotation marks based on the associated element's general data type. The issue related to quoted date/time strings has been resolved. The issue related to quoted variables was determined to be a LTDTool issue and a new issue was created and assigned to that component. Fixes PDSEN-107. pramirez Add Support validation of catalog files. Fixes PDSEN-116. pramirez Fix VTool exits ungracefully when validating a catalog directory in a GCJ environment. This is believed to be associated with the limitation in catalog file support (PDSEN-116) as opposed to the GCJ environment so it should also be resolved in this release. Fixes PDSEN-147. pramirez

Release 1.2.1 – 2008-09-09

Type Changes By Fix The AttributeStatement.hasNamespace() method returns an incorrect value. Fixes PDSEN-104. pramirez Add Add another constructor to GroupStatement class to initialize the Map used to store the statements. Fixes PDSEN-119. pramirez Fix Quotes missing for keywords with colon ":" when writing to DD. Fixes PDSEN-121. pramirez Fix Need a way to distinguish specific vs. generic object type. Fixes PDSEN-124. pramirez Fix When parsing a label fragment passing the follow pointer property was not being propagated. pramirez Fix Fix spacing issue of the validation report. Seen on the Mac platform. mcayanan

Release 1.2.0 – 2008-07-24

Type Changes By Update Reporting needs to be revisited as using XSLT becomes too time consuming on large files. Fixes PDSEN-100. pramirez Fix There is an issue validating date/time strings that contain a DOY with leading 0's. Fixes PDSEN-101. pramirez Update Error message not descriptive for numeric elements that contain string values. Fixes PDSEN-102. pramirez Fix There is an issue regarding validation of date/time strings for elements that have a general data type of CHARACTER. Fixes PDSEN-109. pramirez Fix An error occurs when encountering files without full names (e.g., .lbl) in the target directory. Fixes PDSEN-114. pramirez Fix Lines in generated report files appear to not be terminated with CR/LF. Fixes PDSEN-115. mcayanan Fix Need a way to distinguish specific vs. generic object type. Fixes PDSEN-124. pramirez Fix VTool does not check keywords in undefined GROUPs/OBJECTs. Fixes PDSEN-134. pramirez Update VTool should improve its reporting of values of incorrect data type. Fixes PDSEN-135. pramirez Fix Improve messaging when a bad character is found in a label. Fixes PDSEN-136. mcayanan Add VTool needs to support microsecond precision in date/time values according to SCR 3-1104. Fixes PDSEN-146. pramirez Fix VTool does not support leap year dates properly. Fixes PDSEN-151. pramirez Fix VTool does not throw errors for certain values that don't match the element's data type. Fixes PDSEN-154. pramirez Add Add support to allow required groups to be defined as required objects (via the REQUIRED_OBJECT_SET attribute) within an object definition in the data dictionary. This is a result of the implementation of SCR 3-1037 in the PSDD. Fixes PDSEN-155. pramirez

Release 1.1.2 – 2008-02-21

Type Changes By Add Added a stylesheet for reporting validation results of a template in the Label Template Design Tool. mcayanan Update Updated the command-line default value separator to be a comma instead of a space in the ToolsOption class. mcayanan Fix When writing data dictionaries out to file, made sure that objects, groups and elements with namespaces are quoted. pramirez

Release 1.1.1 – 2007-11-08

Type Changes By Add Added handler classes for the tools logging capability. mcayanan

Release 1.1.0 – 2007-09-28

Type Changes By Remove The Validation Tool application has been split out from the product-tools project in order to provide more specific documentation and to turn the product-tools project into a library of classes that can be included by other projects. The following files or directories were moved: src/java/gov/nasa/pds/tools/VTool.java, src/java/gov/nasa/pds/tools/flags/VToolFlags.java, src/java/gov/nasa/pds/tools/config/, src/java/gov/nasa/pds/tools/status/, src/resources/scripts/, xdocs/install/ and xdocs/user/. shardman Add Added support for aliases in the dictionary. They are now handled more uniformly and there is an explicit class for dealing with them. pramirez Add Capability to write a dictionary to a file is now supported using the DictionaryWriter class. pramirez Add Label class now persists numbers of errors and warnings found during validation. This was added to support some of the return value information that will now be provided. pramirez Add Added README files to be included with the binary and source distribution packages. The binary version points the user to the documentation provided with the package. The source version informs the user that they are on their own with regard to building the source in their own environment. shardman Add Added the somewhat human-readable representation of the grammer utilized to parse PDS labels to the Development section of the documentation. This is currently a manual process that is documented in the DEPLOY.txt file, which can be found in the root directory of this project. shardman Update Added support for namespaces in identifiers. There is now a class that handles parsing out of the namespace in an identifier. This was being done in multiple places in the code before so was a way to clean things up. pramirez Update Updated fields in definitions to support all that was found in the dictionary. There were some missing fields before now everything read in is preserved. pramirez Fix Times can no longer reside on the right hand side of an attribute statement without being proceeded by a date. This was being allowed by the grammar but is not part of the standard. pramirez Fix The map of definitions returned from the dictionary class contained redundant definitions and used a naming convention that was not explicitly called out. This was cleaned up and now the map returns only a single copy of the definitions. In addition, the weird naming convention has been tossed. pramirez Fix Aliases in the dictionary were not be correctly read in or handled all the time. There was some errant information found in the dictionary. This has been removed and fixed. pramirez Fix Validation layer now ensures that there is not duplicate attribute identifiers within the same block. For instance, will report an error when multiple "TARGET_NAME"s are found. pramirez Fix GROUP definitions in the data dictionary can now be specified as a SPECIFIC_OBJECT_DEFINITION as well as a GENERIC_OBJECT_DEFINITION. pramirez Fix Messages regarding unknown unit values will now have a severity of WARNING instead of ERROR. pramirez

Release 1.0.0 – 2007-05-04

Type Changes By Add Added support for validation of label fragments. pramirez Add Added the capability to return an appropriate exit status value based on validation results or tool application failure. mcayanan Add Created batch and shell scripts for simpler execution of VTool. mcayanan Add Added the capability for targets to be specified implicitly. mcayanan Add Added -f or --force flag option to perform standalone label fragment validation. mcayanan Update Validation of units is now performed against the master list of unit values. This comparison is case sensitive. pramirez Update File names referenced by pointers may be in any case and still be discoverable by the tool. File names in mixed case will generate a warning message. pramirez Update Cleaned up reporting including replacing SEVERE with ERROR in all instances and properly representing fragment messages when they are included in a label validation. pramirez Update Implemented new log file behavior to allow logs to be written to memory. This allows generation of reports without the need of explicitly specifying the log file flag option. mcayanan Update Changed the log file flag (-l or --log) option to optionally allow a file specification. See Use and Operation guide for log generation details. mcayanan Update Added time and date of tool execution in final reports. mcayanan Update Enhanced user guide with more details regarding command-line flag options, report examples, etc. mcayanan Fix Fixed support for UNC pathnames. mcayanan Fix Fixed the minimal report stylesheet to work correctly on the Linux platform. mcayanan

Release 0.4.0 – 2007-02-01

Type Changes By Add Added the following capabilities related to semantic validation: white space stripping for element value comparison, support for element and object aliases and verifying the existence of referenced data objects and files. pramirez Add Implemented reporting including generation of an XML formatted log file which can then be transformed via XSLT stylesheeets into the specified human-readable report formats. pramirez Add Implemented progress reporting, which prints to standard error. This feature will report the directory being validated and then represent each file being validated with an asterisk instead of the actual file name. mcayanan Add Added documentation for Installation and a template for Development along with the capability to generate a PDF of the newly named Product Tools Guide. shardman Update Added and/or modified the following command-line options: (-a, Enable aliasing), (-I, Specify paths to look for files referenced by pointer statements in a label), (-l, Specify a file name for the machine-readable log), (-p, Enable progress reporting), (-r, Specify a file name for the human-readable report), (-s, Specify a format for the human-readable report), (-v, Specify the severity level and above to include in the human-reable report). mcayanan Update Changed the "p" (patterns) flag to an "e" (regexp) flag. Also changed the "l" (local) flag to an "L" flag. mcayanan Update Updated VTool to validate files in a directory first before moving on to its sub-directories. Before, validation of files in a directory were interleaved with validation of files in its sub-directories. mcayanan Update Added a Common Errors section to the User Guide as well as clarifying some aspects of setting the CLASSPATH environment variable in the Setup section. shardman Fix Corrected a problem where the tool was not completing syntactic validation on a label. pramirez Fix Fixed to properly handle URLs (for targets, dictionaries, Includes). mcayanan

Release 0.3.0 – 2006-09-12

Type Changes By Add Added a user guide for VTool. mcayanan Add Added the following command-line options: (-o, Write the validation results to a file), (-p, Specify files/file patterns to include in validation), (-X, Specify files/file patterns to exclude in validation), (-c, Specify a configuration file to set default behaviors), (-F, Do not follow STRUCTURE pointers). mcayanan Add Pointers are now followed. This feature can be turned on and off. This will allow arbitrary length nesting of pointers. Object and group statements should not begin and end in different files. Their contents may be in separate files but the open and close should be contained within the same file. This will allow the label to be valid even when semantic validation is done. pramirez Add Added support for PDS_VERSION_ID. Now files that don't have this in the first line will be skipped and logged as a warning if passed to the parser. pramirez Add Added support for SFDUs. Now the SFDUs will be logged and then skipped. This has not added validation of SFDUs. pramirez Update Changed the "f" (file) flag to a "t" (target) flag. mcayanan Update Dates are now checked to ensure that they are not only properly formed but are actual valid dates. One can now get a Date object through the API for convenience. pramirez Update More logging information about file being parsed and dictionaries being used. pramirez Fix Fixed multiple dictionary support. mcayanan Fix Properly handle the "Z" at the end of the date when attempting to create an actual Date object. pramirez Fix Allow group statements to be within object statements. pramirez Fix Allow for objects and groups with the same name to appear at the same level within a label or fragment. This required changes to method signatures on the Label class. pramirez Fix Fixed convenience methods on Label class. This would have only caused a problem if people called the tool directly. pramirez Fix PSDD will now be adhered to properly as an optional element. This essentially allows any element definition to appear within an object or group statement without generating an error. pramirez

Release 0.2.0 – 2006-08-01

Type Changes By Update A major overhaul to how the grammar was implemented using Antlr was performed as a result of comments from the Code Walk-through. Thanks to Mark Rose. pramirez Add This release supports validation against the PDS Data Dictionary. pramirez

Release 0.1.0 – 2006-06-16

Type Changes By Add This release supports syntactic and semantic validation of a single PDS label. pramirez