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

Xml reader/writer continued.

git-svn-id: http://subversion.wr.usgs.gov/repos/prog/isis3/branches/ipce@5945 41f8697f-d340-4b68-9986-7bafba869bb8
parent 36f34db8
Loading
Loading
Loading
Loading
+20 −18
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ namespace Isis {
  }



// TODO: should project be const ???
  StatCumProbDistDynCalc::StatCumProbDistDynCalc(Project *project, XmlStackedHandlerReader *xmlReader, QObject *parent) {   // TODO: does xml stuff need project???
    m_id = NULL;
    // ??? initializations ???
@@ -531,17 +531,19 @@ namespace Isis {



// TODO: should project be const ???
  StatCumProbDistDynCalc::XmlHandler::XmlHandler(StatCumProbDistDynCalc *probabilityCalc, Project *project) {   // TODO: does xml stuff need project???
    m_probabilityCalc = probabilityCalc;
    m_project = project;   // TODO: does xml stuff need project???
    m_characters = "";
    m_xmlHandlerCumProbCalc = probabilityCalc;
    m_xmlHandlerProject = project;   // TODO: does xml stuff need project???
    m_xmlHandlerCharacters = "";
  }



  StatCumProbDistDynCalc::XmlHandler::~XmlHandler() {
    delete m_project;    // TODO: does xml stuff need project???
    m_project = NULL;
    // do not delete this pointer... we don't own it, do we??? passed into StatCumProbDistDynCalc constructor as pointer
//    delete m_xmlHandlerProject;    // TODO: does xml stuff need project???
    m_xmlHandlerProject = NULL;
  }


@@ -550,7 +552,7 @@ namespace Isis {
                                                                const QString &localName,
                                                                const QString &qName,
                                                                const QXmlAttributes &atts) {
    m_characters = "";
    m_xmlHandlerCharacters = "";
    if (XmlStackedHandler::startElement(namespaceURI, localName, qName, atts)) {
      // no element attibutes to evaluate
    }
@@ -560,7 +562,7 @@ namespace Isis {


  bool StatCumProbDistDynCalc::XmlHandler::characters(const QString &ch) {
    m_characters += ch;
    m_xmlHandlerCharacters += ch;
    return XmlStackedHandler::characters(ch);
  }

@@ -568,31 +570,31 @@ namespace Isis {

  bool StatCumProbDistDynCalc::XmlHandler::endElement(const QString &namespaceURI, const QString &localName,
                                     const QString &qName) {
    if (!m_characters.isEmpty()) {
    if (!m_xmlHandlerCharacters.isEmpty()) {
      if (localName == "id") {
        m_probabilityCalc->m_id = NULL;
        m_probabilityCalc->m_id = new QUuid(m_characters);
        m_xmlHandlerCumProbCalc->m_id = NULL;
        m_xmlHandlerCumProbCalc->m_id = new QUuid(m_xmlHandlerCharacters);
      }
      else if (localName == "numberCells") {
        m_probabilityCalc->m_numberCells = toInt(m_characters);
        m_xmlHandlerCumProbCalc->m_numberCells = toInt(m_xmlHandlerCharacters);
      }
      else if (localName == "numberObservations") {
        m_probabilityCalc->m_numberObservations = toInt(m_characters);
        m_xmlHandlerCumProbCalc->m_numberObservations = toInt(m_xmlHandlerCharacters);
      }
      else if (localName == "quantile") {
        m_probabilityCalc->m_quantiles.append(toDouble(m_characters));
        m_xmlHandlerCumProbCalc->m_quantiles.append(toDouble(m_xmlHandlerCharacters));
      }
      else if (localName == "idealNumObsBelowQuantile") {
        m_probabilityCalc->m_idealNum.append(toDouble(m_characters));
        m_xmlHandlerCumProbCalc->m_idealNum.append(toDouble(m_xmlHandlerCharacters));
      }
      else if (localName == "numObsBelowQuantile") {
        m_probabilityCalc->m_n.append(toInt(m_characters));
        m_xmlHandlerCumProbCalc->m_n.append(toInt(m_xmlHandlerCharacters));
      }
      else if (localName == "value") {
        m_probabilityCalc->m_quantileValues.append(toDouble(m_characters));
        m_xmlHandlerCumProbCalc->m_quantileValues.append(toDouble(m_xmlHandlerCharacters));
      }
                                           
      m_characters = "";
      m_xmlHandlerCharacters = "";
    }
    return XmlStackedHandler::endElement(namespaceURI, localName, qName);
  }
+3 −3
Original line number Diff line number Diff line
@@ -125,9 +125,9 @@ namespace Isis {
        private:
          Q_DISABLE_COPY(XmlHandler);
   
          StatCumProbDistDynCalc *m_probabilityCalc;
          Project *m_project;   // TODO: does xml stuff need project???
          QString m_characters;
          StatCumProbDistDynCalc *m_xmlHandlerCumProbCalc;
          Project *m_xmlHandlerProject;   // TODO: does xml stuff need project???
          QString m_xmlHandlerCharacters;
      };

      QUuid *m_id; /**< A unique ID for this object (useful for others to reference
+28 −27
Original line number Diff line number Diff line
@@ -618,16 +618,17 @@ namespace Isis {


  Statistics::XmlHandler::XmlHandler(Statistics *statistics, Project *project) {   // TODO: does xml stuff need project???
    m_statistics = statistics;
    m_project = project;   // TODO: does xml stuff need project???
    m_characters = "";
    m_xmlHandlerStatistics = statistics;
    m_xmlHandlerProject = project;   // TODO: does xml stuff need project???
    m_xmlHandlerCharacters = "";
  }



  Statistics::XmlHandler::~XmlHandler() {
    // ??? compile error ??? delete m_project;    // TODO: does xml stuff need project???
    m_project = NULL;
    // do not delete this pointer... we don't own it, do we??? passed into StatCumProbDistDynCalc constructor as pointer
    // delete m_xmlHandlerProject;    // TODO: does xml stuff need project???
    m_xmlHandlerProject = NULL;
  }


@@ -636,7 +637,7 @@ namespace Isis {
                                                                const QString &localName,
                                                                const QString &qName,
                                                                const QXmlAttributes &atts) {
    m_characters = "";
    m_xmlHandlerCharacters = "";
    if (XmlStackedHandler::startElement(namespaceURI, localName, qName, atts)) {
      // no element attibutes to evaluate
    }
@@ -646,7 +647,7 @@ namespace Isis {


  bool Statistics::XmlHandler::characters(const QString &ch) {
    m_characters += ch;
    m_xmlHandlerCharacters += ch;
    return XmlStackedHandler::characters(ch);
  }

@@ -654,58 +655,58 @@ namespace Isis {

  bool Statistics::XmlHandler::endElement(const QString &namespaceURI, const QString &localName,
                                     const QString &qName) {
    if (!m_characters.isEmpty()) {
    if (!m_xmlHandlerCharacters.isEmpty()) {
      if (localName == "id") {
        m_statistics->m_id = NULL;
        m_statistics->m_id = new QUuid(m_characters);
        m_xmlHandlerStatistics->m_id = NULL;
        m_xmlHandlerStatistics->m_id = new QUuid(m_xmlHandlerCharacters);
      }
      if (localName == "sum") {
        m_statistics->m_sum = toDouble(m_characters);
        m_statistics->m_sumsum = m_statistics->m_sum * m_statistics->m_sum;
        m_xmlHandlerStatistics->m_sum = toDouble(m_xmlHandlerCharacters);
        m_xmlHandlerStatistics->m_sumsum = m_xmlHandlerStatistics->m_sum * m_xmlHandlerStatistics->m_sum;
      }
      if (localName == "minimum") {
        m_statistics->m_minimum = toDouble(m_characters);
        m_xmlHandlerStatistics->m_minimum = toDouble(m_xmlHandlerCharacters);
      }
      if (localName == "maximum") {
        m_statistics->m_maximum = toInt(m_characters);
        m_xmlHandlerStatistics->m_maximum = toInt(m_xmlHandlerCharacters);
      }
      if (localName == "validMinimum") {
        m_statistics->m_validMinimum = toInt(m_characters);
        m_xmlHandlerStatistics->m_validMinimum = toInt(m_xmlHandlerCharacters);
      }
      if (localName == "validMaximum") {
        m_statistics->m_validMaximum = toDouble(m_characters);
        m_xmlHandlerStatistics->m_validMaximum = toDouble(m_xmlHandlerCharacters);
      }
      if (localName == "totalPixels") {
        m_statistics->m_totalPixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_totalPixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "validPixels") {
        m_statistics->m_validPixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_validPixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "nullPixels") {
        m_statistics->m_nullPixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_nullPixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "lisPixels") {
        m_statistics->m_lisPixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_lisPixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "lrsPixels") {
        m_statistics->m_lrsPixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_lrsPixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "hisPixels") {
        m_statistics->m_hisPixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_hisPixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "hrsPixels") {
        m_statistics->m_hrsPixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_hrsPixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "underRangePixels") {
        m_statistics->m_underRangePixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_underRangePixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "overRangePixels") {
        m_statistics->m_overRangePixels = toBigInt(m_characters);
        m_xmlHandlerStatistics->m_overRangePixels = toBigInt(m_xmlHandlerCharacters);
      }
      if (localName == "removedData") {
        m_statistics->m_removedData = toBool(m_characters);
        m_xmlHandlerStatistics->m_removedData = toBool(m_xmlHandlerCharacters);
      }
      m_characters = "";
      m_xmlHandlerCharacters = "";
    }
    return XmlStackedHandler::endElement(namespaceURI, localName, qName);
  }
+3 −3
Original line number Diff line number Diff line
@@ -186,9 +186,9 @@ namespace Isis {
        private:
          Q_DISABLE_COPY(XmlHandler);
   
          Statistics *m_statistics;
          Project *m_project;   // TODO: does xml stuff need project???
          QString m_characters;
          Statistics *m_xmlHandlerStatistics;
          Project *m_xmlHandlerProject;   // TODO: does xml stuff need project???
          QString m_xmlHandlerCharacters;
      };

      QUuid *m_id; /**< A unique ID for this object (useful for others to reference
+109 −52
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

#include <QDataStream>
#include <QDebug>
#include <QList>
#include <QUuid>
#include <QXmlStreamWriter>

@@ -22,6 +23,7 @@ namespace Isis {
    m_id = NULL;
    m_id = new QUuid(QUuid::createUuid());

    m_runTime = "";

    m_controlNetworkFileName = NULL;
    m_controlNetworkFileName = new FileName(controlNetworkFileName);
@@ -31,19 +33,18 @@ namespace Isis {

    m_statisticsResults = NULL;

    m_runTime = "";

    m_images = NULL;
  }


  
  BundleResults::BundleResults(const BundleResults &other)
      : m_id(new QUuid(other.m_id->toString())),
        m_runTime(other.m_runTime),
        m_controlNetworkFileName(new FileName(other.m_controlNetworkFileName->expanded())),
        m_settings(new BundleSettings(*other.m_settings)),
        m_statisticsResults(new BundleStatistics(*other.m_statisticsResults)) {
    // TODO: add m_images???
    // TODO: add m_runTime???
        m_statisticsResults(new BundleStatistics(*other.m_statisticsResults)),
        m_images(new QList<ImageList *>(*other.m_images)) { // is this correct???

  }

@@ -61,6 +62,9 @@ namespace Isis {

    delete m_statisticsResults;
    m_statisticsResults = NULL;

    delete m_images;
    m_images = NULL;
  }


@@ -73,6 +77,8 @@ namespace Isis {
      m_id = NULL;
      m_id = new QUuid(other.m_id->toString());

      m_runTime = other.m_runTime;

      delete m_controlNetworkFileName;
      m_controlNetworkFileName = NULL;
      m_controlNetworkFileName = new FileName(other.m_controlNetworkFileName->expanded());
@@ -84,8 +90,10 @@ namespace Isis {
      delete m_statisticsResults;
      m_statisticsResults = NULL;
      m_statisticsResults = new BundleStatistics(*other.m_statisticsResults);
    // TODO: add m_images???
    // TODO: add m_runTime???

      delete m_images;
      m_images = NULL;
      m_images = new QList<ImageList *>(*other.m_images);
    }
    return *this;
  }
@@ -105,11 +113,12 @@ namespace Isis {
                                     QString statisticsName) {

    PvlObject pvl(resultsName);
    pvl += PvlKeyword("RunTime", runTime());
    if (m_controlNetworkFileName->expanded() != "") {
      pvl += PvlKeyword("OutputControlNetwork", m_controlNetworkFileName->expanded());
      pvl += PvlKeyword("OutputControlNetwork", controlNetworkFileName());
    }
    pvl += m_settings->pvlObject(settingsName);
    pvl += m_statisticsResults->pvlObject(statisticsName);
    pvl += bundleSettings()->pvlObject(settingsName);
    pvl += bundleStatistics()->pvlObject(statisticsName);
    return pvl;

  }
@@ -144,13 +153,15 @@ namespace Isis {
    m_statisticsResults->save(stream, project);

    // save image lists to stream
    stream.writeStartElement("images");
    stream.writeAttribute("numberImageLists", toString(m_images->size()));
    for (int i = 0; i < m_images->size(); i++) {
      m_images->at(i)->save(stream, project, newProjectRoot);
    if ( !m_images->isEmpty() ) {
      stream.writeStartElement("imageLists");

      for (int i = 0; i < m_images->count(); i++) {
        m_images->at(i)->save(stream, project, "");
      }
    stream.writeEndElement(); // end images

      stream.writeEndElement();
    }
    stream.writeEndElement(); //end bundleResults
  }

@@ -164,15 +175,36 @@ namespace Isis {
   * @param imageFolder The folder that contains the Cube
   */
  BundleResults::XmlHandler::XmlHandler(BundleResults *bundleResults, Project *project) {
    m_bundleResults = bundleResults;
    m_project = project;
    m_xmlHandlerBundleResults = NULL;
    m_xmlHandlerBundleResults = new BundleResults(*bundleResults);
    m_xmlHandlerProject = NULL;
    m_xmlHandlerProject = project;
    m_xmlHandlerCharacters = "";
    m_xmlHandlerImages = NULL;
    m_xmlHandlerBundleSettings = NULL;
    m_xmlHandlerBundleStatistics = NULL;
  }



  BundleResults::XmlHandler::~XmlHandler() {
    delete m_project;
    m_project = NULL;
    // bundleResults passed in is "this" delete+null will cause problems,no?
//    delete m_xmlHandlerBundleResults;
//    m_xmlHandlerBundleResults = NULL;

    // we do not delete this pointer since it was set to a passed in pointer in constructor and we
    // don't own it... is that right???
//    delete m_xmlHandlerProject;
    m_xmlHandlerProject = NULL;

    delete m_xmlHandlerImages;
    m_xmlHandlerImages = NULL;

    delete m_xmlHandlerBundleSettings;
    m_xmlHandlerBundleSettings = NULL;

    delete m_xmlHandlerBundleStatistics;
    m_xmlHandlerBundleStatistics = NULL;
  }


@@ -184,50 +216,67 @@ namespace Isis {
   */
  bool BundleResults::XmlHandler::startElement(const QString &namespaceURI, const QString &localName,
                                       const QString &qName, const QXmlAttributes &atts) {
    m_characters = "";
    m_xmlHandlerCharacters = "";

    if (XmlStackedHandler::startElement(namespaceURI, localName, qName, atts)) {

      if (localName == "generalAttributes") {
        QString identification = atts.value("id");
        if (!identification.isEmpty()) {
          delete m_bundleResults->m_id;
          m_bundleResults->m_id = NULL;
          m_bundleResults->m_id = new QUuid(identification);
      if (localName == "bundleSettings") {
        delete m_xmlHandlerBundleSettings;
        m_xmlHandlerBundleSettings = NULL;
        m_xmlHandlerBundleSettings = new BundleSettings(m_xmlHandlerProject, reader());
      }
      else if (localName == "bundleStatistics") {
        delete m_xmlHandlerBundleStatistics;
        m_xmlHandlerBundleStatistics = NULL;
        m_xmlHandlerBundleStatistics = new BundleStatistics(m_xmlHandlerProject, reader()); //TODO: need to add constructor for this???
      }
      else if (localName == "imageList") {
        m_xmlHandlerImages->append(new ImageList(m_xmlHandlerProject, reader()));
      }
    }
    return true;
  }

        QString dateTime = atts.value("runTime");
        if (!dateTime.isEmpty()) {
          m_bundleResults->m_runTime = dateTime; // TODO: is this necessary for qstrings???


  bool BundleResults::XmlHandler::characters(const QString &ch) {
    m_xmlHandlerCharacters += ch;
    return XmlStackedHandler::characters(ch);
  }

        QString name = atts.value("fileName");
        if (!name.isEmpty()) {
          delete m_bundleResults->m_controlNetworkFileName;
          m_bundleResults->m_controlNetworkFileName = NULL;
          m_bundleResults->m_controlNetworkFileName = new FileName(name);


  bool BundleResults::XmlHandler::endElement(const QString &namespaceURI, const QString &localName,
                                             const QString &qName) {
    if (localName == "id") {
      m_xmlHandlerBundleResults->m_id = NULL;
      m_xmlHandlerBundleResults->m_id = new QUuid(m_xmlHandlerCharacters);
    }
    else if (localName == "runTime") {
      m_xmlHandlerBundleResults->m_runTime = m_xmlHandlerCharacters;
    }
    else if (localName == "fileName") {
      m_xmlHandlerBundleResults->m_controlNetworkFileName = NULL;
      m_xmlHandlerBundleResults->m_controlNetworkFileName = new FileName(m_xmlHandlerCharacters);
    }
    else if (localName == "bundleSettings") {
        delete m_bundleResults->m_settings;
        m_bundleResults->m_settings = NULL;
        m_bundleResults->m_settings = new BundleSettings(m_project, reader());
      m_xmlHandlerBundleResults->m_settings = new BundleSettings(*m_xmlHandlerBundleSettings);
      delete m_xmlHandlerBundleSettings;
      m_xmlHandlerBundleSettings = NULL;
    }
    else if (localName == "bundleStatistics") {
        delete m_bundleResults->m_statisticsResults;
        m_bundleResults->m_statisticsResults = NULL;
        m_bundleResults->m_statisticsResults = new BundleStatistics(m_project, reader()); //TODO: need to add constructor for this???
      }
      else if (localName == "images") {
        QString numberImageLists = atts.value("numberImageLists");
        int listSize = toInt(numberImageLists);
        m_bundleResults->m_images->clear();
        for (int i = 0; i < listSize; i++) {
          m_bundleResults->m_images->append(new ImageList(m_project, reader())); 
      m_xmlHandlerBundleResults->m_statisticsResults = new BundleStatistics(*m_xmlHandlerBundleStatistics);
      delete m_xmlHandlerBundleStatistics;
      m_xmlHandlerBundleStatistics = NULL;
    }
    if (localName == "imageLists") {
      for (int i = 0; i < m_xmlHandlerImages->size(); i++) {
        m_xmlHandlerBundleResults->m_images->append(m_xmlHandlerImages->at(i));
      }
      m_xmlHandlerImages->clear();
    }
    return true;
    m_xmlHandlerCharacters = "";
    return XmlStackedHandler::endElement(namespaceURI, localName, qName);
  }


@@ -266,11 +315,12 @@ namespace Isis {

  QDataStream &BundleResults::write(QDataStream &stream) const {
    stream << m_id->toString()
           << m_runTime
           << m_controlNetworkFileName->expanded()
           << *m_settings
           << *m_statisticsResults;
    // TODO: add m_images???
    // TODO: add m_runTime???
  // TODO: add this capability to Image and ImageList
  //          << *m_images;
    return stream;
  }

@@ -284,6 +334,8 @@ namespace Isis {
    m_id = NULL;
    m_id = new QUuid(id);

    stream >> m_runTime;

    QString controlNetworkFileName;
    stream >> controlNetworkFileName;
    delete m_controlNetworkFileName;
@@ -302,8 +354,13 @@ namespace Isis {
    m_statisticsResults = NULL;
    m_statisticsResults = new BundleStatistics(statisticsResults);

    // TODO: add m_images???
    // TODO: add m_runTime???
    // TODO: add this capability to Image and ImageList
    // QList<ImageList*> imageLists;
    // stream >> imageLists;
    // delete m_images;
    // m_images = NULL;
    // m_images = new QList<ImageList *>(imageLists);

    return stream;
  }

Loading