Changeset 369 for branches


Ignore:
Timestamp:
02/03/14 17:26:47 (6 years ago)
Author:
jls17
Message:
  • moved most of the setfield html generation to the DocActionSetFieldsHelper? class. This should became a single class for setfields documentation (so we don't have to keep the code twice; for AL and FLT).
Location:
branches/work_304/doc
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/work_304/doc/DocActionSetFieldsHelper.cpp

    r368 r369  
    2020#include "../core/ARAssignHelper.h" 
    2121 
    22 CDocActionSetFieldsHelper::CDocActionSetFieldsHelper(CARInside &arInside, CARServerObject &arServerObject, const ARSetFieldsActionStruct& sFieldStruct, int structItemType, IfElseState ifElseMode, int numAction) 
    23 : arIn(arInside), obj(arServerObject), setFieldsStruct(sFieldStruct), ifElse(ifElseMode) 
     22CDocActionSetFieldsHelper::CDocActionSetFieldsHelper(CARInside &arInside, CARServerObject &arServerObject, const ARSetFieldsActionStruct& sFieldStruct, int structItemType, IfElseState ifElseMode, int numAction, int rootLevel) 
     23: arIn(arInside), obj(arServerObject), setFieldsStruct(sFieldStruct), ifElse(ifElseMode), rootLevel(rootLevel) 
    2424{ 
    2525        arStructItemType = structItemType; 
     
    3131} 
    3232 
    33 void CDocActionSetFieldsHelper::SetFieldsGetSecondaryForm(const string& fromSchema, int rootLevel, stringstream &strmSchema, stringstream &strmSchemaDisplay, stringstream &strmServer, stringstream &strmQual) 
    34 { 
     33void CDocActionSetFieldsHelper::SetFieldsGetSecondaryForm(const string& fromSchema, stringstream &strmSchema, stringstream &strmSchemaDisplay, stringstream &strmServer, stringstream &strmQual) 
     34{ 
     35        bool useDefaultFieldMappingTable = true; 
     36 
    3537        CARSchema wfSchema(fromSchema); 
    3638        if (wfSchema.Exists()) 
     
    148150                                CARAssignHelper assignHelper(arIn, rootLevel, obj, fromSchema, fromSchema); 
    149151                                strmSchemaDisplay << assignHelper.SetFieldsAssignment(setFieldsStruct, nAction, ifElse); 
     152                         
     153                                // we've generated our own html-table with input/output mapping. So avoid default table. 
     154                                useDefaultFieldMappingTable = false; 
    150155                        } 
    151156                        break; 
     
    163168                                strmSchema << sfh.GetSchemaName(); 
    164169                                strmSchemaDisplay << sfh.GetSchemaName(); 
     170 
     171                                useDefaultFieldMappingTable = false; 
    165172                        } 
    166173                        break; 
    167174                } 
    168175        } 
    169 } 
     176 
     177        if (useDefaultFieldMappingTable) 
     178        { 
     179                GenerateDefaultMappingTable(fromSchema, strmSchema, strmSchemaDisplay, strmServer, strmQual); 
     180        } 
     181} 
     182 
     183void CDocActionSetFieldsHelper::GenerateDefaultMappingTable(const string& fromSchema, stringstream &strmSchema, stringstream &strmSchemaDisplay, stringstream &strmServer, stringstream &strmQual) 
     184{ 
     185        //For the following internal calculations we need a secondary form 
     186        string readFromSchemaName = strmSchema.str(); 
     187 
     188        string tmpDisplayName = strmSchemaDisplay.str(); 
     189        if(tmpDisplayName.size()==0) 
     190                tmpDisplayName = readFromSchemaName; 
     191 
     192        strmSchemaDisplay << "From: " << arIn.LinkToSchema(tmpDisplayName, rootLevel) << "<br/>" << endl; 
     193 
     194        //Qualification 
     195        strmSchemaDisplay << strmQual.str() << endl; 
     196 
     197        // set field mapping 
     198        strmSchemaDisplay << "Field Mapping:"; 
     199        if (setFieldsStruct.fieldList.fieldAssignList[0].fieldId == AR_LIKE_ID) 
     200        { 
     201                strmSchemaDisplay << " All Matching Ids<br/>"; 
     202                this->AllMatchingIds(strmSchemaDisplay, fromSchema, readFromSchemaName, AMM_SETFIELDS, nAction); 
     203        } 
     204        else 
     205        { 
     206                strmSchemaDisplay << "<br/>" << endl; 
     207                CARAssignHelper assignHelper(arIn, rootLevel, obj, fromSchema, readFromSchemaName); 
     208                strmSchemaDisplay << assignHelper.SetFieldsAssignment(setFieldsStruct, nAction, ifElse); 
     209        } 
     210} 
     211 
     212void CDocActionSetFieldsHelper::AllMatchingIds(std::ostream& strm, const string& table1, const string& table2, AllMatchingMode mode, int nAction) 
     213{ 
     214        try 
     215        {                
     216                CARSchema schema1(table1); 
     217                CARSchema schema2(table2); 
     218 
     219                CTable tblListField("tblListMatchingIds", "TblObjectList"); 
     220                tblListField.AddColumn(0, "Id"); 
     221                tblListField.AddColumn(0, "Field Name"); 
     222                tblListField.AddColumn(0, "Value"); 
     223 
     224                if(schema1.Exists() && schema2.Exists()) 
     225                { 
     226                        int msgIdTarget = -1; 
     227                        int msgIdValue = -1; 
     228 
     229                        switch (mode) 
     230                        { 
     231                        case AMM_PUSHFIELDS: 
     232                                msgIdTarget = REFM_PUSHFIELD_TARGET_MATCHING; 
     233                                msgIdValue  = REFM_PUSHFIELD_VALUE_MATCHING; 
     234                                break; 
     235                        case AMM_SETFIELDS: 
     236                                msgIdTarget = REFM_SETFIELDS_TARGET_MATCHING; 
     237                                msgIdValue  = REFM_SETFIELDS_VALUE_MATCHING; 
     238                                break; 
     239                        } 
     240 
     241                        // Reference object for left field 
     242                        CRefItem refItemField1(this->obj, ifElse, nAction, msgIdTarget); 
     243 
     244                        // Reference object for right field 
     245                        CRefItem refItemField2(this->obj, ifElse, nAction, msgIdValue); 
     246 
     247                        // scan the fields 
     248                        unsigned int fieldCount1 = schema1.GetFields()->GetCount(); 
     249                        for(unsigned int fieldIndex1 = 0; fieldIndex1 < fieldCount1; ++fieldIndex1) 
     250                        { 
     251                                CARField tmpField1(schema1.GetInsideId(), 0, fieldIndex1); 
     252 
     253                                if (tmpField1.GetDataType() <= AR_MAX_STD_DATA_TYPE) 
     254                                { 
     255                                        CARField tmpField2(schema2.GetInsideId(), tmpField1.GetFieldId()); 
     256 
     257                                        if(tmpField2.Exists() && tmpField2.GetDataType() <= AR_MAX_STD_DATA_TYPE) 
     258                                        { 
     259                                                // add reference for left field 
     260                                                arIn.AddFieldReference(schema1.GetInsideId(), tmpField1.GetInsideId(), refItemField1); 
     261                                                 
     262                                                // add reference for right field 
     263                                                arIn.AddFieldReference(schema2.GetInsideId(), tmpField2.GetInsideId(), refItemField2); 
     264 
     265                                                //Matching ID 
     266                                                CTableRow row("cssStdRow");              
     267                                                row.AddCell(CTableCell(tmpField1.GetFieldId())); 
     268                                                row.AddCell(CTableCell(arIn.LinkToField(schema1.GetInsideId(), tmpField1.GetInsideId(), this->rootLevel))); 
     269                                                row.AddCell(CTableCell(arIn.LinkToField(schema2.GetInsideId(), tmpField2.GetInsideId(), this->rootLevel))); 
     270                                                tblListField.AddRow(row); 
     271                                        } 
     272                                } 
     273                        } 
     274                } 
     275 
     276                strm << tblListField; 
     277        } 
     278        catch(exception& e) 
     279        { 
     280                cout << "EXCEPTION in AlAllMatchingIds of " << table1 << ", " << table2 << ": " << e.what() << endl; 
     281        } 
     282} 
  • branches/work_304/doc/DocActionSetFieldsHelper.h

    r242 r369  
    2222{ 
    2323public: 
    24         CDocActionSetFieldsHelper(CARInside &arInside, CARServerObject &arServerObject, const ARSetFieldsActionStruct& sFieldStruct, int structItemType, IfElseState ifElse, int numAction); 
     24        CDocActionSetFieldsHelper(CARInside &arInside, CARServerObject &arServerObject, const ARSetFieldsActionStruct& sFieldStruct, int structItemType, IfElseState ifElse, int numAction, int rootLevel); 
    2525        ~CDocActionSetFieldsHelper(void); 
    2626 
    27         void SetFieldsGetSecondaryForm(const string& fromSchema, int rootLevel, stringstream &strmSchema, stringstream &strmSchemaDisplay, stringstream &strmServer, stringstream &strmQual); 
     27        void SetFieldsGetSecondaryForm(const string& fromSchema, stringstream &strmSchema, stringstream &strmSchemaDisplay, stringstream &strmServer, stringstream &strmQual); 
    2828 
    2929private: 
     
    3434        IfElseState ifElse; 
    3535        int nAction; 
     36        int rootLevel; 
     37 
     38        enum AllMatchingMode 
     39        { 
     40                AMM_PUSHFIELDS, 
     41                AMM_SETFIELDS 
     42        }; 
     43 
     44private: 
     45        void GenerateDefaultMappingTable(const string& fromSchema, std::stringstream &strmSchema, std::stringstream &strmSchemaDisplay, std::stringstream &strmServer, std::stringstream &strmQual); 
     46 
     47        //Get all matching IDs of two forms 
     48        void AllMatchingIds(std::ostream& strm, const string& table1, const string& table2, AllMatchingMode mode, int nAction); 
     49 
    3650}; 
  • branches/work_304/doc/DocAlActionStruct.cpp

    r367 r369  
    332332                qualification.str(""); 
    333333 
    334                 CDocActionSetFieldsHelper *alHelper = new CDocActionSetFieldsHelper(*arIn, *obj, action, structItemType, ifElse, nAction); 
    335                 alHelper->SetFieldsGetSecondaryForm(schemaName, rootLevel, secondaryFormRaw, secondaryFormDisplay, serverRaw, qualification); 
     334                CDocActionSetFieldsHelper *alHelper = new CDocActionSetFieldsHelper(*arIn, *obj, action, structItemType, ifElse, nAction, rootLevel); 
     335                alHelper->SetFieldsGetSecondaryForm(schemaName, secondaryFormRaw, secondaryFormDisplay, serverRaw, qualification); 
    336336                delete alHelper; 
    337337 
    338                 //For the following internal calculations we need a secondary form 
    339                 string readFromSchemaName = secondaryFormRaw.str(); 
    340  
    341                 string tmpDisplayName = secondaryFormDisplay.str(); 
    342                 if(tmpDisplayName.size()==0) 
    343                         tmpDisplayName = readFromSchemaName; 
    344  
    345338                strm << "Server: " << serverRaw.str() << "<br/>" << endl; 
    346                 strm << "From: " << arIn->LinkToSchema(tmpDisplayName, rootLevel) << "<br/>" << endl; 
    347  
    348                 //Qualification 
    349                 strm << qualification.str() << endl;             
    350  
    351                 // set field mapping 
    352                 strm << "Field Mapping:"; 
    353                 if (action.fieldList.fieldAssignList[0].fieldId == AR_LIKE_ID) 
    354                 { 
    355                         strm << " All Matching Ids<br/>"; 
    356                         this->AllMatchingIds(strm, schemaName, readFromSchemaName, AMM_SETFIELDS, nAction); 
    357                 } 
    358                 else 
    359                 { 
    360                         strm << "<br/>" << endl; 
    361                         CARAssignHelper assignHelper(*arIn, rootLevel, *this->obj, schemaName, readFromSchemaName); 
    362                         strm << assignHelper.SetFieldsAssignment(action, nAction, ifElse); 
    363                 } 
     339                strm << secondaryFormDisplay.str(); 
    364340        } 
    365341        catch(exception& e) 
  • branches/work_304/doc/DocFilterActionStruct.cpp

    r367 r369  
    422422                stringstream secondaryFormRaw, secondaryFormDisplay, serverRaw, qualification; 
    423423 
    424                 CDocActionSetFieldsHelper* filterHelper = new CDocActionSetFieldsHelper(*arIn, *obj, action, structItemType, ifElse, nAction); 
    425                 filterHelper->SetFieldsGetSecondaryForm(schemaName, rootLevel, secondaryFormRaw, secondaryFormDisplay,  serverRaw, qualification); 
     424                CDocActionSetFieldsHelper* filterHelper = new CDocActionSetFieldsHelper(*arIn, *obj, action, structItemType, ifElse, nAction, rootLevel); 
     425                filterHelper->SetFieldsGetSecondaryForm(schemaName, secondaryFormRaw, secondaryFormDisplay,  serverRaw, qualification); 
    426426                delete filterHelper; 
    427427 
     
    512512                else 
    513513                { 
    514                         strm << "From: " << arIn->LinkToSchema(tmpDisplayName, rootLevel) << "<br/>" << endl; 
    515  
    516                         //Qualification 
    517                         strm << qualification.str() << endl; 
    518  
    519                         // set field mapping 
    520                         strm << "Field Mapping:"; 
    521                         if (action.fieldList.fieldAssignList[0].fieldId == AR_LIKE_ID) 
    522                         { 
    523                                 strm << " All Matching Ids<br/>"; 
    524                                 strm << this->AllMatchingIds(schemaName, readFromSchemaName, AMM_SETFIELDS, nAction); 
    525                         } 
    526                         else 
    527                         { 
    528                                 strm << "<br/>" << endl; 
    529                                 CARAssignHelper assignHelper(*arIn, rootLevel, *this->obj, schemaName, readFromSchemaName); 
    530                                 strm << assignHelper.SetFieldsAssignment(action, nAction, ifElse); 
    531                         } 
     514                        strm << tmpDisplayName; 
    532515                } 
    533516        } 
Note: See TracChangeset for help on using the changeset viewer.