Changeset 570


Ignore:
Timestamp:
07/15/14 02:59:14 (5 years ago)
Author:
jls17
Message:
  • little refactoring
  • added checks to parse only valid status history and currency field type codes, otherwise the returned tag is 0 (noval_)
Location:
branches/work_311/core
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/work_311/core/ARParseField.cpp

    r569 r570  
    4040        if (result == FINISHED) 
    4141        { 
    42                 field.tag = AR_FIELD; 
    43                 field.u.fieldId = fieldId; 
     42                SetupField(fieldId); 
    4443                return; 
    4544        } 
     
    6867                                if (fieldString.length() == readPos) 
    6968                                { 
    70                                         field.tag = AR_CURRENCY_FLD; 
    71                                         field.u.currencyField = new ARCurrencyPartStruct; 
    72                                         field.u.currencyField->fieldId = fieldId; 
    73                                         field.u.currencyField->partTag = typeId; 
    74                                         strncpy(field.u.currencyField->currencyCode, cCode, AR_MAX_CURRENCY_CODE_SIZE + 1); 
     69                                        SetupCurrencyField(fieldId, typeId, cCode); 
    7570                                        return; 
    7671                                } 
     
    7873                        else if (result == FINISHED) 
    7974                        { 
    80                                 if (fieldId == 15) 
    81                                 { 
    82                                         field.tag = AR_STAT_HISTORY; 
    83                                         field.u.statHistory.userOrTime = typeId; 
    84                                         field.u.statHistory.enumVal = enumId; 
    85                                         return; 
    86                                 } 
     75                                if (fieldId == 15) { SetupStatusHistory(fieldId, typeId, enumId); } 
    8776                        } 
    8877                } 
     
    148137        return field; 
    149138} 
     139 
     140void CARParseField::SetupField(int fieldId) 
     141{ 
     142        field.tag = AR_FIELD; 
     143        field.u.fieldId = fieldId; 
     144} 
     145 
     146void CARParseField::SetupStatusHistory(int fieldId, int usrOrTime, int enumId) 
     147{ 
     148        if (fieldId != 15 || !IsValidStatHistorySubType(usrOrTime)) 
     149                return; 
     150        field.tag = AR_STAT_HISTORY; 
     151        field.u.statHistory.userOrTime = usrOrTime; 
     152        field.u.statHistory.enumVal = enumId; 
     153} 
     154 
     155bool CARParseField::IsValidStatHistorySubType(int usrOrTime) 
     156{ 
     157        switch (usrOrTime) 
     158        { 
     159        case AR_STAT_HISTORY_USER: 
     160        case AR_STAT_HISTORY_TIME: 
     161                return true; 
     162        }; 
     163        return false; 
     164} 
     165 
     166void CARParseField::SetupCurrencyField(int fieldId, int currencyPart, char* currencyCode) 
     167{ 
     168        if (!IsValidCurrencyPart(currencyPart) || currencyCode == NULL) 
     169                return; 
     170 
     171        field.tag = AR_CURRENCY_FLD; 
     172        field.u.currencyField = new ARCurrencyPartStruct; 
     173        field.u.currencyField->fieldId = fieldId; 
     174        field.u.currencyField->partTag = currencyPart; 
     175        strncpy(field.u.currencyField->currencyCode, currencyCode, AR_MAX_CURRENCY_CODE_SIZE + 1); 
     176} 
     177 
     178bool CARParseField::IsValidCurrencyPart(int currencyPart) 
     179{ 
     180        switch (currencyPart) 
     181        { 
     182        case AR_CURRENCY_PART_FIELD: 
     183        case AR_CURRENCY_PART_VALUE: 
     184        case AR_CURRENCY_PART_TYPE: 
     185        case AR_CURRENCY_PART_DATE: 
     186        case AR_CURRENCY_PART_FUNCTIONAL: 
     187                return true; 
     188        } 
     189        return false; 
     190} 
  • branches/work_311/core/ARParseField.h

    r569 r570  
    5050        ReadResult ReadInteger(unsigned int &curPos, int &outInt); 
    5151        static bool isValidChar(char c); 
     52        static bool IsValidStatHistorySubType(int usrOrTime); 
     53        static bool IsValidCurrencyPart(int currencyPart); 
     54 
     55        void SetupField(int fieldId); 
     56        void SetupStatusHistory(int fieldId, int usrOrTime, int enumId); 
     57        void SetupCurrencyField(int fieldId, int currencyPart, char* currencyCode); 
    5258}; 
Note: See TracChangeset for help on using the changeset viewer.