Isis 3 Programmer Reference
Isis::LabelTranslationManager Class Referenceabstract

Allows applications to translate simple text files. More...

#include <LabelTranslationManager.h>

Inheritance diagram for Isis::LabelTranslationManager:
Inheritance graph
Collaboration diagram for Isis::LabelTranslationManager:
Collaboration graph

Public Member Functions

 LabelTranslationManager ()
 Constructs a default LabelTranslationManager. More...
 
 LabelTranslationManager (const QString &transFile)
 Constructs a LabelTranslationManager with a given translation table. More...
 
 LabelTranslationManager (std::istream &transStrm)
 Constructs and initializes a LabelTranslationManager object. More...
 
virtual ~LabelTranslationManager ()
 Destroys the LabelTranslationManager object. More...
 
virtual QString Translate (QString translationGroupName, int findex=0)=0
 
virtual void Auto (Pvl &outputLabel)
 Automatically translate all the output names tagged as Auto in the translation table If a output name does not translate an error will be thrown by one of the support members. More...
 
virtual QStringList parseSpecification (QString specification) const
 
Parses and validates a dependency specification. More...
 
virtual PvlKeyword InputGroup (const QString translationGroupName, const int inst=0) const
 Returns the input group name from the translation table corresponding to the output name argument. More...
 
virtual QString InputKeywordName (const QString translationGroupName) const
 Returns the input keyword name from the translation table corresponding to the output name argument. More...
 
QString InputDefault (const QString translationGroupName) const
 Returns the input default value from the translation table corresponding to the output name argument. More...
 
QString Translate (const QString translationGroupName, const QString inputKeyValue="") const
 Translates a single output value from the given translation group name and input value. More...
 
void AddTable (std::istream &transStm)
 Adds the contents of a translation table to the searchable groups/keys Also performs a verification, to ensure that the translation table is valid. More...
 
void AddTable (const QString &transFile)
 Adds the contents of a translation table to the searchable groups/keys. More...
 

Protected Member Functions

virtual PvlKeyword DoTranslation (const QString translationGroupName)
 Translate the requested output name to output values using the input name and values or default value. More...
 
virtual PvlContainerCreateContainer (const QString translationGroupName, Pvl &pvl)
 Creates all parent PVL containers for an output keyword. More...
 
PvlTranslationTable ()
 Protected accessor for pvl translation table passed into class. More...
 
const PvlTranslationTable () const
 Protected accessor for const pvl translation table passed into class. More...
 
virtual std::vector< std::pair< QString, int > > validKeywords () const
 Returns a vector of valid keyword names and their sizes. More...
 
bool hasInputDefault (const QString translationGroupName)
 Determines whether the given group has a default input value. More...
 
bool IsAuto (const QString translationGroupName)
 Determines whether the given group should be automatically translated. More...
 
bool IsOptional (const QString translationGroupName)
 Determines whether the translation group is optional. More...
 
PvlKeyword OutputPosition (const QString translationGroupName)
 Retrieves the OutputPosition PvlKeyword for the translation group with the given name. More...
 
QString OutputName (const QString translationGroupName)
 Retrieves a string containing the value of the OutputName keyword for the translation group with the given name. More...
 
const PvlGroupfindTranslationGroup (const QString translationGroupName) const
 Searches for translation group with the given name. More...
 

Detailed Description

Allows applications to translate simple text files.

This class allows the translation of text files which can be parsed by the Pvl class.

Author
2017-01-11 Jeannie Backer
History:

2017-01-11 Jeannie Backer - Original Version. Code moved out of PvlTranslationManager to make a generic parent class. Fixes #4584.

2017-01-20 Jesse Mapel - Updated documentation and unit test. Fixes #4584.

2017-05-26 Cole Neubauer - Moved parseDependancy from children class. Fixes #5167.

2017-10-26 Kristin Berry - Modified parseSpecification to switch from parsing translation table dependency specifications of the form name:value to strings of the form name|value. Colons are now used for namespaces only.

Definition at line 59 of file LabelTranslationManager.h.

Constructor & Destructor Documentation

◆ LabelTranslationManager() [1/3]

Isis::LabelTranslationManager::LabelTranslationManager ( )

Constructs a default LabelTranslationManager.

Definition at line 40 of file LabelTranslationManager.cpp.

◆ LabelTranslationManager() [2/3]

Isis::LabelTranslationManager::LabelTranslationManager ( const QString &  transFile)

Constructs a LabelTranslationManager with a given translation table.

Parameters
transfileThe translation table file.

Definition at line 50 of file LabelTranslationManager.cpp.

References Isis::PvlTranslationTable::AddTable().

◆ LabelTranslationManager() [3/3]

Isis::LabelTranslationManager::LabelTranslationManager ( std::istream &  transStrm)

Constructs and initializes a LabelTranslationManager object.

Parameters
transStrmA stream containing the tranlation table to be used to tranlate keywords in the input label.

Definition at line 62 of file LabelTranslationManager.cpp.

References Isis::PvlTranslationTable::AddTable().

◆ ~LabelTranslationManager()

Isis::LabelTranslationManager::~LabelTranslationManager ( )
virtual

Destroys the LabelTranslationManager object.

Definition at line 71 of file LabelTranslationManager.cpp.

Member Function Documentation

◆ AddTable() [1/2]

void Isis::PvlTranslationTable::AddTable ( std::istream &  transStm)
inherited

Adds the contents of a translation table to the searchable groups/keys Also performs a verification, to ensure that the translation table is valid.

Parameters
transStmThe stream to be added.
Exceptions
IException::User- "Unable to find InputKey for group in translation file."
IException::User- "Keyword is not valid. Error in file."
IException::User- "Keyword does not have correct number of elements. Error in file."

Definition at line 118 of file PvlTranslationTable.cpp.

References _FILEINFO_, Isis::PvlContainer::hasKeyword(), Isis::PvlContainer::keywords(), Isis::PvlContainer::name(), Isis::PvlKeyword::name(), and Isis::PvlKeyword::size().

Referenced by LabelTranslationManager(), and Isis::XmlToPvlTranslationManager::XmlToPvlTranslationManager().

◆ AddTable() [2/2]

void Isis::PvlTranslationTable::AddTable ( const QString &  transFile)
inherited

Adds the contents of a translation table to the searchable groups/keys.

Parameters
transFileThe name of the translation file to be added.

Definition at line 100 of file PvlTranslationTable.cpp.

References Isis::Pvl::read().

◆ Auto()

void Isis::LabelTranslationManager::Auto ( Pvl outputLabel)
virtual

Automatically translate all the output names tagged as Auto in the translation table If a output name does not translate an error will be thrown by one of the support members.

The results of the translations will be stored in the outputLabel PVL based on the OutputPosition keywords in the translation table.

Parameters
outputLabelThe PVL to add the translated keywords to.

Reimplemented in Isis::PvlToPvlTranslationManager.

Definition at line 85 of file LabelTranslationManager.cpp.

References CreateContainer(), DoTranslation(), Isis::PvlObject::group(), Isis::PvlObject::groups(), Isis::PvlTranslationTable::IsAuto(), Isis::PvlTranslationTable::IsOptional(), Isis::PvlContainer::name(), and Isis::PvlTranslationTable::TranslationTable().

◆ CreateContainer()

PvlContainer * Isis::LabelTranslationManager::CreateContainer ( const QString  translationGroupName,
Pvl pvl 
)
protectedvirtual

Creates all parent PVL containers for an output keyword.

If any parent containers already exist then they will not be recreated.

Parameters
translationGroupNameThe name of the output keyword. The OutputPosition keyword in the translation group for translationGroupName will be used to determine which containers are made.
pvlThe PVL file to create the containers in.
Returns
PvlContainer The immediate parent container for translationGroupName.

Reimplemented in Isis::PvlToPvlTranslationManager.

Definition at line 115 of file LabelTranslationManager.cpp.

References Isis::PvlObject::addGroup(), Isis::PvlObject::addObject(), Isis::PvlObject::findGroup(), Isis::PvlObject::findObject(), Isis::PvlObject::hasGroup(), Isis::PvlObject::hasObject(), Isis::PvlTranslationTable::OutputPosition(), and Isis::PvlKeyword::size().

Referenced by Auto(), and Isis::PvlToPvlTranslationManager::CreateContainer().

◆ DoTranslation()

PvlKeyword Isis::LabelTranslationManager::DoTranslation ( const QString  outputName)
protectedvirtual

Translate the requested output name to output values using the input name and values or default value.

Parameters
outputNameThe output name used to identify the input keyword to be translated.
Returns
PvlKeyword A keyword containing the output name and output value.

output units

Reimplemented in Isis::PvlToPvlTranslationManager.

Definition at line 159 of file LabelTranslationManager.cpp.

Referenced by Auto().

◆ findTranslationGroup()

const PvlGroup & Isis::PvlTranslationTable::findTranslationGroup ( const QString  translationGroupName) const
protectedinherited

Searches for translation group with the given name.

See also
PvlObject::findGroup()
Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
Returns
const PvlGroup& The first PVL group with the given name.
Exceptions
IException::Programmer- "Unable to find translation group in file."

Definition at line 554 of file PvlTranslationTable.cpp.

References _FILEINFO_, and Isis::PvlContainer::fileName().

◆ hasInputDefault()

bool Isis::PvlTranslationTable::hasInputDefault ( const QString  translationGroupName)
protectedinherited

Determines whether the given group has a default input value.

This method returns true if the translation group contains a PvlKeyword with the name "InputDefault". Note: no value needs to be assigned to this keyword.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
Returns
bool Indicates whether the given group has an InputDefault keyword.

Definition at line 423 of file PvlTranslationTable.cpp.

References Isis::PvlContainer::hasKeyword().

Referenced by Isis::XmlToPvlTranslationManager::Translate().

◆ InputDefault()

QString Isis::PvlTranslationTable::InputDefault ( const QString  translationGroupName) const
inherited

Returns the input default value from the translation table corresponding to the output name argument.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
Returns
QString The input default value.

Definition at line 398 of file PvlTranslationTable.cpp.

References Isis::PvlContainer::hasKeyword().

Referenced by Isis::XmlToPvlTranslationManager::Translate().

◆ InputGroup()

PvlKeyword Isis::PvlTranslationTable::InputGroup ( const QString  translationGroupName,
const int  inst = 0 
) const
virtualinherited

Returns the input group name from the translation table corresponding to the output name argument.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
instThe occurence number of the "InputGroup" keyword (first one is zero)
Returns
QString The input group name
Exceptions
IException::Programmer- "Keyword [InputPosition] cannot have a comma [,] in the value."

Definition at line 301 of file PvlTranslationTable.cpp.

References _FILEINFO_, Isis::PvlContainer::begin(), Isis::PvlContainer::end(), Isis::PvlContainer::findKeyword(), and Isis::PvlKeyword::size().

Referenced by Isis::PvlToXmlTranslationManager::doTranslation(), Isis::PvlToPvlTranslationManager::DoTranslation(), Isis::PvlToXmlTranslationManager::InputHasKeyword(), Isis::PvlToPvlTranslationManager::InputHasKeyword(), Isis::PvlToXmlTranslationManager::InputKeyword(), Isis::PvlToPvlTranslationManager::InputKeyword(), Isis::PvlToXmlTranslationManager::Translate(), and Isis::PvlToPvlTranslationManager::Translate().

◆ InputKeywordName()

QString Isis::PvlTranslationTable::InputKeywordName ( const QString  translationGroupName) const
virtualinherited

Returns the input keyword name from the translation table corresponding to the output name argument.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
Returns
QString The input keyword name
Exceptions
IException::Programmer

Definition at line 376 of file PvlTranslationTable.cpp.

References Isis::PvlContainer::hasKeyword().

Referenced by Isis::PvlToXmlTranslationManager::doTranslation(), Isis::PvlToXmlTranslationManager::InputHasKeyword(), Isis::PvlToPvlTranslationManager::InputHasKeyword(), Isis::PvlToXmlTranslationManager::InputKeyword(), Isis::PvlToPvlTranslationManager::InputKeyword(), Isis::PvlToXmlTranslationManager::Translate(), and Isis::PvlToPvlTranslationManager::Translate().

◆ IsAuto()

bool Isis::PvlTranslationTable::IsAuto ( const QString  translationGroupName)
protectedinherited

Determines whether the given group should be automatically translated.

This method returns true if the translation group contains a PvlKeyword with the name "Auto". Note: no value is assigned to this keyword.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
Returns
bool Indicates whether the given group has an Auto keyword.

Definition at line 448 of file PvlTranslationTable.cpp.

References Isis::PvlContainer::hasKeyword().

Referenced by Auto(), Isis::PvlToXmlTranslationManager::Auto(), and Isis::PvlToPvlTranslationManager::Auto().

◆ IsOptional()

bool Isis::PvlTranslationTable::IsOptional ( const QString  translationGroupName)
protectedinherited

Determines whether the translation group is optional.

This method returns true if the translation group contains a PvlKeyword with the name "Optional". Note: no value is assigned to this keyword.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
Returns
bool Indicates whether the given group has an Optional keyword.

Definition at line 473 of file PvlTranslationTable.cpp.

References Isis::PvlContainer::hasKeyword().

Referenced by Auto(), Isis::PvlToXmlTranslationManager::Auto(), and Isis::PvlToPvlTranslationManager::Auto().

◆ OutputName()

QString Isis::PvlTranslationTable::OutputName ( const QString  translationGroupName)
protectedinherited

Retrieves a string containing the value of the OutputName keyword for the translation group with the given name.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
Returns
QString The value of the OutputName keyword from the given translation group.

Definition at line 527 of file PvlTranslationTable.cpp.

References Isis::PvlContainer::hasKeyword().

Referenced by Isis::PvlToXmlTranslationManager::doTranslation(), and Isis::PvlToPvlTranslationManager::DoTranslation().

◆ OutputPosition()

PvlKeyword Isis::PvlTranslationTable::OutputPosition ( const QString  translationGroupName)
protectedinherited

Retrieves the OutputPosition PvlKeyword for the translation group with the given name.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
Returns
PvlKeyword The OutputPosition keyword from the given translation group.
Exceptions
IException::Programmer- "Unable to find translation keyword [OutputPostion] in translation group in file."

Definition at line 499 of file PvlTranslationTable.cpp.

References _FILEINFO_, and Isis::PvlContainer::hasKeyword().

Referenced by CreateContainer(), and Isis::PvlToXmlTranslationManager::createParentElements().

◆ parseSpecification()

QStringList Isis::LabelTranslationManager::parseSpecification ( QString  specification) const
virtual


Parses and validates a dependency specification.

Parameters
specificationThe dependency specification string.
Returns
QStringList The dependency split into 3 components
  1. the type (att or tag)
  2. the name of what to check
  3. the value to check for
Exceptions
IException::Programmer"Malformed dependency specification."
IException::Programmer"Specification does not have two components separated by [@], the type of dependency and the name-value pair.
IException::Programmer"Dependency type specification is invalid. Valid types are [att] and [tag]"
IException::Programmer"Name-value specification does not have two components separated by [|]."

Definition at line 187 of file LabelTranslationManager.cpp.

References _FILEINFO_, and Isis::IException::Programmer.

Referenced by Isis::PvlToXmlTranslationManager::addAttributes(), Isis::PvlToXmlTranslationManager::addSiblings(), Isis::XmlToPvlTranslationManager::checkDependencies(), Isis::PvlToXmlTranslationManager::createParentElements(), and Isis::PvlToXmlTranslationManager::doTranslation().

◆ Translate()

QString Isis::PvlTranslationTable::Translate ( const QString  translationGroupName,
const QString  inputKeyValue = "" 
) const
inherited

Translates a single output value from the given translation group name and input value.

Parameters
translationGroupNameThe name of the PVL translation group used to identify the input/output keywords to be translated. Often, this is the same as the output keyword name.
inputKeyValueThe value to be translated, from the input keyword.
Returns
QString The translated value, for the output keyword.
Exceptions
IException::Programmer- "No value or default value to translate for translation group."
IException::Programmer- "Unable to find translation value in file."

Definition at line 232 of file PvlTranslationTable.cpp.

References _FILEINFO_, Isis::PvlContainer::begin(), Isis::PvlContainer::end(), Isis::PvlContainer::fileName(), Isis::PvlContainer::findKeyword(), and Isis::PvlContainer::hasKeyword().

Referenced by Isis::PvlToXmlTranslationManager::doTranslation(), Isis::PvlToPvlTranslationManager::DoTranslation(), Isis::PvlToXmlTranslationManager::Translate(), Isis::PvlToPvlTranslationManager::Translate(), and Isis::XmlToPvlTranslationManager::Translate().

◆ TranslationTable() [1/2]

Pvl & Isis::PvlTranslationTable::TranslationTable ( )
protectedinherited

Protected accessor for pvl translation table passed into class.

This method returns a reference to the translation table member.

Returns
Pvl The translation table as a PVL object.

Definition at line 78 of file PvlTranslationTable.cpp.

Referenced by Auto(), Isis::PvlToXmlTranslationManager::Auto(), Isis::PvlToPvlTranslationManager::Auto(), Isis::PvlToPvlTranslationManager::DoTranslation(), Isis::PvlToXmlTranslationManager::InputKeyword(), Isis::PvlToPvlTranslationManager::InputKeyword(), and Isis::XmlToPvlTranslationManager::Translate().

◆ TranslationTable() [2/2]

const Pvl & Isis::PvlTranslationTable::TranslationTable ( ) const
protectedinherited

Protected accessor for const pvl translation table passed into class.

This method returns a const reference to the translation table member.

Returns
Pvl The translation table as a PVL object.

Definition at line 90 of file PvlTranslationTable.cpp.

◆ validKeywords()

vector< pair< QString, int > > Isis::PvlTranslationTable::validKeywords ( ) const
protectedvirtualinherited

Returns a vector of valid keyword names and their sizes.

A size of -1 indicates that the keyword can be any size.

Returns
vector<pair<QString,int>> A vector of valid keyword names and their sizes.

Reimplemented in Isis::XmlToPvlTranslationManager, and Isis::PvlToXmlTranslationManager.

Definition at line 195 of file PvlTranslationTable.cpp.

Referenced by Isis::PvlToXmlTranslationManager::validKeywords(), and Isis::XmlToPvlTranslationManager::validKeywords().


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