Isis 3 Programmer Reference
|
This class provides a resource of PVL keywords for Strategy classes. More...
#include <Resource.h>
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 PvlFlatMap & | keys () 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 Resource * | copy () const |
Copy this resource for distinct management of its status. More... | |
virtual Resource * | clone (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< ResourceData > | m_data |
Explicitly managed pointer to Resource data. More... | |
bool | m_discard |
A flag to indicate whether the Resource is inactive. More... | |
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.
2012-07-15 Kris Becker - Original version.
2015-03-18 Jeannie Backer - Brought class files closer to ISIS coding standards.
2015-03-10 Ian Humphrey - Fixed bug in toPvl() method. The iterator was never being incremented, causing the cnetreader tests to hang.
2015-03-28 Kris Becker - Added the isEqual() method to test for equality or another resource
2015-03-26 Jeannie Backer - Updated documentation.
2015-04-09 Kris Becker - Add Idenitity keyword to Resource upon construction and when callers use setName().
2015-05-06 Kris Becker - Removed some methods that are currently not being called to improve code coverage
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.
2016-02-29 Ian Humphrey - Added Resource class to ISIS. Added unit test, reviewed documentation and coding statndards compliance. Fixes #2406.
Definition at line 71 of file Resource.h.
|
private |
Defintion for VariantList, a map between a string and a variant type variable.
Definition at line 131 of file Resource.h.
Isis::Resource::Resource | ( | ) |
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.
name | A string containing the resource name. |
Definition at line 60 of file Resource.cpp.
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.
name | A string containing the resource name. |
profile | A map between strings and PVL keywords. |
Definition at line 73 of file Resource.cpp.
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.
name | A string containing the resource name. |
profile | A PvlContainer of keywords. |
Definition at line 112 of file Resource.cpp.
Isis::Resource::Resource | ( | const Resource & | other | ) |
Constructs a Resource from another Resource.
other | Resource to copy |
Definition at line 85 of file Resource.cpp.
|
virtual |
Destroys the Resource object.
Definition at line 122 of file Resource.cpp.
|
protected |
void Isis::Resource::activate | ( | ) |
Activate a resource.
Definition at line 428 of file Resource.cpp.
References m_discard.
Referenced by clone().
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.
keywordName | A string containing the name of the keyword to be added. |
keywordValue | A string containing the value of the keyword to be added. |
Definition at line 303 of file Resource.cpp.
References m_data.
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.
keyword | A reference to the PvlKeyword object to be added. |
Definition at line 315 of file Resource.cpp.
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.
keys | A PvlFlatMap containing the PvlKeywords to be inserted into the existing keyword list. |
Definition at line 327 of file Resource.cpp.
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.
geom | A pointer to the GisGeometry to be added to this Resource. |
Definition at line 373 of file Resource.cpp.
References m_data.
void Isis::Resource::add | ( | SharedGisGeometry & | geom | ) |
Sets the GIS geometry for this Resource to the given value.
geom | A shared pointer to the GisGeometry to be added to this Resource. |
Definition at line 384 of file Resource.cpp.
References m_data.
void Isis::Resource::addAsset | ( | const QString & | assetName, |
QVariant & | assetValue | ||
) |
Inserts an asset with the given name and value into this Resource's VariantList.
assetName | A string containing the name of the asset to be added. |
assetValue | A QVariant containing the value of the asset to be added. |
Definition at line 480 of file Resource.cpp.
References m_data.
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.
keywordName | A string containing the keyword name. |
keywordValue | The value to be appended to the keyword associated with the given name. |
Definition at line 344 of file Resource.cpp.
References m_data.
QVariant Isis::Resource::asset | ( | const QString & | assetName | ) | const |
Retrieves the value of the asset in this Resource that is mapped to the given name.
assetName | A string containing the name of the asset to be accessed. |
IException::Programmer | "Requested asset does not exist." |
Definition at line 521 of file Resource.cpp.
References _FILEINFO_, hasAsset(), m_data, and Isis::IException::Programmer.
int Isis::Resource::clearAssets | ( | ) |
|
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.
name | A string containing the name of the new cloned resource. |
withAssets | Specify to also copy out the Asset list. |
Definition at line 565 of file Resource.cpp.
References activate(), clearAssets(), and Resource().
|
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.
Definition at line 543 of file Resource.cpp.
References m_discard, and Resource().
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.
keywordName | A string containing the keyword name. |
Definition at line 186 of file Resource.cpp.
References m_data.
void Isis::Resource::discard | ( | ) |
int Isis::Resource::erase | ( | const QString & | keywordName | ) |
Removes all of the PVL keywords in this Resource that are associated with the given name.
keywordName | The name mapped to the PVL keywords to be removed from this Resource's PvlFlatMap. |
Definition at line 358 of file Resource.cpp.
References m_data.
bool Isis::Resource::exists | ( | const QString & | keywordName | ) | const |
Determines whether a PVL keyword with the given name is in this Resource.
keywordName | A string containing the keyword name. |
Definition at line 172 of file Resource.cpp.
References m_data.
SharedGisGeometry Isis::Resource::geometry | ( | ) | const |
Accessor method for this Resource's GIS geometry.
Definition at line 420 of file Resource.cpp.
References m_data.
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.
assetName | A string containing the asset name. |
Definition at line 469 of file Resource.cpp.
References m_data.
Referenced by asset().
bool Isis::Resource::hasGeometry | ( | ) | const |
This method is used to determine whether the GIS geometry has been set for this Resource.
Definition at line 395 of file Resource.cpp.
References m_data.
Referenced by 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.
Definition at line 406 of file Resource.cpp.
References hasGeometry(), and m_data.
bool Isis::Resource::isActive | ( | ) | const |
Accessor method to determine whether this Resource is to be discarded.
Definition at line 438 of file Resource.cpp.
References m_discard.
bool Isis::Resource::isDiscarded | ( | ) | const |
Accessor method to determine whether this Resource is to be discarded.
Definition at line 456 of file Resource.cpp.
References m_discard.
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.
other | Resource to check for equality |
Definition at line 159 of file Resource.cpp.
References name().
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.
keywordName | Name of the PVL keyword whose values will be accessed. |
index | Zero-based index for the value to be checked. |
Definition at line 204 of file Resource.cpp.
References m_data.
Referenced by value().
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.
Definition at line 215 of file Resource.cpp.
References m_data.
Referenced by add().
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.
keywordName | A string containing the name of the PVL keyword to be accessed. |
Definition at line 287 of file Resource.cpp.
References m_data.
Referenced by add().
QString Isis::Resource::name | ( | ) | const |
Accessor for a string containing the Resource's name.
Definition at line 131 of file Resource.cpp.
References m_data.
Referenced by isEqual(), and Resource().
int Isis::Resource::removeAsset | ( | const QString & | assetName | ) |
Removes all of the assets in this Resource that are mapped to the given name.
assetName | The name mapped to the assets to be removed from this Resource's VariantList. |
Definition at line 494 of file Resource.cpp.
References m_data.
void Isis::Resource::setName | ( | const QString & | identity | ) |
A mutator to set the Resource's name.
identity | A string containing the name of this Resource. |
Definition at line 141 of file Resource.cpp.
Referenced by Resource().
|
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.
pvlName | Name of the PVL object to create and fill with map keywords |
Definition at line 583 of file Resource.cpp.
References m_data.
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.
keywordName | A string containing the name of the PVL keyword in this Resource's list of keywords. |
index | Zero-based index for the value to be accessed. |
Definition at line 241 of file Resource.cpp.
References m_data.
Referenced by value().
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.
keywordName | A string containing the name of the PVL keyword in this Resource's list of keywords. |
defaultValue | A string containing the default value for this keyword if not found in the PvlFlatMap. |
index | Zero-based index for the value to be accessed. |
Definition at line 268 of file Resource.cpp.
|
private |
Explicitly managed pointer to Resource data.
Definition at line 176 of file Resource.h.
Referenced by add(), addAsset(), append(), asset(), clearAssets(), count(), erase(), exists(), geometry(), hasAsset(), hasGeometry(), hasValidGeometry(), isNull(), keys(), keyword(), name(), removeAsset(), Resource(), setName(), toPvl(), and value().
|
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 177 of file Resource.h.
Referenced by activate(), copy(), discard(), isActive(), and isDiscarded().