Commit 233cf8d0 authored by Jesse Mapel's avatar Jesse Mapel Committed by Makayla Shepherd
Browse files

Fixed issues in ControlPointV0003

parent e407f17e
Loading
Loading
Loading
Loading
+72 −68
Original line number Diff line number Diff line
@@ -2,8 +2,12 @@

#include <QString>

#include "ControlMeasureLogData.h"
#include "ControlPointFileEntryV0002.pb.h"
#include "ControlPointV0002.h"
#include "Pvl.h"
#include "IException.h"
#include "PvlObject.h"
#include "PvlContainer.h"

using namespace std;

@@ -25,7 +29,7 @@ namespace Isis {
   *
   * @param pointObject The control point and its measures in a Pvl object
   */
  ControlPointV0003::ControlPointV0003(const PvlObject &pointObject)
  ControlPointV0003::ControlPointV0003(PvlObject &pointObject)
   : m_pointData(new ControlPointFileEntryV0002) {

    // Copy over strings, doubles, and bools
@@ -258,59 +262,59 @@ namespace Isis {
   */
  ControlPointV0003::ControlPointV0003(ControlPointV0002 &oldPoint)
   : m_pointData(new ControlPointFileEntryV0002) {
    QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> oldPointData = oldPoint.pointData();
    ControlNetFileProtoV0001_PBControlPoint oldPointData = oldPoint.pointData();

    // Copy over POD values
    if ( oldPointData->has_id() ) {
      m_pointData->set_id( oldPointData->id() );
    if ( oldPointData.has_id() ) {
      m_pointData->set_id( oldPointData.id() );
    }
    if ( oldPointData->has_choosername() ) {
      m_pointData->set_choosername( oldPointData->choosername() );
    if ( oldPointData.has_choosername() ) {
      m_pointData->set_choosername( oldPointData.choosername() );
    }
    if ( oldPointData->has_datetime() ) {
      m_pointData->set_datetime( oldPointData->datetime() );
    if ( oldPointData.has_datetime() ) {
      m_pointData->set_datetime( oldPointData.datetime() );
    }
    if ( oldPointData->has_apriorisurfpointsourcefile() ) {
      m_pointData->set_apriorisurfpointsourcefile( oldPointData->apriorisurfpointsourcefile() );
    if ( oldPointData.has_apriorisurfpointsourcefile() ) {
      m_pointData->set_apriorisurfpointsourcefile( oldPointData.apriorisurfpointsourcefile() );
    }
    if ( oldPointData->has_aprioriradiussourcefile() ) {
      m_pointData->set_aprioriradiussourcefile( oldPointData->aprioriradiussourcefile() );
    if ( oldPointData.has_aprioriradiussourcefile() ) {
      m_pointData->set_aprioriradiussourcefile( oldPointData.aprioriradiussourcefile() );
    }
    if ( oldPointData->has_jigsawrejected() ) {
      m_pointData->set_jigsawrejected( oldPointData->jigsawrejected() );
    if ( oldPointData.has_jigsawrejected() ) {
      m_pointData->set_jigsawrejected( oldPointData.jigsawrejected() );
    }
    if ( oldPointData->has_editlock() ) {
      m_pointData->set_editlock( oldPointData->editlock() );
    if ( oldPointData.has_editlock() ) {
      m_pointData->set_editlock( oldPointData.editlock() );
    }
    if ( oldPointData->has_ignore() ) {
      m_pointData->set_ignore( oldPointData->ignore() );
    if ( oldPointData.has_ignore() ) {
      m_pointData->set_ignore( oldPointData.ignore() );
    }
    if ( oldPointData->has_apriorix() ) {
      m_pointData->set_apriorix( oldPointData->apriorix() );
    if ( oldPointData.has_apriorix() ) {
      m_pointData->set_apriorix( oldPointData.apriorix() );
    }
    if ( oldPointData->has_aprioriy() ) {
      m_pointData->set_aprioriy( oldPointData->aprioriy() );
    if ( oldPointData.has_aprioriy() ) {
      m_pointData->set_aprioriy( oldPointData.aprioriy() );
    }
    if ( oldPointData->has_aprioriz() ) {
      m_pointData->set_aprioriz( oldPointData->aprioriz() );
    if ( oldPointData.has_aprioriz() ) {
      m_pointData->set_aprioriz( oldPointData.aprioriz() );
    }
    if ( oldPointData->has_adjustedx() ) {
      m_pointData->set_adjustedx( oldPointData->adjustedx() );
    if ( oldPointData.has_adjustedx() ) {
      m_pointData->set_adjustedx( oldPointData.adjustedx() );
    }
    if ( oldPointData->has_adjustedy() ) {
      m_pointData->set_adjustedy( oldPointData->adjustedy() );
    if ( oldPointData.has_adjustedy() ) {
      m_pointData->set_adjustedy( oldPointData.adjustedy() );
    }
    if ( oldPointData->has_adjustedz() ) {
      m_pointData->set_adjustedz( oldPointData->adjustedz() );
    if ( oldPointData.has_adjustedz() ) {
      m_pointData->set_adjustedz( oldPointData.adjustedz() );
    }
    if ( oldPointData->has_latitudeconstrained() ) {
      m_pointData->set_latitudeconstrained( oldPointData->latitudeconstrained() );
    if ( oldPointData.has_latitudeconstrained() ) {
      m_pointData->set_latitudeconstrained( oldPointData.latitudeconstrained() );
    }
    if ( oldPointData->has_longitudeconstrained() ) {
      m_pointData->set_longitudeconstrained( oldPointData->longitudeconstrained() );
    if ( oldPointData.has_longitudeconstrained() ) {
      m_pointData->set_longitudeconstrained( oldPointData.longitudeconstrained() );
    }
    if ( oldPointData->has_radiusconstrained() ) {
      m_pointData->set_radiusconstrained( oldPointData->radiusconstrained() );
    if ( oldPointData.has_radiusconstrained() ) {
      m_pointData->set_radiusconstrained( oldPointData.radiusconstrained() );
    }

    // Copy over enumerated values
@@ -318,8 +322,8 @@ namespace Isis {
    // The only point types in V0002 are ground and tie.
    // So, convert ground and tie to their V0003 values, fixed and free respectively.
    // Later check if the point is constrained.
    if ( oldPointData->has_type() ) {
      ControlNetFileProtoV0001_PBControlPoint_PointType pointType = oldPointData->type();
    if ( oldPointData.has_type() ) {
      ControlNetFileProtoV0001_PBControlPoint_PointType pointType = oldPointData.type();
      if (pointType == ControlNetFileProtoV0001_PBControlPoint::Ground) {
        m_pointData->set_type(ControlPointFileEntryV0002::Fixed);
      }
@@ -332,9 +336,9 @@ namespace Isis {
      }
    }

    if ( oldPointData->has_apriorisurfpointsource() ) {
    if ( oldPointData.has_apriorisurfpointsource() ) {
      ControlNetFileProtoV0001_PBControlPoint_AprioriSource surfacePointSource;
      surfacePointSource = oldPointData->apriorisurfpointsource();
      surfacePointSource = oldPointData.apriorisurfpointsource();
      if (surfacePointSource == ControlNetFileProtoV0001_PBControlPoint::None) {
        m_pointData->set_apriorisurfpointsource(ControlPointFileEntryV0002::None);
      }
@@ -359,9 +363,9 @@ namespace Isis {
      }
    }

    if ( oldPointData->has_aprioriradiussource() ) {
    if ( oldPointData.has_aprioriradiussource() ) {
      ControlNetFileProtoV0001_PBControlPoint_AprioriSource radiusSource;
      radiusSource = oldPointData->aprioriradiussource();
      radiusSource = oldPointData.aprioriradiussource();
      if (radiusSource == ControlNetFileProtoV0001_PBControlPoint::None) {
        m_pointData->set_aprioriradiussource(ControlPointFileEntryV0002::None);
      }
@@ -377,11 +381,11 @@ namespace Isis {
      else if (radiusSource == ControlNetFileProtoV0001_PBControlPoint::DEM) {
        m_pointData->set_aprioriradiussource(ControlPointFileEntryV0002::DEM);
      }
      else if (surfacePointSource == ControlNetFileProtoV0001_PBControlPoint::BundleSolution) {
      else if (radiusSource == ControlNetFileProtoV0001_PBControlPoint::BundleSolution) {
        m_pointData->set_aprioriradiussource(ControlPointFileEntryV0002::BundleSolution);
      }
      else {
        QString msg = "Invalid AprioriRadiusSource, [" + source + "]";
        QString msg = "Invalid AprioriRadiusSource.";
        throw IException(IException::User, msg, _FILEINFO_);
      }
    }
@@ -389,30 +393,30 @@ namespace Isis {
    // Copy the array values

    // If there is a covariance matrix, then the point is constrained
    if (oldPointData->aprioricovar_size() > 0) {
    if (oldPointData.aprioricovar_size() > 0) {
      m_pointData->set_type(ControlPointFileEntryV0002::Constrained);
      m_pointData->add_aprioricovar( oldPointData->aprioricovar(0) );
      m_pointData->add_aprioricovar( oldPointData->aprioricovar(1) );
      m_pointData->add_aprioricovar( oldPointData->aprioricovar(2) );
      m_pointData->add_aprioricovar( oldPointData->aprioricovar(3) );
      m_pointData->add_aprioricovar( oldPointData->aprioricovar(4) );
      m_pointData->add_aprioricovar( oldPointData->aprioricovar(5) );
      m_pointData->add_aprioricovar( oldPointData.aprioricovar(0) );
      m_pointData->add_aprioricovar( oldPointData.aprioricovar(1) );
      m_pointData->add_aprioricovar( oldPointData.aprioricovar(2) );
      m_pointData->add_aprioricovar( oldPointData.aprioricovar(3) );
      m_pointData->add_aprioricovar( oldPointData.aprioricovar(4) );
      m_pointData->add_aprioricovar( oldPointData.aprioricovar(5) );
    }

    if (oldPointData->adjustedcovar_size() > 0) {
      m_pointData->add_adjustedcovar( oldPointData->adjustedcovar(0) );
      m_pointData->add_adjustedcovar( oldPointData->adjustedcovar(1) );
      m_pointData->add_adjustedcovar( oldPointData->adjustedcovar(2) );
      m_pointData->add_adjustedcovar( oldPointData->adjustedcovar(3) );
      m_pointData->add_adjustedcovar( oldPointData->adjustedcovar(4) );
      m_pointData->add_adjustedcovar( oldPointData->adjustedcovar(5) );
    if (oldPointData.adjustedcovar_size() > 0) {
      m_pointData->add_adjustedcovar( oldPointData.adjustedcovar(0) );
      m_pointData->add_adjustedcovar( oldPointData.adjustedcovar(1) );
      m_pointData->add_adjustedcovar( oldPointData.adjustedcovar(2) );
      m_pointData->add_adjustedcovar( oldPointData.adjustedcovar(3) );
      m_pointData->add_adjustedcovar( oldPointData.adjustedcovar(4) );
      m_pointData->add_adjustedcovar( oldPointData.adjustedcovar(5) );
    }

    // Copy the measures
    for (int i = 0; i < oldPointData->measures_size(); i++) {
    for (int i = 0; i < oldPointData.measures_size(); i++) {
      ControlPointFileEntryV0002_Measure *newMeasure = m_pointData->add_measures();
      ControlNetFileProtoV0001_PBControlPoint_PBControlMeasure oldMeasure;
      oldMeasure = oldPointData->measures(i);
      oldMeasure = oldPointData.measures(i);

      // Copy over POD values
      if ( oldMeasure.has_serialnumber() ) {
@@ -514,7 +518,7 @@ namespace Isis {
   *                                              point data. There is no guarantee that the point
   *                                              data is fully initialized.
   */
  const ControlPointFileEntryV0002 &ControlPointV0003::pointData() const {
  const ControlPointFileEntryV0002 &ControlPointV0003::pointData() {
    if (!m_pointData) {
      m_pointData.reset(new ControlPointFileEntryV0002);
    }
@@ -550,7 +554,7 @@ namespace Isis {
    value = value.toLower();

    if (value == "true" || value == "yes")
      (point->*setter)(true);
      (point.data()->*setter)(true);
  }


@@ -570,7 +574,7 @@ namespace Isis {
   */
  void ControlPointV0003::copy(PvlContainer &container,
                               QString keyName,
                               QSharedPointer<ControlPointFileEntryV0002> &point,
                               QSharedPointer<ControlPointFileEntryV0002> point,
                               void (ControlPointFileEntryV0002::*setter)(double)) {

    if (!container.hasKeyword(keyName))
@@ -578,7 +582,7 @@ namespace Isis {

    double value = toDouble(container[keyName][0]);
    container.deleteKeyword(keyName);
    (point->*setter)(value);
    (point.data()->*setter)(value);
  }


@@ -598,7 +602,7 @@ namespace Isis {
   */
  void ControlPointV0003::copy(PvlContainer &container,
                               QString keyName,
                               QSharedPointer<ControlPointFileEntryV0002> &point,
                               QSharedPointer<ControlPointFileEntryV0002> point,
                               void (ControlPointFileEntryV0002::*setter)(const std::string&)) {

    if (!container.hasKeyword(keyName))
@@ -606,7 +610,7 @@ namespace Isis {

    QString value = container[keyName][0];
    container.deleteKeyword(keyName);
    (point->*setter)(value);
    (point.data()->*setter)(value.toLatin1().data());
  }


@@ -694,6 +698,6 @@ namespace Isis {

    QString value = container[keyName][0];
    container.deleteKeyword(keyName);
    (measure.*set)(value);
    (measure.*setter)(value.toLatin1().data());
  }
}
+8 −7
Original line number Diff line number Diff line
@@ -30,21 +30,22 @@
namespace Isis {
  class ControlPointV0002;
  class PvlObject;
  class PvlContainer;

  //TODO document this
  class ControlPointV0003 {
    public:
      ControlPointV0003(const PvlObject &pointObject);
      ControlPointV0003(const ControlPointFileEntryV0002 &pointData);
      ControlPointV0003(PvlObject &pointObject);
      ControlPointV0003(QSharedPointer<ControlPointFileEntryV0002> pointData);
      ControlPointV0003(ControlPointV0002 &oldPoint);

      const ControlPointFileEntryV0002 &pointData() const;
      const ControlPointFileEntryV0002 &pointData();

    private:
      // These are intentionally not implemented
      ControlPointV0003();
      ControlPointV0003(const &ControlPointV0003 other);
      ControlPointV0003 &operator=(const &ControlPointV0003 other);
      ControlPointV0003(const ControlPointV0003 &other);
      ControlPointV0003 &operator=(const ControlPointV0003 &other);

      // methods for converting from Pvl to protobuf
      void copy(PvlContainer &container,
@@ -53,11 +54,11 @@ namespace Isis {
                void (ControlPointFileEntryV0002::*setter)(bool));
      void copy(PvlContainer &container,
                QString keyName,
                QSharedPointer<ControlPointFileEntryV0002> &point,
                QSharedPointer<ControlPointFileEntryV0002> point,
                void (ControlPointFileEntryV0002::*setter)(double));
      void copy(PvlContainer &container,
                QString keyName,
                QSharedPointer<ControlPointFileEntryV0002> &point,
                QSharedPointer<ControlPointFileEntryV0002> point,
                void (ControlPointFileEntryV0002::*setter)(const std::string&));
      void copy(PvlContainer &container,
                QString keyName,