gov.nasa.pds.vtool
Class VTool

java.lang.Object
  extended by gov.nasa.pds.vtool.VTool
All Implemented Interfaces:
gov.nasa.pds.tools.flags.ToolsFlags, gov.nasa.pds.tools.label.validate.Status, gov.nasa.pds.tools.license.ToolsLicense, gov.nasa.pds.tools.report.StyleSheet, VToolConfigKeys, VToolFlags, ExitStatusType

public class VTool
extends java.lang.Object
implements VToolConfigKeys, VToolFlags, gov.nasa.pds.tools.label.validate.Status, ExitStatusType, gov.nasa.pds.tools.license.ToolsLicense, gov.nasa.pds.tools.report.StyleSheet

Class to perform automated validation to determine if a given data product is PDS compliant.

This replaces LVTool functionality.

Version:
$Revision: 3392 $
Author:
mcayanan

Field Summary
 
Fields inherited from interface gov.nasa.pds.vtool.config.VToolConfigKeys
ALIASKEY, DICTKEY, FOLLOWKEY, FORCEKEY, IGNOREDIRKEY, IGNOREFILEKEY, INCLUDESKEY, LOGKEY, PROGRESSKEY, RECURSEKEY, REGEXPKEY, REPORTKEY, SHOWLOGKEY, STYLEKEY, TARGETKEY, VERBOSEKEY
 
Fields inherited from interface gov.nasa.pds.vtool.flags.VToolFlags
ALIAS, FOLLOW, IGNOREDIR, IGNOREFILE, INCLUDES, LOCAL, LOG, PARTIAL, PROGRESS, REGEXP, RPTSTYLE, TARGET, VERBOSE, WHATIS_ALIAS, WHATIS_DICT, WHATIS_FOLLOW, WHATIS_IGNOREDIR, WHATIS_IGNOREFILE, WHATIS_INCLUDES, WHATIS_LOCAL, WHATIS_LOG, WHATIS_PARTIAL, WHATIS_PROGRESS, WHATIS_REGEXP, WHATIS_REPORT, WHATIS_RPTSTYLE, WHATIS_TARGET, WHATIS_VERBOSE
 
Fields inherited from interface gov.nasa.pds.tools.flags.ToolsFlags
ARGNAME, CONFIG, DICT, HELP, LONG, REPORT, SHORT, VERSION, WHATIS_CONFIG, WHATIS_HELP, WHATIS_VERSION
 
Fields inherited from interface gov.nasa.pds.tools.label.validate.Status
FAIL, PASS, SKIP, UNKNOWN
 
Fields inherited from interface gov.nasa.pds.vtool.status.ExitStatusType
APPLICATION_ERROR, ERRORS_FOUND, SKIPPED_FILES, SUCCESS, SYSTEM_ERROR, WARNINGS_FOUND
 
Fields inherited from interface gov.nasa.pds.tools.license.ToolsLicense
LICENSE
 
Fields inherited from interface gov.nasa.pds.tools.report.StyleSheet
FULLXSL, MINXSL, SUMXSL
 
Constructor Summary
VTool()
          Default constructor.
 
Method Summary
 void closehandle()
          Closes the handlers that were set for the logger.
 void logMessage(java.util.logging.Level level, java.lang.String msg)
          Routine to store a message into the logger.
 void logMessage(java.util.logging.Level level, java.lang.String msg, java.lang.String file)
          Routine to store a message into the logger.
 void logRptHeader()
          Logs report header information such as version of the tool, execution time, and flag settings.
static void main(java.lang.String[] argv)
          Implementation to perform automated PDS validation.
 org.apache.commons.cli.CommandLine parseLine(java.lang.String[] argv)
          Parses the VTool command-line.
 gov.nasa.pds.tools.file.FileList processTarget(java.lang.String target, boolean getSubDirs)
          Processes a target.
 void queryCmdLine(org.apache.commons.cli.CommandLine cmd)
          Queries the VTool command-line.
 void readConfigFile(java.net.URL file)
          Reads a configuration file to set the default behaviors for VTool.
 gov.nasa.pds.tools.dict.Dictionary readDictionaries(java.util.List dictionary)
          Parse the dictionary files.
 void setAlias(boolean a)
          Set aliasing flag.
 void setDictionaries(java.util.List d)
          Set the dictionary file names passed into VTool .
 void setFollowPtrs(boolean f)
          Set the flag that determines whether to follow pointers found in a label.
 void setForcePartial(boolean f)
          Set the flag that determines whether to validate standalone label.
 void setIncludePaths(java.util.List i)
          Set the paths to search for files referenced by pointers.
 void setLogFile(java.io.File f)
          Set the file name for the machine-readable log.
 void setNoDirs(java.util.List d)
          Set the flag to ignore specified directories.
 void setNoFiles(java.util.List f)
          Set the flag to ignore specified files.
 void setProgress(boolean p)
          Set the progress reporting flag.
 void setRecursive(boolean r)
          Set the recursive flag.
 void setRegexp(java.util.List e)
          Set the patterns flag.
 void setRptFile(java.io.File f)
          Set the file for the human-readable report.
 void setRptStyle(java.lang.String style)
          Set the output style for the report.
 void setShowLog(boolean l)
          Set the flag to write the log to standard out.
 void setTargets(java.util.List t)
          Set the targets flag.
 void setupLogger()
          Configures the logger appropriately.
 void setVerbose(short v)
          Set the verbosity level and above to include in the reporting.
 void showHelp()
          Display VTool usage and help information
 void showProgress(java.net.URL file)
          Prints out the current directory being validated and represents each file being validated by an asterisk.
 void showVersion()
          Show the version and disclaimer notice for VTool.
 ValidationRecord validateLabel(java.net.URL url, gov.nasa.pds.tools.dict.Dictionary dict)
          Validate a label file.
 ValidationRecord validateLabels(java.util.List targets)
          Validate labels, performing only syntactic validation.
 ValidationRecord validateLabels(java.util.List targets, gov.nasa.pds.tools.dict.Dictionary dict)
          Validate labels, performing both syntactic and semantic validation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

VTool

public VTool()
Default constructor.

Method Detail

showVersion

public void showVersion()
                 throws java.io.IOException
Show the version and disclaimer notice for VTool.

Throws:
java.io.IOException

showHelp

public void showHelp()
Display VTool usage and help information


parseLine

public org.apache.commons.cli.CommandLine parseLine(java.lang.String[] argv)
                                             throws ApplicationException
Parses the VTool command-line.

Parameters:
argv - arguments given on the command-line
Throws:
ApplicationException

queryCmdLine

public void queryCmdLine(org.apache.commons.cli.CommandLine cmd)
                  throws ApplicationException,
                         java.net.MalformedURLException,
                         SystemException
Queries the VTool command-line.

Throws:
ApplicationException
java.net.MalformedURLException
SystemException

setAlias

public void setAlias(boolean a)
Set aliasing flag.

Parameters:
a - 'false' if aliasing should be turned off, 'true' otherwise

setDictionaries

public void setDictionaries(java.util.List d)
                     throws ApplicationException
Set the dictionary file names passed into VTool .

Parameters:
d - a List object of dictionary files
Throws:
ApplicationException

setFollowPtrs

public void setFollowPtrs(boolean f)
Set the flag that determines whether to follow pointers found in a label.

Parameters:
f - 'true' to follow, 'false' otherwise

setForcePartial

public void setForcePartial(boolean f)
Set the flag that determines whether to validate standalone label. fragments

Parameters:
f - 'true' to enable, 'false' otherwise

setIncludePaths

public void setIncludePaths(java.util.List i)
Set the paths to search for files referenced by pointers.

Default is to always look first in the same directory as the label, then search specified directories.

Parameters:
i - List of paths

setNoDirs

public void setNoDirs(java.util.List d)
Set the flag to ignore specified directories.

Parameters:
d - a text file containing a list of directories and/or directory patterns to ignore during validation. The names must be listed one name per line.

setNoFiles

public void setNoFiles(java.util.List f)
Set the flag to ignore specified files.

Parameters:
f - a list of files/file patterns to ignore during validation.

setLogFile

public void setLogFile(java.io.File f)
Set the file name for the machine-readable log.

Parameters:
f - file name of the log

setShowLog

public void setShowLog(boolean l)
Set the flag to write the log to standard out.

Parameters:
l -

setRptFile

public void setRptFile(java.io.File f)
Set the file for the human-readable report.

Parameters:
f - file name

setRptStyle

public void setRptStyle(java.lang.String style)
                 throws ApplicationException
Set the output style for the report.

Parameters:
style - 'sum' for a summary report, 'min' for a minimal report, and 'full' for a full report
Throws:
ApplicationException

setProgress

public void setProgress(boolean p)
Set the progress reporting flag.

Parameters:
p -

setRegexp

public void setRegexp(java.util.List e)
Set the patterns flag.

Parameters:
e - a List of patterns to be matched when searching for files to validate in a directory

setRecursive

public void setRecursive(boolean r)
Set the recursive flag.

Parameters:
r - 'true' to recursively traverse down a directory and all its sub-directories, 'false' otherwise

setTargets

public void setTargets(java.util.List t)
Set the targets flag.

Parameters:
t - a List of files, URLs, and/or directories to be validated

setVerbose

public void setVerbose(short v)
                throws ApplicationException
Set the verbosity level and above to include in the reporting.

Parameters:
v - '1' for info, '2' for warnings, and '3' for errors
Throws:
ApplicationException

readConfigFile

public void readConfigFile(java.net.URL file)
                    throws ApplicationException
Reads a configuration file to set the default behaviors for VTool.

Flags set on the command-line will override flags set in the configuration file

Parameters:
file - a file containing keyword/value statements
Throws:
ApplicationException

logMessage

public void logMessage(java.util.logging.Level level,
                       java.lang.String msg)
Routine to store a message into the logger.

Parameters:
level - The severity level of the message.
msg - The message to log.

logMessage

public void logMessage(java.util.logging.Level level,
                       java.lang.String msg,
                       java.lang.String file)
Routine to store a message into the logger.

Parameters:
level - The severity level of the message.
msg - The message to log.
file - The file name associated with the message being logged.

logRptHeader

public void logRptHeader()
                  throws SystemException,
                         java.io.IOException
Logs report header information such as version of the tool, execution time, and flag settings.

Throws:
SystemException
java.io.IOException

setupLogger

public void setupLogger()
                 throws ApplicationException,
                        SystemException
Configures the logger appropriately.

If a log file was specified on the command-line, the log will be written to that file. If the log flag was specified with no file spec, then the log will be written to standard out. Otherwise, the log will be written to memory (ByteArrayOutputStream).

Throws:
SystemException
ApplicationException

readDictionaries

public gov.nasa.pds.tools.dict.Dictionary readDictionaries(java.util.List dictionary)
                                                    throws ApplicationException
Parse the dictionary files.

Parameters:
dictionary - a list of dictionary URLs
Returns:
a Dictionary object that includes all the dictionary information from all the dictionary files passed in.
Throws:
ApplicationException
gov.nasa.pds.tools.label.parser.ParseException
UnknownLabelStatusException

processTarget

public gov.nasa.pds.tools.file.FileList processTarget(java.lang.String target,
                                                      boolean getSubDirs)
                                               throws ApplicationException,
                                                      SystemException
Processes a target.

Parameters:
target - The file or URL to process
getSubDirs - 'True' to look for sub-directories, 'false' otherwise
Returns:
A FileList object containing the sub-directories and files found in the target, if any
Throws:
ApplicationException
SystemException

validateLabels

public ValidationRecord validateLabels(java.util.List targets)
                                throws java.net.MalformedURLException,
                                       ApplicationException,
                                       SystemException,
                                       UnknownLabelStatusException
Validate labels, performing only syntactic validation.

Parameters:
targets -
Returns:
A ValidationRecord containing the results of the validation run.
Throws:
java.net.MalformedURLException
ApplicationException
SystemException
UnknownLabelStatusException

validateLabels

public ValidationRecord validateLabels(java.util.List targets,
                                       gov.nasa.pds.tools.dict.Dictionary dict)
                                throws ApplicationException,
                                       SystemException,
                                       java.net.MalformedURLException,
                                       UnknownLabelStatusException
Validate labels, performing both syntactic and semantic validation. If the target is a directory, this method will validate all labels found within the directory and its sub-directories. If recursion is turned OFF, then sub-directories will not be looked into.

Parameters:
targets - a list of files, directories, and/or URLs.
dict - the dictionary file.
Returns:
A ValidationRecord containing the results of the validation.
Throws:
SystemException
ApplicationException
java.net.MalformedURLException
UnknownLabelStatusException

validateLabel

public ValidationRecord validateLabel(java.net.URL url,
                                      gov.nasa.pds.tools.dict.Dictionary dict)
                               throws ApplicationException,
                                      SystemException,
                                      UnknownLabelStatusException
Validate a label file.

Parameters:
url - The URL of the file to be validated
dict - a Dictionary object needed for semantic validation. If null, only syntactic validation will be performed.
Returns:
A ValidationRecord object containing the results of the validation.
Throws:
ApplicationException
SystemException
UnknownLabelStatusException

showProgress

public void showProgress(java.net.URL file)
                  throws SystemException
Prints out the current directory being validated and represents each file being validated by an asterisk. This is used when progress reporting is enabled.

Parameters:
file - The URL being validated
Throws:
SystemException

closehandle

public void closehandle()
Closes the handlers that were set for the logger.


main

public static void main(java.lang.String[] argv)
Implementation to perform automated PDS validation.

The main calls the following methods (in this order):

To setup the flags and parse the command-line options:

To setup the logger and log the report header information:

To perform validation:

To create the final report:

Reporting is not generated if the log flag was specified with no file spec and the report file flag was not specified

VTool returns an appropriate exit status based on validation results.

Parameters:
argv - Arguments passed on the command-line


Copyright © 2005-2009 NASA Jet Propulsion Laboratory, California Institute of Technology. All Rights Reserved.