Rev 2265 | Blame | Compare with Previous | Last modification | View Log | RSS feed
//---------------------------------------------------------------------------#ifndef MainH#define MainH//---------------------------------------------------------------------------#include <Classes.hpp>#include <Controls.hpp>#include <StdCtrls.hpp>#include <Forms.hpp>#include <ComCtrls.hpp>#include <ExtCtrls.hpp>#include <Menus.hpp>#include <ToolWin.hpp>#include <Buttons.hpp>#include <DBCtrls.hpp>#include "Grids_ts.hpp"#include "TSDBGrid.hpp"#include "TSGrid.hpp"#include <ADODB.hpp>#include <DB.hpp>#include <ActnList.hpp>#include <vcl\Clipbrd.hpp>#include <ImgList.hpp>#include "TXMLSchema.h"#include "AdvGrid.hpp"#include "BaseGrid.hpp"#include <Grids.hpp>#include "DBAdvNavigator.hpp"#include "AdvPageControl.hpp"#include "AsgFindDialog.hpp"#include "DBAdvGrd.hpp"#include "DBAdvGrid.hpp"#include "ProgressBar.h"#include <Mask.hpp>#include <map>#include <string>#include <vector>typedef map<unsigned int, AnsiString> TXNIndexMap;typedef pair<unsigned int, AnsiString> TXNIndexPair;typedef map<string, string> IterationParams;typedef pair<string, string> IterationParamsPair;typedef struct{string name;unsigned int increment;unsigned int initial_value;unsigned int reset_at;unsigned int value;} IterationSequence;typedef map<string, IterationSequence> IterationSequences;typedef pair<string, IterationSequence> IterationSequencesPair;typedef struct{int txnscenario_no;int txnspec_no;int fieldtag;AnsiString fieldname;int subscript;AnsiString fieldvalue;AnsiString xpath;char user_supplied;} TxnSpecValue;typedef map<AnsiString, TxnSpecValue> TxnSpecValueMap;typedef map<AnsiString, TxnSpecValue>::iterator TxnSpecValueIterator;typedef pair<AnsiString, TxnSpecValue> TxnSpecValuePair;typedef map<AnsiString, char> FoundTxnSpecValueMap;typedef pair<AnsiString, char> FoundTxnSpecValuePair;typedef map<AnsiString, char>::iterator FoundTxnSpecValueIterator;class DefinedVariableTable;class Iteration;class ISecurityWrapperFactory;class SequenceCollection;class TestScenario;class TransactionSpecification;//class UdTransferManager;#include "SecurityWrapper.h"#include "TransactionCache.h"#include "TransactionTemplateCollection.h"using namespace std;//---------------------------------------------------------------------------class TMainForm : public TForm{__published: // IDE-managed ComponentsTPanel *Panel1;TPanel *Panel2;TSplitter *Splitter1;TMainMenu *MainMenu1;TPanel *Panel4;TADOQuery *MASSTxnsQuery;TDataSource *MASSTxnsDataSource;TActionList *ActionList1;TAction *EditTestCase;TADOQuery *TxnSpecQuery;TDataSource *TxnSpecDataSource;TPanel *Panel3;TADOQuery *TxnValuesQuery;TDataSource *TxnValuesDataSource;TPanel *Panel8;TImageList *ImageList1;TADOQuery *TestCaseQuery;TDataSource *TestCaseEditDataSource;TPanel *Panel9;TDBMemo *DBMemo2;TDBMemo *DBMemo3;TLabel *Label4;TBitBtn *SaveUseCaseEditBtn;TADOQuery *IterationParamsQuery;TDataSource *IterationParamsDataSource;TPopupMenu *ScenarioPopupMenu;TMenuItem *NewTransaction;TAction *NewTransactionAction;TAction *DeleteTransactionAction;TPanel *TestCasePanel;TPanel *Panel6;TSplitter *Splitter2;TToolBar *TestScenarioToolBar;TToolButton *ToolButton2;TSpeedButton *AddTestCaseNode;TToolButton *ToolButton4;TSpeedButton *TestCaseZoomIn;TSpeedButton *TestCaseZoomOut;TTreeView *TestCaseTreeView;TPanel *Panel7;TAction *RunTestCase;TPanel *Panel10;TPanel *Panel5;TToolBar *ToolBar4;TToolButton *ToolButton8;TBitBtn *ApplyTemplates;TToolButton *ToolButton9;TADOQuery *TxnStepsQuery;TDataSource *TxnStepsDataSource;TDBNavigator *DBNavigator3;TtsDBGrid *tsDBGrid6;TADOQuery *TxnHdrValuesQuery;TDataSource *TxnHdrValuesDataSource;TDBNavigator *DBNavigator4;TtsDBGrid *tsDBGrid4;TMenuItem *N1;TMenuItem *ScenarioParameters;TADOQuery *SequenceGeneratorQuery;TDataSource *SequenceGeneratorDataSource;TPopupMenu *TxnValuesPopupMenu;TMenuItem *RemoveUserSuppliedValue;TBitBtn *GenerateTestTestCaseBtn;TMenuItem *ApplyTemplatesToScenario;TMemo *TxnFieldComments;TSplitter *Splitter5;TLabel *Label3;TEdit *FieldDatatype;TPanel *Panel13;TLabel *Label7;TListBox *FieldEnumValues;TStringField *TxnValuesQueryFIELDNAME;TStringField *TxnValuesQueryXPATH;TStringField *TxnValuesQueryPROJECT_CODE;TBCDField *TxnValuesQueryITERATION;TStringField *TxnValuesQueryUSER_SUPPLIED;TIntegerField *TxnValuesQuerySUBSCRIPT;TBCDField *TxnValuesQueryFIELDTAG;TStringField *TxnValuesQueryFIELDVALUE;TStringField *TxnValuesQueryNOTES;TBCDField *TxnValuesQueryTXNSPEC_NO;TBCDField *TxnValuesQueryTESTSCENARIO_NO;TStringField *TxnValuesQueryDISPLAY_FIELDNAME;TToolBar *ToolBar5;TDBAdvNavigator *DBAdvNavigator1;TDBAdvNavigator *PayloadStructureNavigator;TAdvPageControl *TestsPageControl;TAdvTabSheet *TestCaseTabSheet;TAdvTabSheet *ParamsTabSheet;TAdvTabSheet *MASSTxnTabSheet;TStringField *TestCaseQueryUSECASE_ID;TStringField *TestCaseQueryNAME;TStringField *TestCaseQueryDESCRIPTION;TStringField *TestCaseQueryTESTCASE_ID;TBCDField *TestCaseQueryCASE_REPEAT;TBCDField *TestCaseQueryREPEAT_DELAY;TMenuItem *N2;TMenuItem *Properties1;TPopupMenu *TransactionPopupMenu;TMenuItem *DeleteTransaction;TMenuItem *DeleteScenario;TAction *DeleteScenarioAction;TXMLSchema *XMLSchema;TAdvPageControl *TestParametersPageControl;TAdvTabSheet *IterationParametersTabSheet;TAdvTabSheet *BatchHeaderParametersTabSheet;TAdvTabSheet *SequenceGeneratorsTabSheet;TDBAdvStringGrid *TestCaseGrid;TDBAdvStringGrid *StepsGrid;TDBAdvStringGrid *DBAdvStringGrid2;TDBAdvStringGrid *DBAdvStringGrid3;TAdvPageControl *AdvPageControl1;TAdvTabSheet *AdvTabSheet1;TAdvTabSheet *AdvTabSheet2;TDBAdvGrid *NewPayloadStructureGrid;TDBAdvStringGrid *TransactionValueGrid;TAdvPageControl *TransactionStructurePageControl;TAdvTabSheet *PayloadStructureTabSheet;TAdvTabSheet *NewPayloadStructureTabSheet;TAdvTabSheet *HeaderStructureTabSheet;TBCDField *TxnValuesQueryORDINAL;TBCDField *TxnValuesQueryCHILD_COUNT;TStatusBar *MainStatusBar;TDBAdvNavigator *HeaderStructureNavigator;TDBAdvStringGrid *HeaderStructureGrid;TDBAdvNavigator *NewPayloadStructureNavigator;TADOQuery *TxnHeaderValuesQuery;TStringField *StringField1;TStringField *StringField2;TStringField *StringField3;TBCDField *BCDField1;TStringField *StringField4;TIntegerField *IntegerField1;TBCDField *BCDField2;TStringField *StringField5;TStringField *StringField6;TBCDField *BCDField3;TBCDField *BCDField4;TStringField *StringField7;TBCDField *BCDField5;TBCDField *BCDField6;TDataSource *TxnHeaderValuesDataSource;TAdvPageControl *MainPageControl;TAdvTabSheet *TestCasesTabSheet;TAdvTabSheet *TestScenariosTabSheet;TAdvTabSheet *ScenarioStepsTabSheet;TToolButton *ToolButton3;TAdvGridFindDialog *TransactionValueGridFindDialog;TAdvGridFindDialog *HeaderStructureGridFindDialog;TADOQuery *SequenceGeneratorValueQuery;TDataSource *SequenceGeneratorValueDataSource;TDBAdvStringGrid *SequenceGeneratorsGrid;TDBAdvNavigator *SequenceGeneratorNavigator;TEdit *DocDataType;TLabel *Label8;TMenuItem *ImportTransactions;TAction *ImportTransactionAction;TMenuItem *Generate;TAction *GenerateAction;TCheckBox *IncludedInMac;TToolButton *ToolButton5;TBitBtn *UdTransferBtn;TMenuItem *F1;TMenuItem *Exit;TPanel *Panel11;TMenuItem *Help1;TMenuItem *About1;void __fastcall FormShow(TObject *Sender);void __fastcall EditTestCaseExecute(TObject *Sender);void __fastcall UseCaseDBGridEnter(TObject *Sender);void __fastcall TestCaseTreeViewEnter(TObject *Sender);void __fastcall LoadIteration(TObject *Sender);void __fastcall IterationParamsQueryAfterInsert(TDataSet *DataSet);void __fastcall TestCaseTreeViewChange(TObject *Sender, TTreeNode *Node);void __fastcall NewTransactionActionExecute(TObject *Sender);void __fastcall DeleteTransactionActionExecute(TObject *Sender);void __fastcall TestCaseZoomInClick(TObject *Sender);void __fastcall TestCaseZoomOutClick(TObject *Sender);void __fastcall AddTestCaseNodeClick(TObject *Sender);void __fastcall TestCaseTreeViewEndDrag(TObject *Sender, TObject *Target,int X, int Y);void __fastcall TestCaseTreeViewStartDrag(TObject *Sender, TDragObject *&DragObject);void __fastcall TestCaseTreeViewDragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept);void __fastcall ApplyTemplatesClick(TObject *Sender);void __fastcall TxnHdrValuesQueryAfterInsert(TDataSet *DataSet);void __fastcall ScenarioParametersClick(TObject *Sender);void __fastcall TestCaseTreeViewMouseDown(TObject *Sender,TMouseButton Button, TShiftState Shift, int X, int Y);void __fastcall TxnValuesQueryBeforePost(TDataSet *DataSet);void __fastcall TxnStepsQueryBeforeClose(TDataSet *DataSet);void __fastcall RemoveUserSuppliedValueClick(TObject *Sender);void __fastcall CopyValuesToClipboardBtnClick(TObject *Sender);void __fastcall GenerateTestTestCaseBtnClick(TObject *Sender);void __fastcall ApplyTemplatesToScenarioClick(TObject *Sender);void __fastcall FieldEnumValuesDblClick(TObject *Sender);void __fastcall FormClose(TObject *Sender, TCloseAction &Action);void __fastcall SetGenerationDirectoryClick(TObject *Sender);void __fastcall TestCaseGridRowChanging(TObject *Sender, int OldRow,int NewRow, bool &Allow);void __fastcall TestCaseQueryAfterClose(TDataSet *DataSet);void __fastcall TestCaseQueryAfterOpen(TDataSet *DataSet);void __fastcall TestCaseQueryBeforePost(TDataSet *DataSet);void __fastcall TestCaseQueryAfterPost(TDataSet *DataSet);void __fastcall TxnStepsQueryAfterPost(TDataSet *DataSet);void __fastcall TxnStepsNewRow(TDataSet *DataSet);void __fastcall SequenceGeneratorQueryAfterInsert(TDataSet *DataSet);void __fastcall TestCaseTreeViewEditing(TObject *Sender, TTreeNode *Node, bool &AllowEdit);void __fastcall TestCaseTreeViewEdited(TObject *Sender,TTreeNode *Node, AnsiString &S);void __fastcall TestScenarioPropertiesClick(TObject *Sender);void __fastcall TestCaseTreeViewContextPopup(TObject *Sender,TPoint &MousePos, bool &Handled);void __fastcall DeleteScenarioClick(TObject *Sender);void __fastcall DeleteScenarioChildren(int scenario);void __fastcall TransactionValueGrid1BeforeContractNode(TObject *Sender,int ARow, int ARowReal, bool &Allow);void __fastcall TransactionValueGridCanEditCell(TObject *Sender, int ARow, int ACol, bool &CanEdit);void __fastcall TransactionValueGridGetDisplText(TObject *Sender, int ACol, int ARow, AnsiString &Value);void __fastcall TransactionValueGridRowChanging(TObject *Sender, int OldRow, int NewRow, bool &Allow);void __fastcall HeaderStructureGridRowChanging(TObject *Sender, int OldRow, int NewRow, bool &Allow);void __fastcall StepsGridRowChanging(TObject *Sender, int OldRow, int NewRow, bool &Allow);void __fastcall HeaderStructureTabSheetShow(TObject *Sender);void __fastcall PayloadStructureTabSheetShow(TObject *Sender);void __fastcall MainStatusBarResize(TObject *Sender);void __fastcall TransactionValueGridKeyDown(TObject *Sender, WORD &Key,TShiftState Shift);void __fastcall HeaderStructureGridKeyDown(TObject *Sender, WORD &Key,TShiftState Shift);void __fastcall ImportTransactionActionExecute(TObject *Sender);void __fastcall GenerateActionExecute(TObject *Sender);void __fastcall UdTransferBtnClick(TObject *Sender);void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);void __fastcall TestCaseTreeViewKeyUp(TObject *Sender, WORD &Key, TShiftState Shift);void __fastcall ExitClick(TObject *Sender);void __fastcall StepsGridNewRow (TObject *Sender, int ARow);void __fastcall ScenarioStepsNavigatorClick(TObject *Sender, TAdvNavigateBtn Button);void __fastcall ScenarioStepsNavigatorBefore(TObject *Sender, TAdvNavigateBtn Button);void __fastcall ValidateOldTestCaseCell(TObject *Sender, int OldRow,int OldCol, int NewRow, int NewCol, bool &Allow);void __fastcall AboutClick(TObject *Sender);private: // User declarationsTXNIndexMap m_mass_txns;AnsiString m_testteamcode;AnsiString m_currenttestcaseid;AnsiString m_currentproject;int m_currentiteration;string m_schema_handle;int m_testscenario_no;int m_txnspec_no;string m_structure_name;bool m_engineering_mode;int m_currentcaserepeat;int m_currentcasedelay;TRegistry * m_Registry;vector< string > m_xml_schemas;TTreeNode * m_startnode;std::vector< int > m_parents;TransactionCache m_transactionCache;TransactionTemplateCollection m_transactionTemplates;ProgressBar * m_progressBar;// UdTransferManager * m_transferManager;HINSTANCE m_securityWrapper;getSecurityWrapperFactory_t m_getSecurityWrapperFactory;ISecurityWrapperFactory * m_securityWrapperFactory;void __fastcall InitialiseMASSTxns();void __fastcall InitialiseTxnParams(unsigned int schema_format_version, IterationParams &iteration_params, IterationSequences &iteration_sequences);void __fastcall InitialiseTestScenario(unsigned int testscenario_no, TxnSpecValueMap &txnSpecValueMap, FoundTxnSpecValueMap &foundTxnSpecValueMap, IterationSequences &iteration_sequences, IterationParams &iteration_params);string __fastcall FindField(const string &structure_name, int fieldtag);void __fastcall InitialiseUdTransferManager();void __fastcall LoadTestCaseNodes(TTreeNode *testcase_node);void __fastcall ResequenceTestCases(TTreeNode *testcase_node);void __fastcall ResequenceTransactions(TTreeNode *testcase_node);void __fastcall ProcessTxnStructure(string structure_handle, unsigned short udtype, unsigned short udsubtype, int testscenario_no, int txnspec_no, TADOQuery *query, TxnSpecValueMap &txnSpecValueMap, FoundTxnSpecValueMap &foundTxnSpecValueMap, IterationParams &iteration_params, IterationSequences &iteration_sequences, unsigned int nested_subscript);AnsiString LookupParameter(IterationParams &iteration_params, IterationSequences &iteration_sequences, TADOQuery *query, int testscenario_no, const string ¶m, unsigned short udtype, unsigned short udsubtype);static AnsiString & getNameFromNode( AnsiString & name, const AnsiString & string );void __fastcall populateHeaderStructureTab( const AnsiString & structure );void __fastcall populatePayloadStructureTab( const AnsiString & structure );void __fastcall buildTransactionSpecificationValues(TransactionCache & transactionCache,const int & testScenario,const int & transactionSpecification,const std::string & transactionStructureName,const std::string & headerStructureName,const std::string & schema,const int & iteration );void __fastcall buildTransactionSpecificationFieldValue(TADOQuery & query,const std::string & rootStructure,const std::string & fieldHandle,const int & testScenario,const int & transactionSpecification,int & ordinal,const & childCount,TransactionSpecification & transactions,const int & subscript = 0 );void __fastcall buildTransactionSpecificationRepeatValue(TADOQuery & query,const std::string & rootStructure,const std::string & attribute,const int & testScenario,const int & transactionSpecification,const std::string & transactionStructureHandle,int & ordinal,TransactionSpecification & transactions,const int & repeatLimit = 1000 );void __fastcall buildTransactionSpecificationValues(TADOQuery & query,const std::string & rootStructure,const int & testScenario,const int & transactionSpecification,const std::string & transactionStructureHandle,int & ordinal,TransactionSpecification & transactions );const unsigned __fastcall countChildren(const std::string & transactionStructureHandle,const bool & isStructureRepeat );const unsigned __fastcall countChildren(const std::string & attribute,const std::string & transactionStructureHandle,const int & repeatLimit = 1000 );void __fastcall clearTransactionSpecificationValueTree( TDBAdvGrid & grid );void __fastcall buildTransactionSpecificationValueTree(TDBAdvGrid & grid,TADOQuery & query );static const int countChildNodes(TDBAdvGrid & grid,TADOQuery & query,const int & row,const int & rows );void __fastcall getParentOrdinals( std::vector< int > & parents );const bool __fastcall isParent( const int & ordinal );void __fastcall readTransactionSpecifications(TransactionSpecification & transaction,const int & transactionSpecification );void __fastcall TransactionGridRowChanging( TADOQuery & query, const char * structureName );void __fastcall buildTransactionTemplates( TransactionTemplateCollection & templates, const AnsiString & project, const int & iteration );void __fastcall loadLegacyHeaderValues( TransactionTemplateCollection & templates, const AnsiString & project, const int & iteration );void __fastcall loadLegacyParameters( TransactionTemplateCollection & templates, const AnsiString & project, const int & iteration );void __fastcall applyTemplatesToScenario( ProgressBar & progressBar, const int & scenario );void __fastcall TMainForm::applyTemplatesToNewTransaction(const int & transaction,const TestScenarioTemplate * all );void __fastcall applyTemplatesToTransaction(ProgressBar & progressBar,const int & transaction,const TestScenarioTemplate * testScenario,const TestScenarioTemplate * all );const unsigned __fastcall countTransactionsInScenario( const int & scenario );const unsigned __fastcall countTransactionsInIteration( const char * project, const int & iteration );void __fastcall buildTransactionsForIteration(TransactionCache & transactionCache,ProgressBar & progressBar,const std::string & schema,const std::string & project,const int & iteration );void __fastcall buildTransactionsForScenario(TransactionCache & transactionCache,ProgressBar & progressBar,const int & scenario,const std::string & schema,const int & iteration );void __fastcall buildExecutionSchedule(Iteration & iteration,const std::string & testcaseId );void __fastcall buildExecutionSchedule( TestScenario & testScenario );void __fastcall buildExecutionSchedule( TransactionSpecification & transactionSpecification );const bool __fastcall findSchema( std::string & handle,const AnsiString & projectCode,const int & iteration );void __fastcall loadLegacyVariables(DefinedVariableTable & variables,const AnsiString & project,Iteration & iteration );const bool __fastcall openSecurityFactory( const char * library = "SecurityWrapper.dll" );void __fastcall closeSecurityFactory();void __fastcall readSequences( SequenceCollection & sequences, const std::string & project, const int & iteration );void __fastcall writeSequences( const SequenceCollection & sequences, const std::string & project, const int & iteration );void __fastcall importTransaction( const int & testScenarioNumber, const AnsiString & profile, const AnsiString & file );void __fastcall generateTransaction( std::vector< int > & scenarios );public: // User declarations__fastcall TMainForm(TComponent* Owner);__fastcall virtual ~TMainForm();static const char * g_headerStructure;static const int g_messagePanel;};//---------------------------------------------------------------------------extern PACKAGE TMainForm *MainForm;//---------------------------------------------------------------------------#endif