Database and Data Class Config Read Functions Validate a field specification

Return TypeFunction nameArguments
hzEcodehdsFldspec::Validate(hzLogger*,hzString&,const char*,uint32_t,)

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

Function Logic:

0:START 1:unknown 2:rc items 3:unknown 4:rc items 5:unknown 6:Return rc 7:unknown 8:items 9:Return E_CONFIG 10:unknown 11:items 12:Return E_CONFIG 13:unknown 14:items 15:Return E_CONFIG 16:htype 17:HTMLTYPE_TEXT 18:HTMLTYPE_PASSWORD 19:unknown 20:items 21:unknown 22:nCols 23:unknown 24:rc items 25:nRows

Function body:

hzEcode hdsFldspec::Validate (hzLogger* pLog)hzString& cfgFname, const char* caller, uint32_t ln, 
{
   //  Database and Data Class Config Read Functions
   //  
   //  Validate a field specification
   //  
   //  Arguments: 1) pSpec  The field specification to test
   //     2) cfgFname  The source config filename
   //     3) ln   The source config line number
   //  
   //  Returns: E_ARGUMENT If no field specification, config file or caller is supplied.
   //     E_CONFIG If there are any omissions or inconsistancies.
   //     E_OK  If the field specification is validated.
   _hzfunc("hdsApp::_testFldspec") ;
   hzEcode rc = E_OK ;     //  Return code
   if (!cfgFname)  { rc = E_ARGUMENT ; pLog->Log("No config file supplied\n") ; }
   if (!caller)    { rc = E_ARGUMENT ; pLog->Log("No caller func supplied\n") ; }
   if (rc != E_OK)
       return rc ;
   if (!m_pType)
       { pLog->Log("(%s) File %s Line %d <fldspec> No data type established\n", caller, *cfgFname, ln) ; return E_CONFIG ; }
   if (htype == HTMLTYPE_NULL)
       { pLog->Log("(%s) File %s Line %d <fldspec> No HTML type established\n", caller, *cfgFname, ln) ; return E_CONFIG ; }
   if (!m_Refname)
       { pLog->Log("(%s) File %s Line %d <fldspec> No refname supplied\n", caller, *cfgFname, ln) ; return E_CONFIG ; }
   switch  (htype)
   {
   case HTMLTYPE_TEXT:         //  Full range of printable chars
   case HTMLTYPE_PASSWORD:     //  As text but char's won't print
       if (nRows)
           pLog->Log("(%s) File %s Line %d: Note. Rows for TEXT/PASSWORD are always 1 so not required\n", caller, *cfgFname, ln) ;
       if (!nCols)
               nCols = 1;
       if (!nSize)
           { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No max size supplied\n", caller, *cfgFname, ln) ; }
       nRows = 1;
       break ;
   case HTMLTYPE_TEXTAREA:     //  As text but a text area is described
       if (!nRows) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No row size supplied\n", caller, *cfgFname, ln) ; }
       if (!nCols) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No col size supplied\n", caller, *cfgFname, ln) ; }
       if (!nSize) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No max size supplied\n", caller, *cfgFname, ln) ; }
       break ;
   case HTMLTYPE_SELECT:       //  A HTML selector
       if (m_pType->Basetype() == BASETYPE_ENUM || m_pType->Basetype() == BASETYPE_STRING)
       {
           if (nRows || nCols || nSize)
               pLog->Log("(%s) File %s Line %d: Note. For Select field dimensions are not required\n", caller, *cfgFname, ln) ;
           break ;
       }
       rc = E_CONFIG ;
       pLog->Log("(%s) File %s Line %d: <fldspec>: Data type of %s is incompatible to HTMLTYPE_SELECT\n",
           caller, *cfgFname, ln, m_pType->txtType()) ;
       break ;
   case HTMLTYPE_CHECKBOX:     //  A HTML checkbox. Could be a boolean data type with just one checkbox or it could be a data enumeration meaning there will be
                               //  one checkbox per item in the enumeration.
       if (nSize)
           pLog->Log("(%s) File %s Line %d: Note. For Check-box field size is not required\n", caller, *cfgFname, ln) ;
       if (m_pType->Basetype() == BASETYPE_BOOL)
       {
           if (!nRows) nRows = 1;
           if (!nCols) nCols = 1;
           break ;
       }
       if (m_pType->Basetype() == BASETYPE_ENUM)
       {
           if (!nRows) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No row size supplied\n", caller, *cfgFname, ln) ; }
           if (!nCols) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No col size supplied\n", caller, *cfgFname, ln) ; }
           break ;
       }
       rc = E_CONFIG ;
       pLog->Log("File %s Line %d: <fldspec>: Data type of %s is incompatible to HTMLTYPE_CHECKBOX\n", m_pType->txtType()) ;
       break ;
   case HTMLTYPE_RADIO:        //  A HTML radio button set must necessarily represent a data enumeration and have min/max population of 1
       if (nSize)
           pLog->Log("(%s) File %s Line %d: Note. For Check-box/Radio field size is not required\n", caller, *cfgFname, ln) ;
       if (m_pType->Basetype() == BASETYPE_ENUM)
       {
           if (!nRows) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No row size supplied\n", caller, *cfgFname, ln) ; }
           if (!nCols) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No col size supplied\n", caller, *cfgFname, ln) ; }
           break ;
       }
       rc = E_CONFIG ;
       pLog->Log("(%s) File %s Line %d: <fldspec>: Data type of %s is incompatible to HTMLTYPE_RADIO\n", caller, m_pType->txtType()) ;
       break ;
   case HTMLTYPE_FILE:         //  File uploaded (as for text)
       if (nRows)
           pLog->Log("(%s) File %s Line %d: Note. Rows for FILE are always 1 so not required\n", caller, *cfgFname, ln) ;
       if (!nCols) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No col size supplied\n", caller, *cfgFname, ln) ; }
       if (!nSize) { rc = E_CONFIG ; pLog->Log("(%s) File %s Line %d: No max size supplied\n", caller, *cfgFname, ln) ; }
       nRows = 1;
       break ;
   case HTMLTYPE_HIDDEN:       //  Hidden field
       if (nRows || nCols || nSize)
           pLog->Log("(%s) File %s Line %d: Note. For Hidden field dimensions are not required\n", caller, *cfgFname, ln) ;
       break ;
   }
   return rc ;
}