Isis 3 Programmer Reference
Isis::Resource Class Reference

This class provides a resource of PVL keywords for Strategy classes. More...

#include <Resource.h>

Collaboration diagram for Isis::Resource:
Collaboration graph

Classes

class  ResourceData
 Shared Resource data pointer. More...
 

Public Member Functions

 Resource ()
 Default constructor for a Resource object. More...
 
 Resource (const QString &name)
 Constructs a Resource object with the given name. More...
 
 Resource (const QString &name, const PvlFlatMap &profile)
 Constructs a Resource object with the given name and profile of keywords. More...
 
 Resource (const QString &name, const PvlContainer &profile)
 Constructs a Resource object with the given name and profile of keywords. More...
 
 Resource (const Resource &other)
 Constructs a Resource from another Resource. More...
 
virtual ~Resource ()
 Destroys the Resource object. More...
 
QString name () const
 Accessor for a string containing the Resource's name. More...
 
void setName (const QString &identity)
 A mutator to set the Resource's name. More...
 
bool isEqual (const Resource &other) const
 Checks for equality of another Resource. More...
 
bool exists (const QString &keywordName) const
 Determines whether a PVL keyword with the given name is in this Resource. More...
 
int count (const QString &keywordName) const
 Counts the number of values the PVL keyword with the given name has, if it exists in this Resource. More...
 
bool isNull (const QString &keywordName, const int keywordIndex=0) const
 Determines whether the PVL keyword with the given name at the given index is null. More...
 
const PvlFlatMapkeys () const
 Accessor method for the PVL keywords associated with this Resource. More...
 
QString value (const QString &keywordName, const int &keywordIndex=0) const
 Gets the value of the PVL keyword with the given name at the given index. More...
 
QString value (const QString &keywordName, const QString &defValue, const int &keywordIndex=0) const
 Gets the value of the PVL keyword at the given index, if found; otherwise it returns the given default value. More...
 
PvlKeyword keyword (const QString &keywordName) const
 Gets the PvlKeyword object with the given name, if it exists in this Resource. More...
 
void add (const QString &keywordName, const QString &keywordValue)
 Adds a PVL keyword with the given name and value to this Resource. More...
 
void add (const PvlKeyword &keyword)
 Adds the given PVL keyword to this Resource. More...
 
void add (const PvlFlatMap &keys)
 Adds the PVL keywords from the given map of keywords to this Resource. More...
 
void append (const QString &keywordName, const QString &keywordValue)
 Appends the given value to the PVL keyword with the given name. More...
 
int erase (const QString &keywordName)
 Removes all of the PVL keywords in this Resource that are associated with the given name. More...
 
void add (GisGeometry *geom)
 Sets the GIS geometry for this Resource to the given value. More...
 
void add (SharedGisGeometry &geom)
 Sets the GIS geometry for this Resource to the given value. More...
 
bool hasGeometry () const
 This method is used to determine whether the GIS geometry has been set for this Resource. More...
 
bool hasValidGeometry () const
 This method is used to determine whether a valid GIS geometry has been set for this Resource. More...
 
SharedGisGeometry geometry () const
 Accessor method for this Resource's GIS geometry. More...
 
void activate ()
 Activate a resource. More...
 
bool isActive () const
 Accessor method to determine whether this Resource is to be discarded. More...
 
void discard ()
 Discard a resource. More...
 
bool isDiscarded () const
 Accessor method to determine whether this Resource is to be discarded. More...
 
bool hasAsset (const QString &assetName) const
 This method is used to determine whether an asset with the given name is in this Resource. More...
 
void addAsset (const QString &assetName, QVariant &assetValue)
 Inserts an asset with the given name and value into this Resource's VariantList. More...
 
QVariant asset (const QString &assetName) const
 Retrieves the value of the asset in this Resource that is mapped to the given name. More...
 
int removeAsset (const QString &assetName)
 Removes all of the assets in this Resource that are mapped to the given name. More...
 
int clearAssets ()
 Clears the assets from this Resource's VariantList. More...
 
virtual Resourcecopy () const
 Copy this resource for distinct management of its status. More...
 
virtual Resourceclone (const QString &name, const bool &withAssets=false) const
 Clone this resource for additional specialized use. More...
 
virtual PvlObject toPvl (const QString &pvlName="Resource") const
 Transfer all keywords in map to a PvlObject. More...
 

Protected Member Functions

 Resource (const Resource &other, const bool deepcopy)
 Constructs a Resource from another Resource with options to make it a deep or shallow copy of the data. More...
 

Private Types

typedef QMap< QString, QVariant > VariantList
 Defintion for VariantList, a map between a string and a variant type variable. More...
 

Private Attributes

QExplicitlySharedDataPointer< ResourceDatam_data
 Explicitly managed pointer to Resource data. More...
 
bool m_discard
 A flag to indicate whether the Resource is inactive. More...
 

Detailed Description

This class provides a resource of PVL keywords for Strategy classes.

The Resource may have a associated GIS geometry and list of assets. If a Resource has been flagged as discarded (i.e. inactive), then the Strategy using the Resource may be set to not apply algorithms to this Resource.

Author
2012-07-15 Kris Becker
History:
2012-07-15 Kris Becker - Original version.
History:
2015-03-18 Jeannie Backer - Brought class files closer to ISIS coding standards.
History:
2015-03-10 Ian Humphrey - Fixed bug in toPvl() method. The iterator was never being incremented, causing the cnetreader tests to hang.
History:
2015-03-28 Kris Becker - Added the isEqual() method to test for equality or another resource
History:
2015-03-26 Jeannie Backer - Updated documentation.
History:
2015-04-09 Kris Becker - Add Idenitity keyword to Resource upon construction and when callers use setName().
History:
2015-05-06 Kris Becker - Removed some methods that are currently not being called to improve code coverage
History:
2015-09-27 Kris Becker - Refactored to store all Resource data (name, keywords, assets and geometry) in an explicity shared data structure. The status is maintained outside so that Resources can be created to share data, but the active status can be maintained in separate instances. This is quite handy for creating Assets.
History:
2016-02-29 Ian Humphrey - Added Resource class to ISIS. Added unit test, reviewed documentation and coding statndards compliance. Fixes #2406.

Definition at line 54 of file Resource.h.

Member Typedef Documentation

◆ VariantList

typedef QMap<QString, QVariant> Isis::Resource::VariantList
private

Defintion for VariantList, a map between a string and a variant type variable.

Definition at line 114 of file Resource.h.

Constructor & Destructor Documentation

◆ Resource() [1/6]

Isis::Resource::Resource ( )

Default constructor for a Resource object.

The name is set to "Resource" and discard is set to false. The keyword and asset lists are left empty.

Definition at line 31 of file Resource.cpp.

References m_data, and setName().

Referenced by clone(), and copy().

◆ Resource() [2/6]

Isis::Resource::Resource ( const QString &  name)

Constructs a Resource object with the given name.

Discard is set to false. The keyword and asset lists are left empty.

Parameters
nameA string containing the resource name.

Definition at line 43 of file Resource.cpp.

References name(), and setName().

◆ Resource() [3/6]

Isis::Resource::Resource ( const QString &  name,
const PvlFlatMap profile 
)

Constructs a Resource object with the given name and profile of keywords.

Discard is set to false. The asset list is left empty.

Parameters
nameA string containing the resource name.
profileA map between strings and PVL keywords.

Definition at line 56 of file Resource.cpp.

References name(), and setName().

◆ Resource() [4/6]

Isis::Resource::Resource ( const QString &  name,
const PvlContainer profile 
)

Constructs a Resource object with the given name and profile of keywords.

Discard is set to false. The asset list is left empty.

Parameters
nameA string containing the resource name.
profileA PvlContainer of keywords.

Definition at line 95 of file Resource.cpp.

References name(), and setName().

◆ Resource() [5/6]

Isis::Resource::Resource ( const Resource other)

Constructs a Resource from another Resource.

Parameters
otherResource to copy

Definition at line 68 of file Resource.cpp.

◆ ~Resource()

Isis::Resource::~Resource ( )
virtual

Destroys the Resource object.

Definition at line 105 of file Resource.cpp.

◆ Resource() [6/6]

Isis::Resource::Resource ( const Resource other,
const bool  deepcopy 
)
protected

Constructs a Resource from another Resource with options to make it a deep or shallow copy of the data.

Parameters
otherResource to copy
deepcopyA deep copy of the data is made if true, otherwise a shallow copy of the data is performed

Definition at line 81 of file Resource.cpp.

References m_data.

Member Function Documentation

◆ activate()

void Isis::Resource::activate ( )

Activate a resource.

Definition at line 411 of file Resource.cpp.

References m_discard.

Referenced by clone().

◆ add() [1/5]

void Isis::Resource::add ( const PvlFlatMap keys)

Adds the PVL keywords from the given map of keywords to this Resource.

The new keywords are inserted into this Resource's existing PvlFlatMap.

Parameters
keysA PvlFlatMap containing the PvlKeywords to be inserted into the existing keyword list.

Definition at line 310 of file Resource.cpp.

References add(), keys(), and keyword().

◆ add() [2/5]

void Isis::Resource::add ( const PvlKeyword keyword)

Adds the given PVL keyword to this Resource.

The PvlKeyword object is added to the PvlFlatMap belonging to this Resource.

Parameters
keywordA reference to the PvlKeyword object to be added.

Definition at line 298 of file Resource.cpp.

References keyword(), and m_data.

◆ add() [3/5]

void Isis::Resource::add ( const QString &  keywordName,
const QString &  keywordValue 
)

Adds a PVL keyword with the given name and value to this Resource.

A PvlKeyword object is created and added to the PvlFlatMap belonging to this Resource.

Parameters
keywordNameA string containing the name of the keyword to be added.
keywordValueA string containing the value of the keyword to be added.

Definition at line 286 of file Resource.cpp.

References m_data.

Referenced by add(), and setName().

◆ add() [4/5]

void Isis::Resource::add ( GisGeometry geom)

Sets the GIS geometry for this Resource to the given value.

Note this Resource then takes control of this pointer. Therefore, there should be no other references as it is turned into a shared pointer.

See also
add(SharedGisGeometry &geom)
Parameters
geomA pointer to the GisGeometry to be added to this Resource.

Definition at line 356 of file Resource.cpp.

References m_data.

◆ add() [5/5]

void Isis::Resource::add ( SharedGisGeometry geom)

Sets the GIS geometry for this Resource to the given value.

Parameters
geomA shared pointer to the GisGeometry to be added to this Resource.

Definition at line 367 of file Resource.cpp.

References m_data.

◆ addAsset()

void Isis::Resource::addAsset ( const QString &  assetName,
QVariant &  assetValue 
)

Inserts an asset with the given name and value into this Resource's VariantList.

Parameters
assetNameA string containing the name of the asset to be added.
assetValueA QVariant containing the value of the asset to be added.

Definition at line 463 of file Resource.cpp.

References m_data.

◆ append()

void Isis::Resource::append ( const QString &  keywordName,
const QString &  keywordValue 
)

Appends the given value to the PVL keyword with the given name.

If the keyword already exists in the PvlFlatMap, the provided value is appended to the keyword's list of values. Otherwise, a new PVL keyword with the given name and value is added.

Parameters
keywordNameA string containing the keyword name.
keywordValueThe value to be appended to the keyword associated with the given name.

Definition at line 327 of file Resource.cpp.

References m_data.

◆ asset()

QVariant Isis::Resource::asset ( const QString &  assetName) const

Retrieves the value of the asset in this Resource that is mapped to the given name.

Parameters
assetNameA string containing the name of the asset to be accessed.
Returns
QVariant The value of the asset that is mapped to the given name in this Resource's VariantList map.
Exceptions
IException::Programmer"Requested asset does not exist."

Definition at line 504 of file Resource.cpp.

References hasAsset(), m_data, and Isis::IException::Programmer.

◆ clearAssets()

int Isis::Resource::clearAssets ( )

Clears the assets from this Resource's VariantList.

Returns
int The number of assets that were in this Resource's VariantList before clearing it.

Definition at line 487 of file Resource.cpp.

References m_data.

Referenced by clone().

◆ clone()

Resource * Isis::Resource::clone ( const QString &  name,
const bool &  withAssets = false 
) const
virtual

Clone this resource for additional specialized use.

This clone method will create a new Resource with or without Assets. Keywords are fully propagated. The GisGeometry is also propagated as it can easily be reset. The resource status is activated.

Use this method when a deep copy of the Resource data is desired so that it can vary independently of its parent.

Parameters
nameA string containing the name of the new cloned resource.
withAssetsSpecify to also copy out the Asset list.
Returns
Resource* Pointer to new resource

Definition at line 548 of file Resource.cpp.

References activate(), clearAssets(), and Resource().

◆ copy()

Resource * Isis::Resource::copy ( ) const
virtual

Copy this resource for distinct management of its status.

This copy method will create a copy of an existing Resource and retain all its current data and status.

Use this method when a shallow (shared data) copy of the Resource is desired so that its active status can be managed with copy of the same data source.

Returns
Resource* Pointer to new resource

Definition at line 526 of file Resource.cpp.

References m_discard, and Resource().

◆ count()

int Isis::Resource::count ( const QString &  keywordName) const

Counts the number of values the PVL keyword with the given name has, if it exists in this Resource.

Otherwise, it returns 0.

Parameters
keywordNameA string containing the keyword name.
Returns
int The size of the PvlKeyword object mapped to the given name in this Resource's PvlFlatMap.

Definition at line 169 of file Resource.cpp.

References m_data.

◆ discard()

void Isis::Resource::discard ( )

Discard a resource.

Definition at line 429 of file Resource.cpp.

References m_discard.

◆ erase()

int Isis::Resource::erase ( const QString &  keywordName)

Removes all of the PVL keywords in this Resource that are associated with the given name.

Parameters
keywordNameThe name mapped to the PVL keywords to be removed from this Resource's PvlFlatMap.
Returns
int The number of PVL keywords removed from this Resource's PvlFlatMap.

Definition at line 341 of file Resource.cpp.

References m_data.

◆ exists()

bool Isis::Resource::exists ( const QString &  keywordName) const

Determines whether a PVL keyword with the given name is in this Resource.

Parameters
keywordNameA string containing the keyword name.
Returns
bool Indicates whether a PVL keyword in this Resource's PvlFlatMap is mapped to the given name.

Definition at line 155 of file Resource.cpp.

References m_data.

◆ geometry()

SharedGisGeometry Isis::Resource::geometry ( ) const

Accessor method for this Resource's GIS geometry.

Returns
SharedGisGeometry A shared pointer to the GIS geometry associated with this Resource.

Definition at line 403 of file Resource.cpp.

References m_data.

◆ hasAsset()

bool Isis::Resource::hasAsset ( const QString &  assetName) const

This method is used to determine whether an asset with the given name is in this Resource.

Parameters
assetNameA string containing the asset name.
Returns
bool Indicates whether an asset in this Resource's VariantList is mapped to the given name.

Definition at line 452 of file Resource.cpp.

References m_data.

Referenced by asset().

◆ hasGeometry()

bool Isis::Resource::hasGeometry ( ) const

This method is used to determine whether the GIS geometry has been set for this Resource.

Returns
bool Indicates whether the GIS geometry has been set.

Definition at line 378 of file Resource.cpp.

References m_data.

Referenced by hasValidGeometry().

◆ hasValidGeometry()

bool Isis::Resource::hasValidGeometry ( ) const

This method is used to determine whether a valid GIS geometry has been set for this Resource.

If no geometry has been set or the geometry is empty, false is returned.

Returns
bool Indicates whether the GIS geometry is valid.

Definition at line 389 of file Resource.cpp.

References hasGeometry(), and m_data.

◆ isActive()

bool Isis::Resource::isActive ( ) const

Accessor method to determine whether this Resource is to be discarded.

Returns
bool Indicates whether to discard this Resource.

Definition at line 421 of file Resource.cpp.

References m_discard.

◆ isDiscarded()

bool Isis::Resource::isDiscarded ( ) const

Accessor method to determine whether this Resource is to be discarded.

Returns
bool Indicates whether to discard this Resource.

Definition at line 439 of file Resource.cpp.

References m_discard.

◆ isEqual()

bool Isis::Resource::isEqual ( const Resource other) const

Checks for equality of another Resource.

This is nothing more than comparing the names of the two resources. If both resources have the same name without regard to case, they are considered the same resource.

Parameters
otherResource to check for equality
Returns
bool True if names are the same, false otherwise

Definition at line 142 of file Resource.cpp.

References name().

◆ isNull()

bool Isis::Resource::isNull ( const QString &  keywordName,
const int  index = 0 
) const

Determines whether the PVL keyword with the given name at the given index is null.

This method looks for the PVL keyword in this Resource's PvlFlatMap that is mapped to the given name and checks whether the value at the given index is null. If no index is given, by default this method checks the first value (i.e. index 0). If the keyword does not exist in the map, this method returns true.

Parameters
keywordNameName of the PVL keyword whose values will be accessed.
indexZero-based index for the value to be checked.
Returns
bool Indicates whether the given PVL keyword is null at the given index.

Definition at line 187 of file Resource.cpp.

References m_data.

Referenced by value().

◆ keys()

const PvlFlatMap & Isis::Resource::keys ( ) const

Accessor method for the PVL keywords associated with this Resource.

This method gets the PvlFlatMap, a map between a name and PvlKeyword objects.

Returns
const PvlFlatMap& A reference to the map of PVL keywords.

Definition at line 198 of file Resource.cpp.

References m_data.

Referenced by add().

◆ keyword()

PvlKeyword Isis::Resource::keyword ( const QString &  keywordName) const

Gets the PvlKeyword object with the given name, if it exists in this Resource.

If not, an empty PvlKeyword with the given name is returned.

Parameters
keywordNameA string containing the name of the PVL keyword to be accessed.
Returns
PvlKeyword The keyword mapped to the given name in this Resource's PvlFlatMap, if it exists. Otherwise an empty PvlKeyword with the given name.

Definition at line 270 of file Resource.cpp.

References m_data.

Referenced by add().

◆ name()

QString Isis::Resource::name ( ) const

Accessor for a string containing the Resource's name.

Returns
QString The name of this resource.

Definition at line 114 of file Resource.cpp.

References m_data.

Referenced by isEqual(), and Resource().

◆ removeAsset()

int Isis::Resource::removeAsset ( const QString &  assetName)

Removes all of the assets in this Resource that are mapped to the given name.

Parameters
assetNameThe name mapped to the assets to be removed from this Resource's VariantList.
Returns
int The number of assets removed from this Resource's VariantList.

Definition at line 477 of file Resource.cpp.

References m_data.

◆ setName()

void Isis::Resource::setName ( const QString &  identity)

A mutator to set the Resource's name.

Parameters
identityA string containing the name of this Resource.

Definition at line 124 of file Resource.cpp.

References add(), and m_data.

Referenced by Resource().

◆ toPvl()

PvlObject Isis::Resource::toPvl ( const QString &  pvlName = "Resource") const
virtual

Transfer all keywords in map to a PvlObject.

Derived classes of Resource can define their own implementation if propagation of all keywords is not acceptable.

Parameters
pvlNameName of the PVL object to create and fill with map keywords
Returns
PvlObject An object with all keywords in the map

Definition at line 566 of file Resource.cpp.

References m_data.

◆ value() [1/2]

QString Isis::Resource::value ( const QString &  keywordName,
const int &  index = 0 
) const

Gets the value of the PVL keyword with the given name at the given index.

This method looks for the PVL keyword in this Resource's PvlFlatMap that is mapped to the given name and accesses the value at the given index. If no index is given, by default this method returns the first value (i.e. index 0).

Note: If the keyword does not exist in the map, PvlFlatMap throws an exception. To avoid this, the isNull() method can be called before invoking this method to verify whether a value exists at the given index. Otherwise, the value(QString, QString, int) version of this overloaded method can be called.

See also
isNull(QString, int)
value(QString, QString, int)
Parameters
keywordNameA string containing the name of the PVL keyword in this Resource's list of keywords.
indexZero-based index for the value to be accessed.
Returns
QString A string containing the PVL keyword value at the given index.

Definition at line 224 of file Resource.cpp.

References m_data.

Referenced by value().

◆ value() [2/2]

QString Isis::Resource::value ( const QString &  keywordName,
const QString &  defaultValue,
const int &  index = 0 
) const

Gets the value of the PVL keyword at the given index, if found; otherwise it returns the given default value.

This method looks for the PVL keyword in this Resource's PvlFlatMap that is mapped to the given name and accesses the value at the given index. If no index is given, by default this method returns the first value (i.e. index 0).

If the keyword does not exist in the map, the given default value will be returned.

See also
isNull(QString, int)
value(QString, int)
Parameters
keywordNameA string containing the name of the PVL keyword in this Resource's list of keywords.
defaultValueA string containing the default value for this keyword if not found in the PvlFlatMap.
indexZero-based index for the value to be accessed.
Returns
QString A string containing the PVL keyword value at the given index, if it exists; otherwise the given default value is returned.

Definition at line 251 of file Resource.cpp.

References isNull(), and value().

Member Data Documentation

◆ m_data

QExplicitlySharedDataPointer<ResourceData> Isis::Resource::m_data
private

◆ m_discard

bool Isis::Resource::m_discard
private

A flag to indicate whether the Resource is inactive.

It is set to false (active) in the constructors and can be reset using the discard() method.

Definition at line 160 of file Resource.h.

Referenced by activate(), copy(), discard(), isActive(), and isDiscarded().


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