Changeset 372 for branches


Ignore:
Timestamp:
02/03/14 17:28:13 (6 years ago)
Author:
jls17
Message:
  • moved AllMatchingIds? code from CDocActionSetFieldsHelper, CDocFilterActionStruct and CDocAlActionStruct into its own class to remove code duplication
Location:
branches/work_304
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • branches/work_304/ARInsideLib.vcproj

    r335 r372  
    796796                        <File 
    797797                                RelativePath=".\Doc\DocAlGuideDetails.h" 
     798                                > 
     799                        </File> 
     800                        <File 
     801                                RelativePath=".\doc\DocAllMatchingIdsTable.cpp" 
     802                                > 
     803                        </File> 
     804                        <File 
     805                                RelativePath=".\doc\DocAllMatchingIdsTable.h" 
    798806                                > 
    799807                        </File> 
  • branches/work_304/doc/DocActionSetFieldsHelper.cpp

    r371 r372  
    1717#include "stdafx.h" 
    1818#include "DocActionSetFieldsHelper.h" 
     19#include "DocAllMatchingIdsTable.h" 
    1920#include "../core/ARSetFieldHelper.h" 
    2021#include "../core/ARAssignHelper.h" 
     
    210211        { 
    211212                strmSchemaDisplay << " All Matching Ids<br/>"; 
    212                 this->AllMatchingIds(strmSchemaDisplay, fromSchema, readFromSchemaName, obj, AMM_SETFIELDS, nAction, ifElse, rootLevel); 
     213                CDocAllMatchingIdsTable allMatchingFieldsTable(fromSchema, readFromSchemaName, obj, CDocAllMatchingIdsTable::AMM_SETFIELDS, nAction, ifElse, rootLevel); 
     214                allMatchingFieldsTable.ToStream(strmSchemaDisplay); 
    213215        } 
    214216        else 
     
    219221        } 
    220222} 
    221  
    222 void CDocActionSetFieldsHelper::AllMatchingIds(std::ostream& strm, const string& table1, const string& table2, CARServerObject& obj, AllMatchingMode mode, int nAction, IfElseState ifElse, int rootLevel) 
    223 { 
    224         try 
    225         { 
    226                 CARInside& arIn = *CARInside::GetInstance(); 
    227                 CARSchema schema1(table1); 
    228                 CARSchema schema2(table2); 
    229  
    230                 CTable tblListField("tblListMatchingIds", "TblObjectList"); 
    231                 tblListField.AddColumn(0, "Id"); 
    232                 tblListField.AddColumn(0, "Field Name"); 
    233                 tblListField.AddColumn(0, "Value"); 
    234  
    235                 if(schema1.Exists() && schema2.Exists()) 
    236                 { 
    237                         int msgIdTarget = -1; 
    238                         int msgIdValue = -1; 
    239  
    240                         switch (mode) 
    241                         { 
    242                         case AMM_PUSHFIELDS: 
    243                                 msgIdTarget = REFM_PUSHFIELD_TARGET_MATCHING; 
    244                                 msgIdValue  = REFM_PUSHFIELD_VALUE_MATCHING; 
    245                                 break; 
    246                         case AMM_SETFIELDS: 
    247                                 msgIdTarget = REFM_SETFIELDS_TARGET_MATCHING; 
    248                                 msgIdValue  = REFM_SETFIELDS_VALUE_MATCHING; 
    249                                 break; 
    250                         } 
    251  
    252                         // Reference object for left field 
    253                         CRefItem refItemField1(obj, ifElse, nAction, msgIdTarget); 
    254  
    255                         // Reference object for right field 
    256                         CRefItem refItemField2(obj, ifElse, nAction, msgIdValue); 
    257  
    258                         // scan the fields 
    259                         unsigned int fieldCount1 = schema1.GetFields()->GetCount(); 
    260                         for(unsigned int fieldIndex1 = 0; fieldIndex1 < fieldCount1; ++fieldIndex1) 
    261                         { 
    262                                 CARField tmpField1(schema1.GetInsideId(), 0, fieldIndex1); 
    263  
    264                                 if (tmpField1.GetDataType() <= AR_MAX_STD_DATA_TYPE) 
    265                                 { 
    266                                         CARField tmpField2(schema2.GetInsideId(), tmpField1.GetFieldId()); 
    267  
    268                                         if(tmpField2.Exists() && tmpField2.GetDataType() <= AR_MAX_STD_DATA_TYPE) 
    269                                         { 
    270                                                 // add reference for left field 
    271                                                 arIn.AddFieldReference(schema1.GetInsideId(), tmpField1.GetInsideId(), refItemField1); 
    272                                                  
    273                                                 // add reference for right field 
    274                                                 arIn.AddFieldReference(schema2.GetInsideId(), tmpField2.GetInsideId(), refItemField2); 
    275  
    276                                                 //Matching ID 
    277                                                 CTableRow row("cssStdRow");              
    278                                                 row.AddCell(CTableCell(tmpField1.GetFieldId())); 
    279                                                 row.AddCell(CTableCell(arIn.LinkToField(schema1.GetInsideId(), tmpField1.GetInsideId(), rootLevel))); 
    280                                                 row.AddCell(CTableCell(arIn.LinkToField(schema2.GetInsideId(), tmpField2.GetInsideId(), rootLevel))); 
    281                                                 tblListField.AddRow(row); 
    282                                         } 
    283                                 } 
    284                         } 
    285                 } 
    286  
    287                 strm << tblListField; 
    288         } 
    289         catch(exception& e) 
    290         { 
    291                 cout << "EXCEPTION in AlAllMatchingIds of " << table1 << ", " << table2 << ": " << e.what() << endl; 
    292         } 
    293 } 
  • branches/work_304/doc/DocActionSetFieldsHelper.h

    r371 r372  
    2525        ~CDocActionSetFieldsHelper(void); 
    2626 
    27         enum AllMatchingMode 
    28         { 
    29                 AMM_PUSHFIELDS, 
    30                 AMM_SETFIELDS 
    31         }; 
    32  
    3327        void SetFieldsGetSecondaryForm(const string& fromSchema, stringstream &strmSchema, stringstream &strmSchemaDisplay, stringstream &strmServer, stringstream &strmQual); 
    3428        void ShowActionWithServerName(bool showIt); 
    35  
    36         //Get all matching IDs of two forms 
    37         static void AllMatchingIds(std::ostream& strm, const string& table1, const string& table2, CARServerObject& obj, AllMatchingMode mode, int nAction, IfElseState ifElse, int rootLevel); 
    3829 
    3930private: 
  • branches/work_304/doc/DocAlActionStruct.cpp

    r370 r372  
    1717#include "stdafx.h" 
    1818#include "DocAlActionStruct.h" 
     19#include "DocAllMatchingIdsTable.h" 
    1920#include "DocActionOpenWindowHelper.h" 
    2021 
     
    184185 
    185186        return strm.str(); 
    186 } 
    187  
    188 //All matching Ids 
    189 void CDocAlActionStruct::AllMatchingIds(std::ostream& strm, const string& table1, const string& table2, AllMatchingMode mode, int nAction) 
    190 { 
    191         try 
    192         {                
    193                 CARSchema schema1(table1); 
    194                 CARSchema schema2(table2); 
    195  
    196                 CTable tblListField("tblListMatchingIds", "TblObjectList"); 
    197                 tblListField.AddColumn(0, "Id"); 
    198                 tblListField.AddColumn(0, "Field Name"); 
    199                 tblListField.AddColumn(0, "Value"); 
    200  
    201                 if(schema1.Exists() && schema2.Exists()) 
    202                 { 
    203                         int msgIdTarget = -1; 
    204                         int msgIdValue = -1; 
    205  
    206                         switch (mode) 
    207                         { 
    208                         case AMM_PUSHFIELDS: 
    209                                 msgIdTarget = REFM_PUSHFIELD_TARGET_MATCHING; 
    210                                 msgIdValue  = REFM_PUSHFIELD_VALUE_MATCHING; 
    211                                 break; 
    212                         case AMM_SETFIELDS: 
    213                                 msgIdTarget = REFM_SETFIELDS_TARGET_MATCHING; 
    214                                 msgIdValue  = REFM_SETFIELDS_VALUE_MATCHING; 
    215                                 break; 
    216                         } 
    217  
    218                         // Reference object for left field 
    219                         CRefItem refItemField1(*this->obj, ifElse, nAction, msgIdTarget); 
    220  
    221                         // Reference object for right field 
    222                         CRefItem refItemField2(*this->obj, ifElse, nAction, msgIdValue); 
    223  
    224                         // scan the fields 
    225                         unsigned int fieldCount1 = schema1.GetFields()->GetCount(); 
    226                         for(unsigned int fieldIndex1 = 0; fieldIndex1 < fieldCount1; ++fieldIndex1) 
    227                         { 
    228                                 CARField tmpField1(schema1.GetInsideId(), 0, fieldIndex1); 
    229  
    230                                 if (tmpField1.GetDataType() <= AR_MAX_STD_DATA_TYPE) 
    231                                 { 
    232                                         CARField tmpField2(schema2.GetInsideId(), tmpField1.GetFieldId()); 
    233  
    234                                         if(tmpField2.Exists() && tmpField2.GetDataType() <= AR_MAX_STD_DATA_TYPE) 
    235                                         { 
    236                                                 // add reference for left field 
    237                                                 arIn->AddFieldReference(schema1.GetInsideId(), tmpField1.GetInsideId(), refItemField1); 
    238                                                  
    239                                                 // add reference for right field 
    240                                                 arIn->AddFieldReference(schema2.GetInsideId(), tmpField2.GetInsideId(), refItemField2); 
    241  
    242                                                 //Matching ID 
    243                                                 CTableRow row("cssStdRow");              
    244                                                 row.AddCell(CTableCell(tmpField1.GetFieldId())); 
    245                                                 row.AddCell(CTableCell(arIn->LinkToField(schema1.GetInsideId(), tmpField1.GetInsideId(), this->rootLevel))); 
    246                                                 row.AddCell(CTableCell(arIn->LinkToField(schema2.GetInsideId(), tmpField2.GetInsideId(), this->rootLevel))); 
    247                                                 tblListField.AddRow(row); 
    248                                         } 
    249                                 } 
    250                         } 
    251                 } 
    252  
    253                 strm << tblListField; 
    254         } 
    255         catch(exception& e) 
    256         { 
    257                 cout << "EXCEPTION in AlAllMatchingIds of " << table1 << ", " << table2 << ": " << e.what() << endl; 
    258         } 
    259187} 
    260188 
     
    659587                { 
    660588                        strm << " All Matching Ids<br/>"; 
    661                         this->AllMatchingIds(strm, schemaName, pushSchema, AMM_PUSHFIELDS, nAction); 
     589                        CDocAllMatchingIdsTable allMatchingFieldsTbl(schemaName, pushSchema, *obj, CDocAllMatchingIdsTable::AMM_PUSHFIELDS, nAction, ifElse, rootLevel); 
     590                        allMatchingFieldsTbl.ToStream(strm); 
    662591                } 
    663592                else 
  • branches/work_304/doc/DocAlActionStruct.h

    r210 r372  
    4040        int structItemType; 
    4141        IfElseState ifElse; 
    42  
    43         enum AllMatchingMode 
    44         { 
    45                 AMM_PUSHFIELDS, 
    46                 AMM_SETFIELDS 
    47         }; 
    48  
    49         //Get all matching IDs of two forms 
    50         void AllMatchingIds(std::ostream& strm, const string& table1, const string& table2, AllMatchingMode mode, int nAction); 
    5142 
    5243        // AR_ACTIVE_LINK_ACTION_NONE 
  • branches/work_304/doc/DocFilterActionStruct.cpp

    r369 r372  
    1717#include "stdafx.h" 
    1818#include "DocFilterActionStruct.h" 
     19#include "DocAllMatchingIdsTable.h" 
    1920#include <tinyxml/tinyxml.h> 
    2021 
     
    158159        { 
    159160                cout << "EXCEPTION enumerating filter action struct of '" << this->obj->GetName() << "': " << e.what() << endl; 
    160         } 
    161  
    162         return strm.str(); 
    163 } 
    164  
    165 //All matching Ids 
    166 string CDocFilterActionStruct::AllMatchingIds(string table1, string table2, AllMatchingMode mode, int nAction) 
    167 { 
    168         stringstream strm; 
    169         strm.str(""); 
    170  
    171         try 
    172         {                
    173                 CARSchema schema1(table1); 
    174                 CARSchema schema2(table2); 
    175  
    176                 CTable tblListField("tblListMatchingIds", "TblObjectList"); 
    177                 tblListField.AddColumn(0, "Id"); 
    178                 tblListField.AddColumn(0, "Field Name"); 
    179                 tblListField.AddColumn(0, "Value"); 
    180  
    181                 if(schema1.Exists() && schema2.Exists()) 
    182                 { 
    183                         unsigned int fieldCount1 = schema1.GetFields()->GetCount(); 
    184                         for(unsigned int fieldIndex1 = 0; fieldIndex1 < fieldCount1; ++fieldIndex1) 
    185                         { 
    186                                 CARField tmpField1(schema1.GetInsideId(), 0, fieldIndex1); 
    187  
    188                                 if (tmpField1.GetDataType() <= AR_MAX_STD_DATA_TYPE) 
    189                                 { 
    190                                         CARField tmpField2(schema2.GetInsideId(), tmpField1.GetFieldId()); 
    191  
    192                                         if(tmpField2.Exists() && tmpField2.GetDataType() <= AR_MAX_STD_DATA_TYPE) 
    193                                         { 
    194                                                 int msgIdTarget = 0; 
    195                                                 int msgIdValue = 0; 
    196                                                 switch (mode) 
    197                                                 { 
    198                                                 case AMM_SETFIELDS: 
    199                                                         msgIdTarget = REFM_SETFIELDS_TARGET_MATCHING; 
    200                                                         msgIdValue = REFM_SETFIELDS_VALUE_MATCHING; 
    201                                                         break; 
    202                                                 case AMM_PUSHFIELDS: 
    203                                                         msgIdTarget = REFM_PUSHFIELD_TARGET_MATCHING; 
    204                                                         msgIdValue = REFM_PUSHFIELD_TARGET_MATCHING; 
    205                                                         break; 
    206                                                 } 
    207  
    208                                                 //Reference field1 
    209                                                 CRefItem refItemField1(*this->obj, ifElse, nAction, msgIdTarget); 
    210                                                 arIn->AddFieldReference(schema1.GetInsideId(), tmpField1.GetInsideId(), refItemField1); 
    211  
    212                                                 //Reference field2 
    213                                                 CRefItem refItemField2(*this->obj, ifElse, nAction, msgIdValue); 
    214                                                 arIn->AddFieldReference(schema2.GetInsideId(), tmpField2.GetInsideId(), refItemField2); 
    215  
    216                                                 //Matching ID 
    217                                                 CTableRow row("cssStdRow");              
    218                                                 row.AddCell(CTableCell(tmpField1.GetFieldId())); 
    219                                                 row.AddCell(CTableCell(arIn->LinkToField(schema1.GetName(), tmpField1.GetInsideId(), this->rootLevel))); 
    220                                                 row.AddCell(CTableCell(arIn->LinkToField(schema2.GetName(), tmpField2.GetInsideId(), this->rootLevel))); 
    221                                                 tblListField.AddRow(row); 
    222                                         } 
    223                                 } 
    224                         } 
    225                 }        
    226  
    227                 strm << tblListField; 
    228         } 
    229         catch(exception& e) 
    230         { 
    231                 cout << "EXCEPTION in AlAllMatchingIds: " << table1 << ", " << table2 << "; error: " << e.what() << endl; 
    232161        } 
    233162 
     
    619548                { 
    620549                        strm << " All Matching Ids<br/>" << endl; 
    621                         strm << this->AllMatchingIds(schemaName, pushSchema, AMM_PUSHFIELDS, nAction); 
     550                        CDocAllMatchingIdsTable allMatchingFieldsTbl(schemaName, pushSchema, *obj, CDocAllMatchingIdsTable::AMM_PUSHFIELDS, nAction, ifElse, rootLevel); 
     551                        allMatchingFieldsTbl.ToStream(strm); 
    622552                } 
    623553                else 
  • branches/work_304/doc/DocFilterActionStruct.h

    r335 r372  
    4141        IfElseState ifElse; 
    4242 
    43         enum AllMatchingMode  
    44         { 
    45                 AMM_PUSHFIELDS, 
    46                 AMM_SETFIELDS 
    47         }; 
    48  
    4943        enum WebserviceMappingMode  
    5044        { 
     
    5246                WMM_OUTPUT 
    5347        }; 
    54  
    55         //Get all matching IDs of two forms 
    56         string AllMatchingIds(string table1, string table2, AllMatchingMode mode, int nAction); 
    5748 
    5849        //AR_FILTER_ACTION_NONE 
Note: See TracChangeset for help on using the changeset viewer.