Brief description of class still missing. More...
#include <XMLHeader.h>
Public Member Functions | |
void | addAlternateTag (const QString &t) |
Error | xml_restoreByteArray (QByteArray data, XMLContext *context=0) |
Error | xml_restoreFile (QString fileName, XMLContext *context=0, FileType ft=TarFile) |
Error | xml_restoreString (QString str, XMLContext *context=0) |
QByteArray | xml_saveByteArray (XMLContext *context=0) const |
Error | xml_saveFile (QString fileName, XMLContext *context=0, FileType ft=TarFile) const |
QString | xml_saveString (bool header=true, XMLContext *context=0) const |
virtual const QString & | xml_tagName () const |
XMLHeader (XMLClass *object) | |
XMLHeader (const XMLHeader &o) | |
Static Public Attributes | |
static const QString | xmlHeaderOldTag = "QtbXMLClass" |
static const QString | xmlHeaderTag = "GpXMLClass" |
Protected Member Functions | |
virtual void | xml_attributes (XML_ATTRIBUTES_ARGS) const |
virtual XMLMember | xml_member (XML_MEMBER_ARGS) |
virtual void | xml_polishChild (XML_POLISHCHILD_ARGS) |
virtual bool | xml_polished (XML_POLISHED_ARGS) |
virtual bool | xml_setAttributes (XML_SETATTRIBUTES_ARGS) |
virtual void | xml_writeChildren (XML_WRITECHILDREN_ARGS) const |
Protected Attributes | |
XMLClass * | _object |
bool | _polished |
QString | _tag |
Brief description of class still missing.
This class is responsible of XML header: DOCTYPE and GpXMLClass context. GpXMLClass (or QtbXMLClass) context is kept only for compatibility with previous version. XML structures created with this version do not generate any specific header.
QGpCoreTools::XMLHeader::XMLHeader | ( | XMLClass * | object | ) |
Description of constructor still missing.
version must be the version of the calling package (library or application).
References _object, _polished, _tag, and xmlHeaderTag.
: XMLClass() { _object=object; _polished=false; _tag=xmlHeaderTag; }
QGpCoreTools::XMLHeader::XMLHeader | ( | const XMLHeader & | o | ) |
void QGpCoreTools::XMLHeader::addAlternateTag | ( | const QString & | t | ) | [inline] |
Referenced by SciFigs::XMLSciFigs::restoreByteArray(), SciFigs::XMLSciFigs::restoreFile(), and SciFigs::XMLSciFigs::restoreString().
{_alternateTags.append(t);}
void QGpCoreTools::XMLHeader::xml_attributes | ( | XML_ATTRIBUTES_ARGS | ) | const [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
{
Q_UNUSED(context);
Q_UNUSED(attributes);
//attributes.add( "version", QGPCORETOOLS_VERSION);
}
XMLMember QGpCoreTools::XMLHeader::xml_member | ( | XML_MEMBER_ARGS | ) | [protected, virtual] |
Re-implement this function to offer XML restore (children and properties) support to your class.
From tag and map (with contains the attibute value) return a unique identifier under the format of a XMLMember. XMLMember is initialized with 3 types of contructors:
Map of attributes can be inspected in this way (can be achived also in xml_setProperty()):
static const QString tmp("childrenName"); XMLRestoreAttributeIterator it=map.find(tmp); if(it!=map.end()) { // found attribute "childrenName" }
If the map of attributes is not used:
Q_UNUSED(attributes); if(tag=="x1") return XMLMember(0); else if(tag=="y1") return XMLMember(1); else if(tag=="x2") return XMLMember(2); else if(tag=="y2") return XMLMember(3); else return XMLMember(XMLMember::Unknown);
Arithmetic operations + and - apply to XMLMember to avoid confusion of property id numbers between inherited objects. Offset 3 corresponds to the number of properties defined in this object.
if(tag=="anInteger") return XMLMember(0); else if(tag=="aString") return XMLMember(1); else if(tag=="aDouble") return XMLMember(2); return AbstractLine::xml_member(tag, attributes, context)+3;
For the arguments of this function use Macro XML_MEMBER_ARGS.
Reimplemented from QGpCoreTools::XMLClass.
Reimplemented in DinverCore::XMLDinverHeader.
References _object, _tag, QGpCoreTools::XMLMember::Unknown, QGpCoreTools::XMLClass::xml_tagName(), xmlHeaderOldTag, and xmlHeaderTag.
{ ASSERT(_object); Q_UNUSED(attributes); Q_UNUSED(context); if(tag==_object->xml_tagName()) { return XMLMember(_object); } else if(tag==xmlHeaderTag) { _tag=xmlHeaderTag; return XMLMember(this); } else if(tag==xmlHeaderOldTag) { _tag=xmlHeaderOldTag; return XMLMember(this); } else { for(QStringList::const_iterator it=_alternateTags.begin();it!=_alternateTags.end();it++) { if(tag==*it) return XMLMember(_object); } return XMLMember(XMLMember::Unknown); } }
void QGpCoreTools::XMLHeader::xml_polishChild | ( | XML_POLISHCHILD_ARGS | ) | [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
Reimplemented in DinverCore::XMLDinverHeader.
virtual bool QGpCoreTools::XMLHeader::xml_polished | ( | XML_POLISHED_ARGS | ) | [inline, protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
{return _polished;}
XMLClass::Error QGpCoreTools::XMLHeader::xml_restoreByteArray | ( | QByteArray | data, |
XMLContext * | context = 0 |
||
) |
References QGpCoreTools::XMLClass::ErrorFileNotOpen, QGpCoreTools::XMLClass::ErrorNoDocType, QGpCoreTools::XMLByteArrayStream::file(), QGpCoreTools::XMLByteArrayStream::open(), and QGpCoreTools::XMLClass::restore().
Referenced by SciFigs::XMLSciFigs::restoreByteArray().
{ QByteArray xmlArray; XMLByteArrayStream s(QIODevice::ReadOnly); if(!s.open(data) || !s.file("contents.xml", xmlArray)) { return ErrorFileNotOpen; } QTextStream xmlStream(xmlArray, QIODevice::ReadOnly); //xmlStream.setCodec("ISO-8859-1"); xmlStream.setCodec("UTF-8"); xmlStream.setAutoDetectUnicode (true); QString buf=xmlStream.readAll(); int line=1; const QChar * ptr=buf.data(); if(checkDocType(ptr, line)) return restore(ptr, line, &s, context); else return ErrorNoDocType; }
XMLClass::Error QGpCoreTools::XMLHeader::xml_restoreFile | ( | QString | fileName, |
XMLContext * | context = 0 , |
||
FileType | ft = TarFile |
||
) |
Open a file
References QGpCoreTools::endl(), QGpCoreTools::XMLClass::ErrorFileNotOpen, QGpCoreTools::XMLClass::ErrorNoDocType, QGpCoreTools::XMLTarStream::file(), QGpCoreTools::XMLTarStream::open(), QGpCoreTools::XMLClass::restore(), QGpCoreTools::App::stream(), QGpCoreTools::XMLClass::TarFile, and QGpCoreTools::tr().
Referenced by TargetMerge::execute(), TargetExtract::execute(), TargetAdd::execute(), DinverGui::importParameters(), DinverGui::importTargets(), ControlPanel::load(), ParamGroundModelWidget::load(), main(), MapProject::open(), GeopsyCore::SignalDB::open(), DinverGui::open(), SciFigs::XMLSciFigs::restoreFile(), Process::setArguments(), DinverCore::BatchRun::setParameters(), QGpGuiTools::ColumnTextWidget::setParserFile(), DinverCore::BatchRun::setTargets(), and CoordReader::terminate().
{ XMLTarStream s(QIODevice::ReadOnly); if(s.open(fileName)) { QByteArray xmlArray; if(ft==TarFile && s.file( "contents.xml", xmlArray)) { QTextStream xmlStream(xmlArray, QIODevice::ReadOnly); //xmlStream.setCodec("ISO-8859-1"); xmlStream.setCodec("UTF-8"); xmlStream.setAutoDetectUnicode (true); QString buf=xmlStream.readAll(); int line=1; const QChar * ptr=buf.data(); if(checkDocType(ptr, line)) return restore(ptr, line, &s, context); else return ErrorNoDocType; } else { // check for compatibility with format before November 2006 if(ft==TarFile) App::stream() << tr("No contents.xml found in archive, trying old versions...") << endl; QFile f (fileName); if(f.open(QIODevice::ReadOnly)) { QTextStream xmlStream(&f); //xmlStream.setCodec("ISO-8859-1"); xmlStream.setCodec("UTF-8"); xmlStream.setAutoDetectUnicode (true); QString buf=xmlStream.readAll(); int line=1; const QChar * ptr=buf.data(); if(checkDocType(ptr, line)) return restore(ptr, line, &s, context); else return ErrorNoDocType; } return ErrorFileNotOpen; } } printf("File not open\n"); return ErrorFileNotOpen; }
XMLClass::Error QGpCoreTools::XMLHeader::xml_restoreString | ( | QString | str, |
XMLContext * | context = 0 |
||
) |
References QGpCoreTools::XMLClass::ErrorNoDocType, and QGpCoreTools::XMLClass::restore().
Referenced by GeopsyCore::CustomFileFormats::CustomFileFormats(), SciFigs::XMLSciFigs::restoreString(), and QGpGuiTools::XMLItem::setText().
{ int line=1; const QChar * ptr=buf.data(); XMLStringStream s(QIODevice::ReadOnly); if(checkDocType(ptr, line)) return restore(ptr, line, &s, context); else return ErrorNoDocType; }
QByteArray QGpCoreTools::XMLHeader::xml_saveByteArray | ( | XMLContext * | context = 0 | ) | const |
Create a QByteArray which contains the XML part and the attached files
References _object, QGpCoreTools::XMLByteArrayStream::addXmlFile(), QGpCoreTools::XMLByteArrayStream::data(), TRACE, QGpCoreTools::XMLClass::xml_attributes(), and QGpCoreTools::XMLClass::xml_save().
Referenced by QGpGuiTools::XMLItem::saveByteArray(), and SciFigs::XMLSciFigs::saveByteArray().
{ TRACE; XMLByteArrayStream s(QIODevice::WriteOnly); //xml_saveDocType(s); XMLSaveAttributes attributes; _object->xml_attributes(attributes, context); _object->xml_save(s, context, attributes); s.addXmlFile(); return s.data(); }
XMLClass::Error QGpCoreTools::XMLHeader::xml_saveFile | ( | QString | fileName, |
XMLContext * | context = 0 , |
||
FileType | ft = TarFile |
||
) | const |
Create a compressed tar file for storing the xml part (contents.xml) and, if any, the binary parts (random names stored in xml part).
References _object, QGpCoreTools::XMLTarStream::addXmlFile(), QGpCoreTools::endl(), QGpCoreTools::XMLClass::ErrorFileNotOpen, QGpCoreTools::XMLClass::ErrorWritingFile, QGpCoreTools::XMLClass::NoError, QGpCoreTools::XMLTarStream::open(), QGpCoreTools::App::stream(), QGpCoreTools::XMLClass::TarFile, QGpCoreTools::XMLStringStream::toString(), QGpCoreTools::tr(), QGpCoreTools::XMLClass::xml_attributes(), and QGpCoreTools::XMLClass::xml_save().
Referenced by TargetMerge::execute(), TargetAdd::execute(), DinverGui::exportParameters(), DinverGui::exportTargets(), main(), Model2ParamReader::parse(), MapProject::save(), GeopsyCore::SignalDB::save(), ParamGroundModelWidget::save(), DinverGui::save(), MapProject::saveAs(), QGpGuiTools::XMLItem::saveFile(), SciFigs::XMLSciFigs::saveFile(), SpacSelector::saveSelection(), and SPACLoop::~SPACLoop().
{ XMLSaveAttributes attributes; _object->xml_attributes(attributes, context); if(ft==TarFile) { XMLTarStream s (QIODevice::WriteOnly); if(s.open(fileName)) { //xml_saveDocType(s); _object->xml_save(s, context, attributes); if( !s.addXmlFile()) { App::stream() << tr("Cannot write to file %1.").arg(fileName) << endl; return ErrorWritingFile; } return NoError; } else { App::stream() << tr("Cannot open file %1 for writing.").arg(fileName) << endl; return ErrorFileNotOpen; } } else { QFile f(fileName); if(f.open(QIODevice::WriteOnly)) { XMLStringStream s (QIODevice::WriteOnly); //xml_saveDocType(s); _object->xml_save(s, context, attributes); QTextStream sf(&f); //sf.setCodec("ISO-8859-1"); sf.setCodec("UTF-8"); sf.setGenerateByteOrderMark (true); sf << s.toString(); return NoError; } else { App::stream() << tr("Cannot open file %1 for writing.").arg(fileName) << endl; return ErrorFileNotOpen; } } }
QString QGpCoreTools::XMLHeader::xml_saveString | ( | bool | header = true , |
XMLContext * | context = 0 |
||
) | const |
Create a QTextStream attached to the given QString and export XML data. No binary data can be saved this way.
References _object, QGpCoreTools::XMLStringStream::toString(), TRACE, QGpCoreTools::XMLClass::xml_attributes(), and QGpCoreTools::XMLClass::xml_save().
Referenced by GeopsyCore::CustomFileFormats::save(), QGpCoreTools::GoogleEarthKML::save(), QGpGuiTools::XMLItem::saveString(), and SciFigs::XMLSciFigs::saveString().
bool QGpCoreTools::XMLHeader::xml_setAttributes | ( | XML_SETATTRIBUTES_ARGS | ) | [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
{ Q_UNUSED(context); for(XMLRestoreAttributeIterator it=attributes.begin(); it!= attributes.end(); it++ ) { const StringSection& att=it.key(); if(att=="version") {} // compatibility else return false; } return true; }
const QString & QGpCoreTools::XMLHeader::xml_tagName | ( | ) | const [virtual] |
void QGpCoreTools::XMLHeader::xml_writeChildren | ( | XML_WRITECHILDREN_ARGS | ) | const [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
References _object, QGpCoreTools::XMLClass::xml_attributes(), and QGpCoreTools::XMLClass::xml_save().
{ ASSERT(_object); XMLSaveAttributes att; _object->xml_attributes(att, context); _object->xml_save(s, context, att); }
XMLClass* QGpCoreTools::XMLHeader::_object [protected] |
bool QGpCoreTools::XMLHeader::_polished [protected] |
Referenced by DinverCore::XMLDinverHeader::xml_polishChild(), xml_polishChild(), and XMLHeader().
QString QGpCoreTools::XMLHeader::_tag [protected] |
Referenced by DinverCore::XMLDinverHeader::xml_member(), xml_member(), xml_tagName(), and XMLHeader().
const QString QGpCoreTools::XMLHeader::xmlHeaderOldTag = "QtbXMLClass" [static] |
Referenced by xml_member().
const QString QGpCoreTools::XMLHeader::xmlHeaderTag = "GpXMLClass" [static] |
Referenced by DinverCore::XMLDinverHeader::xml_member(), xml_member(), and XMLHeader().