LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
lsst::pex::policy::DefaultPolicyFile Class Reference

a representation of a default Policy file that is stored as a file in the installation directory of an LSST product. More...

#include <DefaultPolicyFile.h>

Inheritance diagram for lsst::pex::policy::DefaultPolicyFile:
lsst::pex::policy::PolicyFile lsst::pex::policy::PolicySource lsst::daf::base::Persistable lsst::daf::base::Citizen lsst::pex::policy::UrnPolicyFile

Public Member Functions

 DefaultPolicyFile (const char *const productName, const std::string &filepath, const std::string &repos="", bool strict=true)
 
virtual boost::filesystem::path getInstallPath (const char *const productName)
 
const boost::filesystem::path & getRepositoryPath () const
 
virtual void load (Policy &policy) const
 
- Public Member Functions inherited from lsst::pex::policy::PolicyFile
 PolicyFile (const SupportedFormats::Ptr &fmts=defaultFormats)
 
const std::string getPath () const
 
bool exists () const
 
virtual const std::string & getFormatName ()
 
const std::string & getFormatName () const
 
 PolicyFile (const std::string &filepath, const SupportedFormats::Ptr &fmts=defaultFormats)
 
 PolicyFile (const char *filepath, const SupportedFormats::Ptr &fmts=defaultFormats)
 
 PolicyFile (const boost::filesystem::path &filepath, const SupportedFormats::Ptr &fmts=defaultFormats)
 
 PolicyFile (const std::string &filepath, const PolicyParserFactory::Ptr &parserFactory)
 
 PolicyFile (const boost::filesystem::path &filepath, const PolicyParserFactory::Ptr &parserFactory)
 
 PolicyFile (const std::string &filepath, const boost::filesystem::path &reposDir, const SupportedFormats::Ptr &fmts=defaultFormats)
 
 PolicyFile (const boost::filesystem::path &filepath, const boost::filesystem::path &reposDir, const SupportedFormats::Ptr &fmts=defaultFormats)
 
 PolicyFile (const std::string &filepath, const boost::filesystem::path &reposDir, const PolicyParserFactory::Ptr &parserFactory)
 
 PolicyFile (const boost::filesystem::path &filepath, const boost::filesystem::path &reposDir, const PolicyParserFactory::Ptr &parserFactory)
 
virtual void load (Policy &policy)
 
- Public Member Functions inherited from lsst::pex::policy::PolicySource
 PolicySource (SupportedFormats::Ptr fmts=defaultFormats)
 
virtual ~PolicySource ()
 
- Public Member Functions inherited from lsst::daf::base::Citizen
 Citizen (const std::type_info &)
 
 Citizen (Citizen const &)
 
 ~Citizen ()
 
Citizenoperator= (Citizen const &)
 
std::string repr () const
 Return a string representation of a Citizen. More...
 
void markPersistent (void)
 Mark a Citizen as persistent and not destroyed until process end. More...
 
memId getId () const
 Return the Citizen's ID. More...
 
- Public Member Functions inherited from lsst::daf::base::Persistable
 Persistable (void)
 
virtual ~Persistable (void)
 
template<class Archive >
void serialize (Archive &, unsigned int const)
 

Static Public Member Functions

static boost::filesystem::path installPathFor (const char *const productName)
 
- Static Public Member Functions inherited from lsst::daf::base::Citizen
static bool hasBeenCorrupted ()
 Check all allocated blocks for corruption. More...
 
static memId getNextMemId ()
 Return the memId of the next object to be allocated. More...
 
static int init ()
 Called once when the memory system is being initialised. More...
 
static int census (int, memId startingMemId=0)
 How many active Citizens are there? More...
 
static void census (std::ostream &stream, memId startingMemId=0)
 Print a list of all active Citizens to stream, sorted by ID. More...
 
static const std::vector
< const Citizen * > * 
census ()
 Return a (newly allocated) std::vector of active Citizens sorted by ID. More...
 
static memId setNewCallbackId (memId id)
 Call the NewCallback when block is allocated. More...
 
static memId setDeleteCallbackId (memId id)
 Call the current DeleteCallback when block is deleted. More...
 
static memNewCallback setNewCallback (memNewCallback func)
 Set the NewCallback function. More...
 
static memCallback setDeleteCallback (memCallback func)
 Set the DeleteCallback function. More...
 
static memCallback setCorruptionCallback (memCallback func)
 Set the CorruptionCallback function. More...
 

Private Attributes

boost::filesystem::path _repos
 
bool _strict
 

Additional Inherited Members

- Public Types inherited from lsst::daf::base::Citizen
enum  { magicSentinel = 0xdeadbeef }
 
typedef unsigned long memId
 Type of the block's ID. More...
 
typedef memId(* memNewCallback )(const memId cid)
 A function used to register a callback. More...
 
typedef memId(* memCallback )(const Citizen *ptr)
 
- Public Types inherited from lsst::daf::base::Persistable
typedef boost::shared_ptr
< Persistable
Ptr
 
- Static Public Attributes inherited from lsst::pex::policy::PolicyFile
static const std::string EXT_PAF
 
static const std::string EXT_XML
 the PAF file extension, ".paf" More...
 
static const boost::regex SPACE_RE
 the XML file extension, ".xml" More...
 
static const boost::regex COMMENT
 reg-exp for an empty line More...
 
static const boost::regex CONTENTID
 reg-exp for the start of a comment More...
 
- Static Public Attributes inherited from lsst::pex::policy::PolicySource
static SupportedFormats::Ptr defaultFormats
 
- Protected Attributes inherited from lsst::pex::policy::PolicyFile
boost::filesystem::path _file
 
- Protected Attributes inherited from lsst::pex::policy::PolicySource
SupportedFormats::Ptr _formats
 

Detailed Description

a representation of a default Policy file that is stored as a file in the installation directory of an LSST product.

An instance is constructed from a product name, a relative path to a subdirectory representing a policy repository within the installed package, and a relative file path. To construct the full path to the file, the constructor looks for an environment variable of the form, PRODUCTNAME_DIR (where PRODUCTNAME is the given package name converted to all upper case) which names the directory where the product is installed. The full path, then, is the product installation directory concatonated with the repository directory, followed by the file path.

The policy file can reference other files; these will be automatically opened and loaded when load() is called. The paths stored in the policy files must be relative to the repository subdirectory within the product installation directory.

This class is the recommended PolicySource type to return in the PolicyConfigured interface's getDefaultPolicySource().

This class can be subclassed to provide a different implementation of determining the installation directory by overriding getInstallPath().

Definition at line 69 of file DefaultPolicyFile.h.

Constructor & Destructor Documentation

lsst::pex::policy::DefaultPolicyFile::DefaultPolicyFile ( const char *const  productName,
const std::string &  filepath,
const std::string &  repos = "",
bool  strict = true 
)

define a default policy file

Parameters
productNamethe name of the product that the default policy is installed as part of
filepaththe relative pathname to the policy file.
reposthe subdirectory with the product's install directory where policy files are stored. If an empty string (default), the filepath argument is relative to the installation directory.
strictif true (default), load() will throw an exception if it encounters recoverable parsing errors in the underlying file (or any of the files it references). Otherwise, the loaded Policy will be incomplete. This is identical to the strict argument to Policy's loadPolicyFiles().

Definition at line 40 of file DefaultPolicyFile.cc.

44  : PolicyFile(), _repos(), _strict(strict)
45 {
46  _repos = getInstallPath(productName);
47  if (repos.length() > 0) _repos /= repos;
48  _file = _repos / filepath;
49 }
PolicyFile(const std::string &filepath, const SupportedFormats::Ptr &fmts=defaultFormats)
boost::filesystem::path _file
Definition: PolicyFile.h:226
virtual boost::filesystem::path getInstallPath(const char *const productName)

Member Function Documentation

fs::path lsst::pex::policy::DefaultPolicyFile::getInstallPath ( const char *const  productName)
virtual

return the file path to the installation directory of a given named product. This implementation uses the implementation provided by DefaultPolicyFile::installPathFor().

Exceptions
lsst::pex::exception::NotFoundErrorif the environement variable is not defined.

Definition at line 51 of file DefaultPolicyFile.cc.

51  {
52  return DefaultPolicyFile::installPathFor(productName);
53 }
static boost::filesystem::path installPathFor(const char *const productName)
const boost::filesystem::path& lsst::pex::policy::DefaultPolicyFile::getRepositoryPath ( ) const
inline

return the full file path to the repository directory where this file will found.

Definition at line 107 of file DefaultPolicyFile.h.

107 { return _repos; }
fs::path lsst::pex::policy::DefaultPolicyFile::installPathFor ( const char *const  productName)
static

return the file path to the installation directory of a given named product. In this implementation, the installation directory will be taken from the value of an environment variable PRODUCTNAME_DIR where PRODUCTNAME is the given name of the product with all letters converted to upper case.

Definition at line 64 of file DefaultPolicyFile.cc.

64  {
65  std::string productName_DIR(productName);
66 
67  // transform to upper case
68  std::transform(productName_DIR.begin(), productName_DIR.end(),
69  productName_DIR.begin(),
70  std::ptr_fun<int, int>( std::toupper ));
71 
72  // append _DIR
73  productName_DIR += "_DIR";
74 
75  // get installation directory from environment
76  const char *ipath = getenv(productName_DIR.c_str());
77  if (ipath == 0)
78  throw LSST_EXCEPT(pexExcept::NotFoundError,
79  productName_DIR + ": environment variable not set");
80 
81  return fs::path(ipath);
82 }
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
void lsst::pex::policy::DefaultPolicyFile::load ( Policy policy) const
virtual

load the data from this Policy source into a Policy object. This implementation will automatically de-reference any file include directives in the policy file.

Parameters
policythe policy object to load the data into
Exceptions
ParserExceptionif an error occurs while parsing the data
IOErrorif an I/O error occurs while reading from the source stream.

Reimplemented from lsst::pex::policy::PolicyFile.

Definition at line 93 of file DefaultPolicyFile.cc.

93  {
94  PolicyFile::load(policy);
95  policy.loadPolicyFiles(_repos, _strict);
96 }
virtual void load(Policy &policy) const

Member Data Documentation

boost::filesystem::path lsst::pex::policy::DefaultPolicyFile::_repos
private

Definition at line 131 of file DefaultPolicyFile.h.

bool lsst::pex::policy::DefaultPolicyFile::_strict
private

Definition at line 132 of file DefaultPolicyFile.h.


The documentation for this class was generated from the following files: