Create a form definition and form handler for the named data class.
| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdsApp::CreateDefaultForm | (hzString&,) |
Declared in file: hzDissemino.h
Defined in file : hdsResource.cpp
Function Logic:
Function body:
hzEcode hdsApp::CreateDefaultForm (hzString& cname)
{
// Create a form definition and form handler for the named data class.
_hzfunc("hdsApp::CreateDefaultForm") ;
const hdbClass* pClass ; // Data class pointer
const hdbMember* pMbr ; // Data class member
hdsFormdef* pFormdef ; // Form definition
hdsFormhdl* pFormhdl ; // Form handler
hdsFormref* pFormref ; // Form reference
hdsField* pFld ; // Field being processed
hzString S ; // Temp string
uint32_t mbrNo ; // Member number
hzEcode rc = E_OK ; // Return code
// Establish the class exists and does not already have a default form and from-hamdler (it can have other forms and form-handlers in the configs).
if (cname == "subscriber")
{
// Special case. Both success and failure lead to the re-displaying the current page
m_pLog->Log("Subscriber class is a special case. No default form is required\n") ;
return E_OK ;
}
pClass = m_ADP.GetPureClass(cname) ;
if (!pClass)
{ m_pLog->Out("No such class as %s\n", *cname) ; return E_NOTFOUND ; }
m_pLog->Log("Doing class %s with %d members\n", *cname, pClass->MbrCount()) ;
// Create the form definition and add the fields
pFormdef = new hdsFormdef() ;
pFormdef->m_Formname = "dflt_form_" + cname ;
pFormdef->m_DfltAct = "/dflt_fhdl_" + cname ;
pFormdef->m_pClass = pClass ;
m_FormDefs.Insert(pFormdef->m_Formname, pFormdef) ;
for (mbrNo = 0; mbrNo < pClass->MbrCount() ; mbrNo++)
{
pMbr = pClass->GetMember(mbrNo) ;
// Create feild for each atomic member
pFld = new hdsField(this) ;
pFld->InitVE(this) ;
pFld->m_strPretext = pMbr->strName() ;
pFld->m_Line = mbrNo ;
pFld->m_Indent = 0;
// pFld->m_Fldspec.m_pType = m_ADP.GetDatatype(dtS) ;
// if (!pFld->m_Fldspec.m_pType)
// { m_pLog->Log("File %s Line %d: xfield %s: Illegal fld type %s\n", *cfg, pN->Line(), *vnam, *dtS) ; goto failed ; }
// pFld->m_Fldspec.m_Refname = pFormdef->m_Formname + "->" + vnam ;
// pFld->m_Varname = vnam ;
// pFld->m_flagVE |= flags ;
// pFld->m_Fldspec.nRows = nRows ;
// pFld->m_Fldspec.nCols = nCols ;
// pFld->m_Fldspec.nSize = nSize ;
// if (!pFormdef->m_mapFlds.Exists(pFld->m_Varname))
// pFormdef->m_mapFlds.Insert(pFld->m_Varname, pFld) ;
pFormdef->m_vecFlds.Add(pFld) ;
}
pFormhdl = new hdsFormhdl() ;
pFormhdl->m_Refname = "dflt_fhdl_" + cname ;
pFormhdl->m_pFormdef = pFormdef ;
pFormhdl->m_flgFH |= VE_COOKIES ;
m_FormHdls.Insert(pFormhdl->m_Refname, pFormhdl) ;
m_FormUrl2Hdl.Insert(pFormdef->m_DfltAct, pFormhdl->m_Refname) ;
pFormref = new hdsFormref(this) ;
pFormref->m_Formname = pFormdef->m_Formname ;
// pFormref->m_flagVE |= VE_LOGINFORM ;
m_FormUrl2Ref.Insert(pFormdef->m_DfltAct, pFormref) ;
m_FormRef2Url.Insert(pFormref, pFormdef->m_DfltAct) ;
return rc ;
}