/** * Reads a node from the document and parses into metadata. */ bool SessionTranslator::OnRead( Context & ctxt, const XMLElement & elem, AccessorAdaptorBase* pAdaptor ) { const XMLElement* pchild; bool bRetVal = true; Session session; if( pAdaptor == NULL) return false; //Parse the AttributedObject Elements. if( !ReadAttributedObject( session, ctxt, elem)) return false; //Done processing element, if no children, meaning this is //an element referencing another element. if( elem.NoChildren()) session.IsReference(true); else { //Parse TOA [0..1] pchild = elem.FirstChildElement("toa"); if( pchild != NULL) { session.Toa(Date(pchild->GetText())); } //Parse Position [0..1] pchild = elem.FirstChildElement("position"); if( pchild != NULL) { AccessorAdaptor<Session, Position> adapt(&session, &Session::Position); bRetVal &= ReadElement( session, ctxt, *pchild, &adapt); } //TODO Parse attitude [0..1] //Parse poc [0..1] session.Poc( ReadFirstElement("poc", elem, false, "")); //Parse contact [0..1] session.Contact( ReadFirstElement("contact", elem, false, "")); //Parse campaign [0..1] session.Campaign( ReadFirstElement("campaign", elem, false, "")); //Parse scenario [0..1] session.Scenario( ReadFirstElement("scenario", elem, false, "")); //Parse Systems [0..1] bRetVal &= ReadList<System>(session.Systems(), "system", ctxt, elem); } //Lastly set the session on the specified object. pAdaptor->set( &session); return bRetVal; }
/** * Reads a node from the document and parses into metadata. */ bool SessionTranslator::OnRead( Context & ctxt, const XMLElement & elem, AccessorAdaptorBase* pAdaptor ) { const XMLElement* pchild; const char* pszValue; if( pAdaptor == NULL) return false; Session session; bool retval = false; //Parse the AttributedObject Elements. if( !ReadAttributedObject( session, ctxt, elem)) return false; //Done processing element, if no children, meaning this is //an element referencing another element. if( elem.NoChildren()) session.IsReference(true); else { //Parse scenario pchild = elem.FirstChildElement("scenario"); pszValue = (pchild != NULL) ? pchild->GetText() : ""; session.Scenario(pszValue ); //Parse campaign pchild = elem.FirstChildElement("campaign"); pszValue = (pchild != NULL) ? pchild->GetText() : ""; session.Campaign(pszValue ); //Parse location pchild = elem.FirstChildElement("location"); try { double lat = atof( pchild->Attribute("lat")); double lon = atof( pchild->Attribute("lon")); double height= atof( pchild->Attribute("height")); Location loc(lat, lon, height); session.Location( loc); } catch(...) { throw TranslationException("Couldn't parse Location element"); } //Parse contact pchild = elem.FirstChildElement("contact"); pszValue = (pchild != NULL) ? pchild->GetText() : ""; session.Contact(pszValue ); //Parse poc pchild = elem.FirstChildElement("poc"); pszValue = (pchild != NULL) ? pchild->GetText() : ""; session.Poc(pszValue ); } //Lastly set the session on the specified object. pAdaptor->set( &session); return true; }