Return TypeFunction nameArguments
hzEcodehdbADP::RegisterDataClass(const hdbClass*,)

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

Function Logic:

0:START 1:!this 2:hzexit 3:!pClass 4:Return E_ARGUMENT 5:!pClass->strType() 6:Return E_NOINIT 7:pClass->ClassId() 8:Return hzerr(E_DUPLICATE,Data class %s already registered with id %d,pClass->txtType(),pClass->ClassId()) 9:hdbDatatype::strType hzMapS::Exists 10:m_mapDatatypes.Exists(pClass->strType()) 11:Return hzerr(E_DUPLICATE,Data type %s already registered. Cannot admit class of this name,pClass->txtType()) 12:pClass->Designation() 13:HDB_CLASS_DESIG_SYS 14:pClass->strType()==subscriber 15:hdbClass::_setId 16:pClass->strType()==siteindex 17:hdbClass::_setId 18:pClass->strType()==FinCurrency 19:hdbClass::_setId 20:pClass->strType()==FinCategory 21:hdbClass::_setId 22:pClass->strType()==FinAccount 23:hdbClass::_setId 24:pClass->strType()==FinTransaction 25:hdbClass::_setId 26:hdbDatatype::txtType 27:Return E_BADVALUE

Function body:

hzEcode hdbADP::RegisterDataClass (const hdbClass* pClass)
{
   _hzfunc("hdbADP::RegisterDataClass") ;
   if (!this)
       hzexit(E_CORRUPT, "No ADP instance") ;
   if (!pClass)
       return E_ARGUMENT ;
   if (!pClass->strType())
       return E_NOINIT ;
   if (pClass->ClassId())
       return hzerr(E_DUPLICATE, "Data class %s already registered with id %d", pClass->txtType(), pClass->ClassId()) ;
   if (m_mapDatatypes.Exists(pClass->strType()))
       return hzerr(E_DUPLICATE, "Data type %s already registered. Cannot admit class of this name", pClass->txtType()) ;
   switch  (pClass->Designation())
   {
   case HDB_CLASS_DESIG_SYS:   if      (pClass->strType() == "subscriber")     pClass->_setId(HZ_ADP_CLS_SUBSCRIBER) ;
                               else if (pClass->strType() == "siteindex")      pClass->_setId(HZ_ADP_CLS_SITEINDEX) ;
                               else if (pClass->strType() == "FinCurrency")    pClass->_setId(HZ_ADP_CLS_FIN_CRCY) ;
                               else if (pClass->strType() == "FinCategory")    pClass->_setId(HZ_ADP_CLS_FIN_CAT) ;
                               else if (pClass->strType() == "FinAccount")     pClass->_setId(HZ_ADP_CLS_FIN_ACC) ;
                               else if (pClass->strType() == "FinTransaction") pClass->_setId(HZ_ADP_CLS_FIN_TRNS) ;
                               else
                               {
                                   hzerr(E_BADVALUE, "Unrecognized System Class (%s)", pClass->txtType()) ;
                                   return E_BADVALUE ;
                               }
                               break ;
   case HDB_CLASS_DESIG_USR:   pClass->_setId(m_nsqClsUsr++) ;
                               break ;
   case HDB_CLASS_DESIG_CFG:   pClass->_setId(m_nsqClsCfg++) ;
                               break ;
   }
   if (!pClass->ClassId())
       return hzerr(E_NOINIT, "Data class %s did not aquire a delta id", pClass->txtType()) ;
   m_mapDatatypes.Insert(pClass->strType(), pClass) ;
   m_mapClasses.Insert(pClass->strType(), pClass) ;
   m_mapClsCtxName.Insert(pClass->strType(), pClass->ClassId()) ;
   m_mapClsCtxDtId.Insert(pClass->ClassId(), pClass) ;
   threadLog("Inserted %s\n", *pClass->strType()) ;
   return E_OK ;
}