Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef XProcProjectH
00033 #define XProcProjectH
00034
00035 #include <zeusbase/Processing/Interfaces/IXProcess.hpp>
00036 #include <zeusbase/Processing/Interfaces/IXProcProject.hpp>
00037 #include <zeusbase/System/XRootObject.h>
00038 #include <zeusbase/System/SingleLinkedList.hpp>
00039 #include <zeusbase/System/StringMap.hpp>
00040 #include <zeusbase/System/XObjectFactory.h>
00041
00042 BEGIN_NAMESPACE_Zeus
00043
00044 class IXProcTarget;
00045
00046
00049
00050 zeusbase_class TXProcProject : public TXRootObject, public IXProcProject
00051 {
00052 public:
00053 TXProcProject(IXMLNode& rNode, NAMESPACE_Zeus::IXMLDocument& rDocu);
00054
00055
00056 virtual Retval MQUALIFIER callTarget(const IString& rName,
00057 IVariableResolver& rResolver,
00058 IBatchContext& rContext,
00059 IXProcessMonitor& rMonitor,
00060 IXProcess::EProcessingMode eMode);
00061 virtual Retval MQUALIFIER getTarget(Int iIndex, IXProcTarget*& rpTarget) const;
00062 virtual Retval MQUALIFIER getTargetByName(const IString& rName, IXProcTarget*& rpTarget) const;
00063 virtual Int MQUALIFIER getTargetCount() const;
00064 virtual Retval MQUALIFIER processTarget(const IString& rName,
00065 IBatchContext& rContext,
00066 IXProcessMonitor& rMonitor);
00067 virtual Retval MQUALIFIER processTargetWithoutAbort(const IString& rName,
00068 IBatchContext& rContext,
00069 IXProcessMonitor& rMonitor);
00070 virtual Retval MQUALIFIER processDryRun(const IString& rName,
00071 IBatchContext& rContext,
00072 IXProcessMonitor& rMonitor);
00073
00074
00075 MEMORY_MANAGER_DECL
00076 protected:
00077 virtual ~TXProcProject();
00078 void releaseInstances();
00079
00080
00081 virtual void onChildAdded(IXObject& rChild);
00082 virtual void onChildDeleted(IXObject& rChild);
00083
00084 REG_ROOT_BEGIN(TXProcProject)
00085 REG_ROOT_ADD(TXProcProject, L"TXProcProject");
00086 REG_ROOT_END
00087
00088 private:
00090 TSingleLinkedList<IXProcTarget*> m_lstTargets;
00092 TStringMap<IXProcTarget*> m_mapLookup;
00093
00094 Retval processTarget_internal(const IString& rName,
00095 IBatchContext& rContext,
00096 IXProcessMonitor& rMonitor,
00097 IXProcess::EProcessingMode eMode);
00098 };
00099
00100
00101
00104
00105 inline Int MQUALIFIER TXProcProject::getTargetCount() const
00106 {
00107 return m_lstTargets.getCount();
00108 }
00109
00110
00113
00114 inline Retval MQUALIFIER TXProcProject::processTarget(const IString& rName,
00115 IBatchContext& rContext,
00116 IXProcessMonitor& rMonitor)
00117 {
00118 return processTarget_internal(rName, rContext, rMonitor, IXProcess::etRunWithAbort);
00119 }
00120
00121
00124
00125 inline Retval MQUALIFIER TXProcProject::processTargetWithoutAbort(const IString& rName,
00126 IBatchContext& rContext,
00127 IXProcessMonitor& rMonitor)
00128 {
00129 return processTarget_internal(rName, rContext, rMonitor, IXProcess::etRunWithoutAbort);
00130 }
00131
00132
00135
00136 inline Retval MQUALIFIER TXProcProject::processDryRun(const IString& rName,
00137 IBatchContext& rContext,
00138 IXProcessMonitor& rMonitor)
00139 {
00140 return processTarget_internal(rName, rContext, rMonitor, IXProcess::etDryRun);
00141 }
00142
00143 END_NAMESPACE_Zeus
00144
00145 #endif