Database and Data Class Config Read Functions Validate a field specification
| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdsFldspec::Validate | (hzLogger*,hzString&,const char*,uint32_t,) |
Declared in file: hzDissemino.h
Defined in file : hdsConfig.cpp
Function Logic:
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 ;
}