Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/feature/8485_poco_xml_autoptr'
Browse files Browse the repository at this point in the history
  • Loading branch information
jawrainey committed Feb 21, 2014
2 parents 6a41ad6 + db6a92b commit 7dd3d80
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 31 deletions.
19 changes: 8 additions & 11 deletions Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D.cpp
Expand Up @@ -25,6 +25,7 @@ If the file contains mulitple SASentry elements a workspace group will be create
#include <Poco/DOM/NodeList.h>
#include <Poco/DOM/Text.h>
#include <Poco/SAX/InputSource.h>
#include <Poco/DOM/AutoPtr.h>

#include <boost/lexical_cast.hpp>
//-----------------------------------------------------------------------
Expand Down Expand Up @@ -80,7 +81,7 @@ int LoadCanSAS1D::confidence(Kernel::FileDescriptor & descriptor) const
Poco::XML::InputSource src(is);
// Set up the DOM parser and parse xml file
DOMParser pParser;
Document* pDoc;
Poco::AutoPtr<Document> pDoc;
try
{
pDoc = pParser.parse(&src);
Expand All @@ -98,7 +99,6 @@ int LoadCanSAS1D::confidence(Kernel::FileDescriptor & descriptor) const
confidence = 80;
}
}
pDoc->release();
}// end of inner scope

return confidence;
Expand All @@ -123,7 +123,7 @@ void LoadCanSAS1D::exec()
const std::string fileName = getPropertyValue("Filename");
// Set up the DOM parser and parse xml file
DOMParser pParser;
Document* pDoc;
Poco::AutoPtr<Document> pDoc;
try
{
pDoc = pParser.parse(fileName);
Expand All @@ -138,7 +138,7 @@ void LoadCanSAS1D::exec()
throw Kernel::Exception::NotFoundError("No root element in CanSAS1D XML file", fileName);
}
// there can be multiple <SASentry> elements, each one contains a period which will go into a workspace group if there are more than one of them
NodeList* entryList = pRootElem->getElementsByTagName("SASentry");
Poco::AutoPtr<NodeList> entryList = pRootElem->getElementsByTagName("SASentry");
size_t numEntries = entryList->length();
Workspace_sptr outputWork;
MatrixWorkspace_sptr WS;
Expand All @@ -164,8 +164,6 @@ void LoadCanSAS1D::exec()
}
outputWork = group;
}
entryList->release();
pDoc->release();
setProperty("OutputWorkspace", outputWork);
}
/** Load an individual "<SASentry>" element into a new workspace
Expand All @@ -181,7 +179,7 @@ MatrixWorkspace_sptr LoadCanSAS1D::loadEntry(Poco::XML::Node * const workspaceDa
check(workspaceElem, "<SASentry>");
runName = workspaceElem->getAttribute("name");

NodeList* runs = workspaceElem->getElementsByTagName("Run");
Poco::AutoPtr<NodeList> runs = workspaceElem->getElementsByTagName("Run");
if ( runs->length() != 1 )
{
throw Exception::NotImplementedError("<SASentry>s containing multiple runs, or no runs, are not currently supported");
Expand All @@ -190,7 +188,7 @@ MatrixWorkspace_sptr LoadCanSAS1D::loadEntry(Poco::XML::Node * const workspaceDa
Element* sasDataElem = workspaceElem->getChildElement("SASdata");
check(sasDataElem, "<SASdata>");
// getting number of Idata elements in the xml file
NodeList* idataElemList = sasDataElem->getElementsByTagName("Idata");
Poco::AutoPtr<NodeList> idataElemList = sasDataElem->getElementsByTagName("Idata");
size_t nBins = idataElemList->length();

MatrixWorkspace_sptr dataWS =
Expand Down Expand Up @@ -266,7 +264,6 @@ MatrixWorkspace_sptr LoadCanSAS1D::loadEntry(Poco::XML::Node * const workspaceDa
// run load instrument
runLoadInstrument(instname, dataWS);

idataElemList->release();
dataWS->getAxis(0)->setUnit("MomentumTransfer");
return dataWS;
}
Expand Down Expand Up @@ -336,12 +333,12 @@ void LoadCanSAS1D::createLogs(const Poco::XML::Element * const sasEntry, API::Ma
Element * runText = sasEntry->getChildElement("Run");
check(runText, "Run");
run.addLogData(new PropertyWithValue<std::string>(
"run_number", runText->innerText()));
"run_number", runText->innerText()));

Element * process = sasEntry->getChildElement("SASprocess");
if (process)
{
NodeList* terms = process->getElementsByTagName("term");
Poco::AutoPtr<NodeList> terms = process->getElementsByTagName("term");
for ( unsigned int i = 0; i < terms->length(); ++i )
{
Node* term = terms->item(i);
Expand Down
8 changes: 3 additions & 5 deletions Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D2.cpp
Expand Up @@ -147,9 +147,8 @@ MatrixWorkspace_sptr LoadCanSAS1D2::loadEntry(Poco::XML::Node * const workspaceD

Element *workspaceElem = dynamic_cast<Element*>(workspaceData);
// check(workspaceElem, "<SASentry>"); // already done at LoadCanSAS1D::loadEntry
NodeList * sasTransList = workspaceElem->getElementsByTagName("SAStransmission_spectrum");
if (!sasTransList->length()){
//sasTransList->release();
Poco::AutoPtr<NodeList> sasTransList = workspaceElem->getElementsByTagName("SAStransmission_spectrum");
if (!sasTransList->length()){
g_log.warning() << "There is no transmission data for this file " << getPropertyValue("Filename") << std::endl;
return main_out;
}
Expand All @@ -164,7 +163,7 @@ MatrixWorkspace_sptr LoadCanSAS1D2::loadEntry(Poco::XML::Node * const workspaceD
std::vector<API::MatrixWorkspace_sptr> & group = (sasTrasElem->getAttribute("name") == "sample")? trans_gp : trans_can_gp;

// getting number of Tdata elements in the xml file
NodeList* tdataElemList = sasTrasElem->getElementsByTagName("Tdata");
Poco::AutoPtr<NodeList> tdataElemList = sasTrasElem->getElementsByTagName("Tdata");
size_t nBins = tdataElemList->length();

MatrixWorkspace_sptr dataWS =
Expand Down Expand Up @@ -222,7 +221,6 @@ MatrixWorkspace_sptr LoadCanSAS1D2::loadEntry(Poco::XML::Node * const workspaceD
}

runLoadInstrument(main_out->getInstrument()->getName(), dataWS);
tdataElemList->release();
dataWS->getAxis(0)->setUnit("Wavelength");

// add to group
Expand Down
2 changes: 1 addition & 1 deletion Code/Mantid/Framework/DataHandling/src/LoadMask.cpp
Expand Up @@ -515,7 +515,7 @@ namespace DataHandling
throw std::runtime_error("Call LoadMask::initialize() before parseXML.");

// 1. Parse and create a structure
NodeList* pNL_type = pRootElem->getElementsByTagName("type");
Poco::AutoPtr<NodeList> pNL_type = pRootElem->getElementsByTagName("type");
g_log.information() << "Node Size = " << pNL_type->length() << std::endl;

Poco::XML::NodeIterator it(pDoc, Poco::XML::NodeFilter::SHOW_ELEMENT);
Expand Down
Expand Up @@ -142,7 +142,7 @@ void LoadPreNexusMonitors::exec()
if (pNode->nodeName() == "DataList")
{
// Get a list of the child elements
Poco::XML::NodeList* pDataListChildren = pNode->childNodes();
Poco::AutoPtr<Poco::XML::NodeList> pDataListChildren = pNode->childNodes();
for (unsigned long i = 0; i < pDataListChildren->length(); ++i)
{
// We only care about monitors
Expand All @@ -153,16 +153,14 @@ void LoadPreNexusMonitors::exec()
monitorFilenames.push_back(element->getAttribute("name"));
}
}
// Release the NodeList
pDataListChildren->release();

}

// Get the size of the files
if (pNode->nodeName() == "FileFormats")
{
// Get a list of the child elements
Poco::XML::NodeList* pDataListChildren = pNode->childNodes();
Poco::AutoPtr<Poco::XML::NodeList> pDataListChildren = pNode->childNodes();
for (unsigned long i = 0; i < pDataListChildren->length(); ++i)
{
// We only care about monitors
Expand All @@ -173,8 +171,6 @@ void LoadPreNexusMonitors::exec()
tchannels = boost::lexical_cast<int>(dims);
}
}
// Release the NodeList
pDataListChildren->release();
}

pNode = it.nextNode();
Expand Down
8 changes: 2 additions & 6 deletions Code/Mantid/Framework/DataHandling/src/LoadSpice2D.cpp
Expand Up @@ -112,7 +112,7 @@ namespace Mantid
Poco::XML::InputSource src(is);
// Set up the DOM parser and parse xml file
DOMParser pParser;
Document* pDoc;
Poco::AutoPtr<Document> pDoc;
try
{
pDoc = pParser.parse(&src);
Expand All @@ -130,7 +130,6 @@ namespace Mantid
confidence = 80;
}
}
pDoc->release();
}// end of inner scope

return confidence;
Expand Down Expand Up @@ -179,7 +178,7 @@ namespace Mantid

// Set up the DOM parser and parse xml file
DOMParser pParser;
Document* pDoc;
Poco::AutoPtr<Document> pDoc;
try
{
pDoc = pParser.parse(fileName);
Expand Down Expand Up @@ -421,9 +420,6 @@ namespace Mantid
g_log.error("Unable to successfully run MoveInstrumentComponent Child Algorithm");
g_log.error(e.what());
}

// Release the XML document memory
pDoc->release();
}

/** Run the Child Algorithm LoadInstrument (as for LoadRaw)
Expand Down
5 changes: 3 additions & 2 deletions Code/Mantid/Framework/DataHandling/src/SNSDataArchive.cpp
Expand Up @@ -20,6 +20,7 @@
#include <Poco/DOM/NodeList.h>
#include <Poco/DOM/NodeIterator.h>
#include <boost/algorithm/string/predicate.hpp>
#include "Poco/DOM/AutoPtr.h"

#include <iostream>

Expand Down Expand Up @@ -75,7 +76,7 @@ std::string SNSDataArchive::getArchivePath(const std::set<std::string>& filename
// Create a DOM document from the response.
Poco::XML::DOMParser parser;
Poco::XML::InputSource source(rs);
Poco::XML::Document* pDoc = parser.parse(&source);
Poco::AutoPtr<Poco::XML::Document> pDoc = parser.parse(&source);

std::vector<std::string> locations;

Expand All @@ -84,7 +85,7 @@ std::string SNSDataArchive::getArchivePath(const std::set<std::string>& filename
if (res.getStatus() == Poco::Net::HTTPResponse::HTTP_OK)
{
std::string location;
Poco::XML::NodeList* pList = pDoc->getElementsByTagName("location");
Poco::AutoPtr<Poco::XML::NodeList> pList = pDoc->getElementsByTagName("location");
for(unsigned long i = 0 ; i < pList->length(); i++)
{
location = pList->item(i)->innerText();
Expand Down

0 comments on commit 7dd3d80

Please sign in to comment.