GME  13
OCLGMECMFacade.h
Go to the documentation of this file.
00001 //###############################################################################################################################################
00002 //
00003 //      Object Constraint Language Generic Manager
00004 //      OCLGMECMFacade.h
00005 //
00006 //###############################################################################################################################################
00007 
00008 #ifndef OCLGMECMFacade_h
00009 #define OCLGMECMFacade_h
00010 
00011 #include "GMEConstraintEx.h"
00012 #include "OCLCommonEx.h"
00013 
00014 namespace OclGmeCM
00015 {
00016         struct FuncItem
00017         {
00018                 std::string     text;
00019                 int             serial;
00020         };
00021 
00022         typedef std::map<std::string, FuncItem> FuncDesc;
00023 
00024         struct EvaluationRecord
00025         {
00026                 OclMeta::Object                         spObject;
00027                 OclTree::ViolationVector        vecViolations;
00028                 OclGme::SpConstraint            spConstraint;
00029                 FuncDesc                                        calledFunctions;
00030         };
00031 
00032         struct EvaluationInfo
00033         {
00034                 bool    bEnabledSCLogical;
00035                 bool    bEnabledSCIterator;
00036                 bool    bEnabledTracking;
00037                 int             iViolationCount;
00038                 int             iModelDepth;
00039         };
00040 
00041         typedef std::vector< EvaluationRecord > EvaluationRecordVector;
00042 
00043         class ConstraintDefinitionFactory;
00044 
00045 //##############################################################################################################################################
00046 //
00047 //      C L A S S : OclGmeCM::Facade
00048 //
00049 //==============================================================================================================================================
00050 //
00051 //      D E S C R I P T I O N :
00052 //
00053 //##############################################################################################################################################
00054 
00055         class Facade
00056         {
00057                 private :
00058                         CComPtr<IMgaProject>                            m_spProject;
00059                         OclTree::TreeManager*                           m_pTreeManager;
00060 
00061                         OclGme::ConstraintFunctionVector        m_vecMetaConstraintFunctions;
00062                         OclGme::ConstraintFunctionVector        m_vecUserConstraintFunctions;
00063 
00064                         bool                                                                    m_bViolationDlgExpanded;
00065                         EvaluationInfo                                                  m_infoEvaluation;
00066 
00067                 public :
00068                         OclGme::ConstraintVector                                m_vecMetaConstraints;
00069                         OclGme::ConstraintVector                                m_vecUserConstraints;
00070 
00071                 public :
00072                         bool                                                                    m_bEnabled;
00073                         bool                                                                    m_bEnabledEvents;
00074                         bool                                                                    m_bEnabledInteractions;
00075 
00076                 public :
00077                                                                                                                 Facade();
00078                                                                                                                 ~Facade();
00079                                         void                                                            Initialize( CComPtr<IMgaProject> spProject );
00080                                         void                                                            Finalize();
00081 
00082                                         CComPtr<IMgaMetaProject>        GetMetaProject() const;
00083                                         CComPtr<IMgaProject>                    GetProject() const;
00084                                         OclTree::TreeManager*                   GetTreeManager() const;
00085 
00086                                         EvaluationInfo                                          GetEvaluationInfo() const;
00087                                         void                                                            SetEvaluationInfo( const EvaluationInfo& info );
00088 
00089                                         void                                                            LoadMetaConstraintFunctions( OclGme::ConstraintFunctionVector& vecFaileds );
00090                                         void                                                            LoadUserConstraintFunctions( OclGme::ConstraintFunctionVector& vecFaileds );
00091                                         void                                                            LoadMetaConstraints( OclGme::ConstraintVector& vecFaileds );
00092                                         void                                                            LoadUserConstraints( OclGme::ConstraintVector& vecFaileds );
00093 
00094                                         HRESULT                                                         EvaluateAll(IUnknown **punk);
00095                                         HRESULT                                                         Evaluate( CComPtr<IMgaObject> spObject, IUnknown **punk);
00096                                         HRESULT                                                         Evaluate( const OclCommonEx::ObjectVector& vecObjects, IUnknown **punk);
00097                                         HRESULT                                                         Evaluate( CComPtr<IMgaObject> spObject, unsigned long ulCurrentEventMask);
00098                                         HRESULT                                                         EvaluateConstraints( EvaluationRecordVector& vecInputs, bool bShowProgress, IUnknown **punk );
00099                 private :
00100                                         void                                                            updateLineno(EvaluationRecord &rec);
00101                                         bool                                                            getConstraintFunctionText(std::string &name, std::string &text);
00102                                         void                                                            addFunctionTexts(EvaluationRecord &rec);
00103                                         void                                                            LoadConstraintFunctions( OclGme::ConstraintFunctionVector& vecFounds, OclGme::ConstraintFunctionVector& vecFaileds, OclGme::ConstraintFunctionVector& vecSucceededs );
00104                                         std::string                                                     GetSignature( OclGme::SpConstraintFunction spCF );
00105                                         void                                                            LoadConstraints( OclGme::ConstraintVector& vecFounds, OclGme::ConstraintVector& vecFaileds, OclGme::ConstraintVector& vecSucceededs );
00106 
00107                                         void                                                            GetObjectConstraints( CComPtr<IMgaObject> spObject, EvaluationRecordVector& vecInputs, unsigned long ulCurrentEventMask );
00108                                         void                                                            SortByPriority( EvaluationRecordVector& vecInputs ) const;
00109                                         void                                                            CollectConstraints( CComPtr<IMgaObject> spObject, bool bRecursive, EvaluationRecordVector& vecInputs );
00110                                         void                                                            CollectConstraints( CComPtr<IMgaObject> spObject, EvaluationRecordVector& vecInputs );
00111                                         void                                                            CollectConstraints( CComPtr<IMgaObject> spObject, unsigned long ulCurrentEventMask, int iCheckedLevels, EvaluationRecordVector& vecInputs );
00112 
00113                 friend ConstraintDefinitionFactory;
00114         };
00115 
00116 }; // namespace OclGmeCM
00117 
00118 #endif // OCLGMECMFacade_h