Commit d28e3eb2 authored by Jeannie Backer's avatar Jeannie Backer
Browse files

Improved SerialNumberList error messages and unitTest coverage.

git-svn-id: http://subversion.wr.usgs.gov/repos/prog/isis3/branches/ipce@6496 41f8697f-d340-4b68-9986-7bafba869bb8
parent 12fd0bc1
Loading
Loading
Loading
Loading
+60 −56
Original line number Diff line number Diff line
@@ -32,7 +32,9 @@ namespace Isis {
   *   @history 2009-11-05 Jeannie Walldren - Modified number
   *                          of maximum steps for Progress flag
   */
  SerialNumberList::SerialNumberList(const QString &listfile, bool checkTarget, Progress *progress) {
  SerialNumberList::SerialNumberList(const QString &listfile, 
                                     bool checkTarget, 
                                     Progress *progress) {
    p_checkTarget = checkTarget;
    p_target.clear();
    try {
@@ -50,7 +52,7 @@ namespace Isis {
      }
    }
    catch (IException &e) {
      QString msg = "Can't open or invalid file list [" + listfile + "]";
      QString msg = "Can't open or invalid file list [" + listfile + "].";
      throw IException(e, IException::User, msg, _FILEINFO_);
    }
  }
@@ -69,8 +71,7 @@ namespace Isis {
   *
   * @param sn - serial number
   */
  void SerialNumberList::Delete(const QString &sn)
  {
  void SerialNumberList::Delete(const QString &sn) {
    int index = SerialNumberIndex(sn);
    QString sFileName = FileName(sn);

@@ -119,15 +120,15 @@ namespace Isis {
            targetGroup = cubeObj.findGroup("Mapping");
          }
          else {
            QString msg = "Unable to find Instrument or Mapping group in ";
            msg += filename + " for comparing target";
            QString msg = "Unable to find Instrument or Mapping group in "
                          + filename + " for comparing target.";
            throw IException(IException::User, msg, _FILEINFO_);
          }
        }
        else {
          // No Instrument group
          QString msg = "Unable to find Instrument group in " + filename;
          msg += " for comparing target";
          QString msg = "Unable to find Instrument group in " + filename
                        + " for comparing target.";
          throw IException(IException::User, msg, _FILEINFO_);
        }

@@ -137,8 +138,8 @@ namespace Isis {
          p_target = target;
        }
        else if (p_target != target) {
          QString msg = "Target name of [" + target + "] from file [";
          msg += filename + "] does not match [" + p_target + "]";
          QString msg = "Target name of [" + target + "] from file ["
                        + filename + "] does not match [" + p_target + "].";
          throw IException(IException::User, msg, _FILEINFO_);
        }
      }
@@ -147,14 +148,14 @@ namespace Isis {
      QString sn = SerialNumber::Compose(p, def2filename);
      QString on = ObservationNumber::Compose(p, def2filename);
      if (sn == "Unknown") {
        QString msg = "Invalid serial number [Unknown] from file [";
        msg += filename + "]";
        QString msg = "Invalid serial number [Unknown] from file ["
                      + filename + "].";
        throw IException(IException::User, msg, _FILEINFO_);
      }
      else if (HasSerialNumber(sn)) {
        int index = SerialNumberIndex(sn);
        QString msg = "Duplicate, serial number [" + sn + "] from files [";
        msg += SerialNumberList::FileName(sn) + "] and [" + FileName(index) + "].";
        QString msg = "Duplicate, serial number [" + sn + "] from files ["
                      + SerialNumberList::FileName(sn) + "] and [" + FileName(index) + "].";
        throw IException(IException::User, msg, _FILEINFO_);
      }

@@ -178,14 +179,20 @@ namespace Isis {
      p_fileMap.insert(std::pair<QString, int>(nextpair.filename, (int)(p_pairs.size() - 1)));
    }
    catch (IException &e) {
      QString msg = "File [" + Isis::FileName(filename).expanded() +
                        "] can not be added to ";
      msg += "serial number list";
      QString msg = "FileName [" + Isis::FileName(filename).expanded() +
                        "] can not be added to serial number list.";
      throw IException(e, IException::User, msg, _FILEINFO_);
    }
  }


  /**
   * 
   * @param serialNumber 
   * @param filename 
   * 
   * @see Add(QString, QString)
   */
  void SerialNumberList::Add(const char *serialNumber, const char *filename) {

    Add((QString)serialNumber, (QString)filename);
@@ -216,15 +223,13 @@ namespace Isis {
        }
        else if (cubeObj.hasGroup("Mapping")) {
          // No instrument, try Mapping
          if (cubeObj.hasGroup("Mapping")) {
          targetGroup = cubeObj.findGroup("Mapping");
        }
        else {
            QString msg = "Unable to find Instrument or Mapping group in ";
            msg += filename + " for comparing target";
            QString msg = "Unable to find Instrument or Mapping group in "
                          + filename + " for comparing target.";
            throw IException(IException::User, msg, _FILEINFO_);
        }
        }

        target = targetGroup["TargetName"][0];
        target = target.toUpper();
@@ -232,36 +237,37 @@ namespace Isis {
          p_target = target;
        }
        else if (p_target != target) {
          QString msg = "Target name of [" + target + "] from file [";
          msg += filename + "] does not match [" + p_target + "]";
          QString msg = "Target name of [" + target + "] from file ["
                        + filename + "] does not match [" + p_target + "].";
          throw IException(IException::User, msg, _FILEINFO_);
        }
      }

      QString observationNumber = "Unknown";
      if (serialNumber == "Unknown") {
        QString msg = "Invalid serial number [Unknown] from file [";
        msg += filename + "]";
        QString msg = "Invalid serial number [Unknown] from file ["
                      + filename + "].";
        throw IException(IException::User, msg, _FILEINFO_);
      }
      else if (HasSerialNumber(serialNumber)) {
        int index = SerialNumberIndex(serialNumber);
        QString msg = "Duplicate, serial number [" + serialNumber + "] from files [";
        msg += SerialNumberList::FileName(serialNumber) + "] and [" + FileName(index) + "].";
        QString msg = "Duplicate, serial number [" + serialNumber + "] from files ["
                      + SerialNumberList::FileName(serialNumber) 
                      + "] and [" + FileName(index) + "].";
        throw IException(IException::User, msg, _FILEINFO_);
      }

      // Need to obtain the SpacecraftName and InstrumentId from the Instrument
      // group for use in bundle adjustment
      if (!cubeObj.hasGroup("Instrument")) {
        QString msg = "Unable to find Instrument group in " + filename;
        msg += " needed for performing bundle adjustment";
        QString msg = "Unable to find Instrument group in " + filename
                      + " needed for performing bundle adjustment.";
        throw IException(IException::User, msg, _FILEINFO_);
      }
      PvlGroup instGroup = cubeObj.findGroup("Instrument");
      if (!instGroup.hasKeyword("SpacecraftName") || !instGroup.hasKeyword("InstrumentId")) {
        QString msg = "Unable to find SpacecraftName or InstrumentId keywords in " + filename;
        msg += " needed for performing bundle adjustment";
        QString msg = "Unable to find SpacecraftName or InstrumentId keywords in " + filename
                      + " needed for performing bundle adjustment.";
        throw IException(IException::User, msg, _FILEINFO_);
      }

@@ -285,9 +291,9 @@ namespace Isis {
      p_fileMap.insert(std::pair<QString, int>(nextpair.filename, (int)(p_pairs.size() - 1)));
    }
    catch (IException &e) {
      QString msg = "File [" + Isis::FileName(filename).expanded() +
                        "] can not be added to ";
      msg += "serial number list";
      QString msg = "[SerialNumber, FileName] = [" + serialNumber + ", " 
                    + Isis::FileName(filename).expanded() 
                    + "] can not be added to serial number list.";
      throw IException(e, IException::User, msg, _FILEINFO_);
    }
  }
@@ -331,8 +337,8 @@ namespace Isis {
      return p_pairs[index].filename;
    }
    else {
      QString msg = "Requested serial number [" + sn + "] ";
      msg += "does not exist in the list";
      QString msg = "Unable to get the FileName. The given serial number ["
                    + sn + "] does not exist in the list.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
  }
@@ -351,9 +357,8 @@ namespace Isis {
   */
  QString SerialNumberList::SerialNumber(const QString &filename) {
    if (p_fileMap.find(Isis::FileName(filename).expanded()) == p_fileMap.end()) {
      QString msg = "Requested filename [" +
                        Isis::FileName(filename).expanded() + "]";
      msg += "does not exist in the list";
      QString msg = "Unable to get the SerialNumber. The given file name ["
                    + Isis::FileName(filename).expanded() + "] does not exist in the list.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
    int index = FileNameIndex(filename);
@@ -372,8 +377,8 @@ namespace Isis {
      return p_pairs[index].serialNumber;
    }
    else {
      QString num = QString(index);
      QString msg = "Index [" + (QString) num + "] is invalid";
      QString msg = "Unable to get the SerialNumber. The given index [" 
                    + toString(index) + "] is invalid.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
  }
@@ -390,8 +395,8 @@ namespace Isis {
      return p_pairs[index].observationNumber;
    }
    else {
      QString num = QString(index);
      QString msg = "Index [" + (QString) num + "] is invalid";
      QString msg = "Unable to get the ObservationNumber. The given index [" 
                    + toString(index) + "] is invalid.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
  }
@@ -408,8 +413,8 @@ namespace Isis {
      return p_serialMap.find(sn)->second;
    }
    else {
      QString msg = "Requested serial number [" + sn + "] ";
      msg += "does not exist in the list";
      QString msg = "Unable to get the SerialNumber index. The given serial number [" 
                    + sn + "] does not exist in the list.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
  }
@@ -430,9 +435,8 @@ namespace Isis {

    std::map<QString, int>::iterator  pos;
    if ((pos = p_fileMap.find(Isis::FileName(filename).expanded())) == p_fileMap.end()) {
      QString msg = "Requested filename [" +
                        Isis::FileName(filename).expanded() + "]";
      msg += "does not exist in the list";
      QString msg = "Unable to get the FileName index. The given file name ["
                    + Isis::FileName(filename).expanded() + "] does not exist in the list.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
    return pos->second;
@@ -450,8 +454,8 @@ namespace Isis {
      return p_pairs[index].filename;
    }
    else {
      QString num = toString(index);
      QString msg = "Index [" + num + "] is invalid";
      QString msg = "Unable to get the FileName. The given index [" 
                    + toString(index) + "] is invalid.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
  }
@@ -470,8 +474,8 @@ namespace Isis {
      return scid.replace(" ","");
    }
    else {
      QString num = toString(index);
      QString msg = "Index [" + num + "] is invalid";
      QString msg = "Unable to get the Spacecraft InstrumentId. The given index [" 
                    + toString(index) + "] is invalid.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
  }
@@ -492,8 +496,8 @@ namespace Isis {
      return scid.replace(" ","");
    }
    else {
      QString msg = "Requested serial number [" + sn + "] ";
      msg += "does not exist in the list";
      QString msg = "Unable to get the Spacecraft InstrumentId. The given serial number [" 
                    + sn + "] does not exist in the list.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
  }
@@ -519,8 +523,8 @@ namespace Isis {
      return numbers;
    }
    else {
      QString msg = "Requested observation number [" + on + "] ";
      msg += "does not exist in the list";
      QString msg = "Unable to get the possible serial numbers. The given observation number [" 
                    + on + "] does not exist in the list.";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }
  }
+114 −21
Original line number Diff line number Diff line
size   = 5
hasXYZ = 0
ab102401.cub = MGS/561812335:32/MOC-WA/RED
m0402852.cub = MGS/619971158:28/MOC-NA/BROAD_BAND
3133_h1.cub = LO3/HRC/3133/1
ab102402.lev2.cub = ab102402.lev2.cub
m0402852.cub = m0402852.cub

SN->File: ab102401.cub
File->SN:MGS/561812335:32/MOC-WA/RED
MGS/561812335:32/MOC-WA/RED = 0
MGS/619971158:28/MOC-NA/BROAD_BAND = 1
LO3/HRC/3133/1 = 2
ab102402.lev2.cub = 3
m0402852.cub = 4

SN->File (0): ab102401.cub
SerialNumberList size = 5
SerialNumberList has SerialNumber XYZ?          0
SerialNumberList has SerialNumber m0402852.cub? 1
1
  FileName from index                  = ab102401.cub
  FileName from SerialNumber           = ab102401.cub
  FileName index from FileName         = 0
  SerialNumber from index              = MGS/561812335:32/MOC-WA/RED
  SerialNumber from FileName           = MGS/561812335:32/MOC-WA/RED
  SerialNumber index from SerialNumber = 0
  Observation number from index        = MGS/561812335:32/MOC-WA
  Spacecraft Instrument ID from index  = MARSGLOBALSURVEYOR/MOC-WA
  Spacecraft ID from SerialNumber      = MARSGLOBALSURVEYOR/MOC-WA
2
  FileName from index                  = m0402852.cub
  FileName from SerialNumber           = m0402852.cub
  FileName index from FileName         = 1
  SerialNumber from index              = MGS/619971158:28/MOC-NA/BROAD_BAND
  SerialNumber from FileName           = MGS/619971158:28/MOC-NA/BROAD_BAND
  SerialNumber index from SerialNumber = 1
  Observation number from index        = MGS/619971158:28/MOC-NA
  Spacecraft Instrument ID from index  = MARSGLOBALSURVEYOR/MOC-NA
  Spacecraft ID from SerialNumber      = MARSGLOBALSURVEYOR/MOC-NA
3
  FileName from index                  = 3133_h1.cub
  FileName from SerialNumber           = 3133_h1.cub
  FileName index from FileName         = 2
  SerialNumber from index              = LO3/HRC/3133/1
  SerialNumber from FileName           = LO3/HRC/3133/1
  SerialNumber index from SerialNumber = 2
  Observation number from index        = LO3/HRC/3133
  Spacecraft Instrument ID from index  = LUNARORBITER3/HIGHRESOLUTIONCAMERA
  Spacecraft ID from SerialNumber      = LUNARORBITER3/HIGHRESOLUTIONCAMERA
4
  FileName from index                  = ab102402.lev2.cub
  FileName from SerialNumber           = ab102402.lev2.cub
  FileName index from FileName         = 3
  SerialNumber from index              = ab102402.lev2.cub
  SerialNumber from FileName           = ab102402.lev2.cub
  SerialNumber index from SerialNumber = 3
  Observation number from index        = ab102402.lev2.cub
  Spacecraft Instrument ID from index  = /
  Spacecraft ID from SerialNumber      = /
5
  FileName from index                  = m0402852.cub
  FileName from SerialNumber           = m0402852.cub
  FileName index from FileName         = 1
  SerialNumber from index              = m0402852.cub
  SerialNumber from FileName           = MGS/619971158:28/MOC-NA/BROAD_BAND
  SerialNumber index from SerialNumber = 4
  Observation number from index        = Unknown
  Spacecraft Instrument ID from index  = MARSGLOBALSURVEYOR/MOC-NA
  Spacecraft ID from SerialNumber      = MARSGLOBALSURVEYOR/MOC-NA

SN->File (1): m0402852.cub

SN->File (2): 3133_h1.cub
Deleting first SerialNumber in the list...
new list size = 4
new list serial numbers: 
  MGS/619971158:28/MOC-NA/BROAD_BAND
  LO3/HRC/3133/1
  ab102402.lev2.cub
  m0402852.cub

SN->File (3): ab102402.lev2.cub

SN->File (4): m0402852.cub
Possible SerialNumbers for Observation Number: MGS/619971158:28/MOC-NA
  MGS/619971158:28/MOC-NA/BROAD_BAND
Possible SerialNumbers for Observation Number: LO3/HRC/3133
  LO3/HRC/3133/1
Possible SerialNumbers for Observation Number: ab102402.lev2.cub
  ab102402.lev2.cub
Possible SerialNumbers for Observation Number: Unknown
  m0402852.cub

Index->observationNumber (2):  LO3/HRC/3133

**USER ERROR** FileName [.../blobTruth.cub] can not be added to serial number list.
**USER ERROR** Target name of [SKY] from file [.../blobTruth.cub] does not match [MARS].


**USER ERROR** FileName [.../isisTruth.cub] can not be added to serial number list.
**USER ERROR** Unable to find Instrument or Mapping group in $base/testData/isisTruth.cub for comparing target.


**USER ERROR** File [.../blobTruth.cub] can not be added to serial number list.
**USER ERROR** FileName [.../isisTruth.cub] can not be added to serial number list.
**USER ERROR** Unable to find Instrument group in $base/testData/isisTruth.cub for comparing target.


**USER ERROR** [SerialNumber, FileName] = [.../blobTruth.cub] can not be added to serial number list.
**USER ERROR** Target name of [SKY] from file [.../blobTruth.cub] does not match [MARS].


**USER ERROR** [SerialNumber, FileName] = [.../isisTruth.cub] can not be added to serial number list.
**USER ERROR** Unable to find Instrument or Mapping group in $base/testData/isisTruth.cub for comparing target.


**PROGRAMMER ERROR** Unable to get the FileName. The given serial number [Nonsense] does not exist in the list.


**PROGRAMMER ERROR** Unable to get the SerialNumber. The given file name [Nonsense] does not exist in the list.


**PROGRAMMER ERROR** Unable to get the SerialNumber. The given index [17] is invalid.


**PROGRAMMER ERROR** Unable to get the ObservationNumber. The given index [17] is invalid.


**PROGRAMMER ERROR** Unable to get the SerialNumber index. The given serial number [Nonsense] does not exist in the list.


**PROGRAMMER ERROR** Unable to get the FileName index. The given file name [Nonsense] does not exist in the list.


**PROGRAMMER ERROR** Unable to get the FileName. The given index [17] is invalid.


**PROGRAMMER ERROR** Unable to get the Spacecraft InstrumentId. The given index [17] is invalid.


**PROGRAMMER ERROR** Unable to get the Spacecraft InstrumentId. The given serial number [Nonsense] does not exist in the list.


**PROGRAMMER ERROR** Unable to get the possible serial numbers. The given observation number [Nonsense] does not exist in the list.
+180 −23

File changed.

Preview size limit exceeded, changes collapsed.