Return TypeFunction nameArguments
hzEcodehdbADP::Import(const hzString&,)

Declared in file: hzDatabase.h
Defined in file : hdbClass.cpp

Function Logic:

0:START 1:fname 2:TestFile(*fname)==E_OK 3:open items close 4:hzDocXml::Load rc 5:rc!=E_OK 6:hzDocument::Error 7:Return rc 8:hzDocXml::GetRoot pRoot 9:!pRoot 10:Return E_NOINIT 11:pN; 12:pN->NameEQ(enum) 13:ai.Valid(); 14:ai.NameEQ(name) 15:hzAttrset::Value str_nam 16:rc hzXmlNode::Line hzAttrset::Name hzAttrset::Value 17:pEnum hdbDatatype::SetTypename hzMapS::Insert hzMapS::Insert SplitCSV n 18:n 19:S hdbEnum::AddItem 20:pN->NameEQ(class) 21:hdbADP::_rdClass rc 22:rc!=E_OK 23:Return rc

Function body:

hzEcode hdbADP::Import (const hzString& appName)
{
   _hzfunc("hdbADP::Import") ;
   hzArray <hzString>  ar ;
   ifstream        is ;
   hzDocXml        docADP ;
   hzChain         Z ;
   hzChain         Y ;
   hzXmlNode*      pRoot ;
   hzXmlNode*      pN ;
   hzAttrset       ai ;
   hdbEnum*        pEnum ;
   hzString        fname ;
   hzString        bkfile ;
   hzString        cname ;
   hzString        str_id ;
   hzString        str_uid ;
   hzString        str_min ;
   hzString        str_max ;
   hzString        str_typ ;
   hzString        str_sub ;
   hzString        str_nam ;
   hzString        S ;
   uint32_t        n ;
   hzEcode         rc = E_OK ;
   fname = "/etc/hzDelta.d/" + appName + ".adp" ;
   if (TestFile(*fname) == E_OK)
   {
       is.open(*fname) ;
       Y << is ;
       is.close() ;
   }
   rc = docADP.Load(*fname) ;
   if (rc != E_OK)
   {
       threadLog("Could not load ADP document (%s)\n", *fname) ;
       threadLog(docADP.Error()) ;
       return rc ;
   }
   pRoot = docADP.GetRoot() ;
   if (!pRoot)
   {
       threadLog("ADP document (%s) has no route\n", *fname) ;
       return E_NOINIT ;
   }
   for (pN = pRoot->GetFirstChild() ; pN ; pN = pN->Sibling())
   {
       if (pN->NameEQ("enum"))
       {
           for (ai = pN ; ai.Valid() ; ai.Advance())
           {
               if (ai.NameEQ("name"))
                   str_nam = ai.Value() ;
               else
                   { rc = E_SYNTAX ; threadLog("Line %d: <enum> bad param %s=%s\n", pN->Line(), ai.Name(), ai.Value()) ; break ; }
           }
           pEnum = new hdbEnum() ;
           pEnum->SetTypename(str_nam) ;
           m_mapDatatypes.Insert(str_nam, pEnum) ;
           m_mapEnums.Insert(str_nam, pEnum) ;
           SplitCSV(ar, pN->m_fixContent) ;
           for (n = 0; n < ar.Count() ; n++)
           {
               S = ar[n] ;
               pEnum->AddItem(S) ;
           }
       }
       else if (pN->NameEQ("class"))
       {
           rc = _rdClass(pN) ;
           if (rc != E_OK)
               break ;
       }
   }
   return rc ;
}