Create a form definition and form handler for the named data class.

Return TypeFunction nameArguments
hzEcodehdsApp::CreateDefaultForm(hzString&,)

Declared in file: hzDissemino.h
Defined in file : hdsResource.cpp

Function Logic:

0:START 1:unknown 2:items 3:Return E_OK 4:pClass 5:unknown 6:items 7:Return E_NOTFOUND 8:items pFormdef dflt_form_ pFormdef /dflt_fhdl_ pFormdef pFormdef items 9:unknown 10:pMbr pFld items pFld pFld pFld items 11:pFormhdl dflt_fhdl_ pFormhdl pFormhdl pFormhdl items items pFormref pFormref items items 12:Return rc

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 ;
}