| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdbADP::RegisterDataClass | (const hdbClass*,) |
Declared in file: hzDatabase.h
Defined in file : hdbClass.cpp
Function Logic:
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 ;
}