Guest User

Untitled

a guest
Jul 16th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.79 KB | None | 0 0
  1. ///
  2. /// Fields relating to pritem and pritemversion tables.
  3. ///
  4. struct CPrItemFields
  5. {
  6. protected:
  7. prwstring m_strRegions; // use accessors to access this data.
  8.  
  9. public:
  10. long m_lItemId;
  11. bool m_bArchiveFlag;
  12. short m_nVersion;
  13. bool m_bVersionFlag;
  14. PR_TIMESTAMP_STRUCT m_tsArchiveDate;
  15. long m_lCharCount;
  16. prwstring m_strComments;
  17. bool m_bContentFlag;
  18. PR_TIMESTAMP_STRUCT m_tsDeadline;
  19. bool m_bDeleteFlag;
  20. long m_lDocId;
  21. prwstring m_strEdition;
  22. long m_lElementId;
  23. prwstring m_strElementName;
  24. prwstring m_strExtension;
  25. long m_lFetchedBy;
  26. PR_TIMESTAMP_STRUCT m_tsFetchedTime;
  27. prwstring m_strHnJDepth;
  28. short m_nImageColours;
  29. prwstring m_strImageDimensions;
  30. prwstring m_strItemName;
  31. short m_nItemStatus;
  32. long m_lItemType;
  33. prwstring m_strKeywords;
  34. PR_TIMESTAMP_STRUCT m_tsLastUpdate;
  35. long m_lLastUpdateBy;
  36. long m_lLineCount;
  37. long m_lLockedBy;
  38. prwstring m_strLockedLocation;
  39. bool m_bLockedOffline;
  40. long m_lOriginalAuthor;
  41. prwstring m_strOriginalName;
  42. short m_nPageNumber;
  43. long m_lParentEdition;
  44. bool m_bPlaced;
  45. prwstring m_strPub;
  46. PR_TIMESTAMP_STRUCT m_tsPubDate;
  47. long m_lPubInfoId;
  48. long m_lQueueId;
  49. short m_nScriptFlags;
  50. prwstring m_strSection;
  51. long m_lStatusId;
  52. long m_lStoryId;
  53. PR_TIMESTAMP_STRUCT m_tsTimeCreated;
  54. PR_TIMESTAMP_STRUCT m_tsTimeLocked;
  55. long m_lWordCount;
  56. prwstring m_strZone;
  57.  
  58. // Region list accessors:
  59.  
  60. // The most common access to m_strRegions will be to get at the 'dynamic' regions.
  61. prwstring GetRegions() const
  62. {
  63. return GetDynamicRegions();
  64. }
  65.  
  66. prwstring GetRawRegions() const
  67. {
  68. return m_strRegions;
  69. }
  70.  
  71. prwstring GetDynamicRegions() const
  72. {
  73. prwstring strRegions = GetNonStaticRegions();
  74.  
  75. if ( strRegions.empty() )
  76. strRegions = GetStaticRegions();
  77.  
  78. return strRegions;
  79. }
  80.  
  81. prwstring GetNonStaticRegions() const
  82. {
  83. VectorWideStrings vRegions;
  84. stringtok( vRegions, m_strRegions, L"," );
  85.  
  86. prwstring strRegions;
  87. bool bAddComma = false;
  88.  
  89. for ( VectorWideStrings::iterator posRegionId = vRegions.begin(); posRegionId != vRegions.end(); ++posRegionId )
  90. {
  91. // skip 'subtracted' entries - these are marked by decimal point characters
  92. if ( posRegionId->rfind( L"." ) == prwstring::npos )
  93. {
  94. if ( bAddComma )
  95. strRegions += L",";
  96.  
  97. strRegions += *posRegionId;
  98. bAddComma = true;
  99. }
  100. }
  101. return strRegions;
  102. }
  103.  
  104. prwstring GetStaticRegions() const
  105. {
  106. prwstring strRegions = m_strRegions;
  107. return replacestring( strRegions, L".", L"" );
  108. }
  109.  
  110.  
  111. void SetRawRegions( const prwstring& strRegions )
  112. {
  113. m_strRegions = strRegions;
  114. }
  115.  
  116. void ClearRegions( void )
  117. {
  118. m_strRegions.clear();
  119. }
  120.  
  121.  
  122. CPrItemFields( long lItemId = PRNULL_NUMBER, long lStoryId = PRNULL_NUMBER )
  123. {
  124. Clear();
  125. m_lItemId = lItemId;
  126. m_lStoryId = lStoryId;
  127. }
  128.  
  129. bool operator < ( const CPrItemFields& prItem ) const
  130. {
  131. if ( m_lStoryId < prItem.m_lStoryId )
  132. return true;
  133. if ( m_lStoryId > prItem.m_lStoryId )
  134. return false;
  135. if ( m_lItemId < prItem.m_lItemId )
  136. return true;
  137. if ( m_lItemId > prItem.m_lItemId )
  138. return false;
  139. return ( m_bVersionFlag && prItem.m_bVersionFlag ) ? ( m_nVersion < prItem.m_nVersion ) : ( !m_bVersionFlag && prItem.m_bVersionFlag );
  140. }
  141.  
  142. bool operator == ( const CPrItemFields& prItem ) const
  143. {
  144. if ( m_lStoryId != prItem.m_lStoryId )
  145. return false;
  146. if ( m_lItemId != prItem.m_lItemId )
  147. return false;
  148. return ( m_bVersionFlag && prItem.m_bVersionFlag ) ? ( m_nVersion == prItem.m_nVersion ) : ( m_bVersionFlag == prItem.m_bVersionFlag );
  149. }
  150.  
  151. void Clear()
  152. {
  153. m_lItemId = PRNULL_NUMBER;
  154. m_bArchiveFlag = false;
  155. m_nVersion = PRNULL_NUMBER;
  156. m_bVersionFlag = false;
  157. m_tsArchiveDate.Clear();
  158. m_lCharCount = PRNULL_NUMBER;
  159. m_strComments.clear();
  160. m_bContentFlag = false;
  161. m_tsDeadline.Clear();
  162. m_bDeleteFlag = false;
  163. m_lDocId = PRNULL_NUMBER;
  164. m_strEdition.clear();
  165. m_lElementId = PRNULL_NUMBER;
  166. m_strElementName.clear();
  167. m_strExtension.clear();
  168. m_lFetchedBy = PRNULL_NUMBER;
  169. m_tsFetchedTime.Clear();
  170. m_strHnJDepth.clear();
  171. m_nImageColours = PRNULL_NUMBER;
  172. m_strImageDimensions.clear();
  173. m_strItemName.clear();
  174. m_nItemStatus = PRNULL_NUMBER;
  175. m_lItemType = PRNULL_NUMBER;
  176. m_strKeywords.clear();
  177. m_tsLastUpdate.Clear();
  178. m_lLastUpdateBy = PRNULL_NUMBER;
  179. m_lLineCount = PRNULL_NUMBER;
  180. m_lLockedBy = PRNULL_NUMBER;
  181. m_strLockedLocation.clear();
  182. m_bLockedOffline = false;
  183. m_lOriginalAuthor = PRNULL_NUMBER;
  184. m_strOriginalName.clear();
  185. m_nPageNumber = PRNULL_NUMBER;
  186. m_lParentEdition = PRNULL_NUMBER;
  187. m_bPlaced = false;
  188. m_strPub.clear();
  189. m_tsPubDate.Clear();
  190. m_lPubInfoId = PRNULL_NUMBER;
  191. m_lQueueId = PRNULL_NUMBER;
  192. m_strRegions.clear();
  193. m_nScriptFlags = false;
  194. m_strSection.clear();
  195. m_lStatusId = PRNULL_NUMBER;
  196. m_lStoryId = PRNULL_NUMBER;
  197. m_tsTimeCreated.Clear();
  198. m_tsTimeLocked.Clear();
  199. m_lWordCount = PRNULL_NUMBER;
  200. m_strZone.clear();
  201. }
  202.  
  203. template < class TStream >
  204. void Serialise( TStream& prByteStream ) const
  205. {
  206. prByteStream << m_lItemId;
  207. prByteStream << m_bArchiveFlag;
  208. prByteStream << m_nVersion;
  209. prByteStream << m_bVersionFlag;
  210. prByteStream << m_tsArchiveDate;
  211. prByteStream << m_lCharCount;
  212. prByteStream << m_strComments;
  213. prByteStream << m_bContentFlag;
  214. prByteStream << m_tsDeadline;
  215. prByteStream << m_bDeleteFlag;
  216. prByteStream << m_lDocId;
  217. prByteStream << m_strEdition;
  218. prByteStream << m_lElementId;
  219. prByteStream << m_strElementName;
  220. prByteStream << m_strExtension;
  221. prByteStream << m_lFetchedBy;
  222. prByteStream << m_tsFetchedTime;
  223. prByteStream << m_strHnJDepth;
  224. prByteStream << m_nImageColours;
  225. prByteStream << m_strImageDimensions;
  226. prByteStream << m_strItemName;
  227. prByteStream << m_nItemStatus;
  228. prByteStream << m_lItemType;
  229. prByteStream << m_strKeywords;
  230. prByteStream << m_tsLastUpdate;
  231. prByteStream << m_lLastUpdateBy;
  232. prByteStream << m_lLineCount;
  233. prByteStream << m_lLockedBy;
  234. prByteStream << m_strLockedLocation;
  235. prByteStream << m_bLockedOffline;
  236. prByteStream << m_lOriginalAuthor;
  237. prByteStream << m_strOriginalName;
  238. prByteStream << m_nPageNumber;
  239. prByteStream << m_lParentEdition;
  240. prByteStream << m_bPlaced;
  241. prByteStream << m_strPub;
  242. prByteStream << m_tsPubDate;
  243. prByteStream << m_lPubInfoId;
  244. prByteStream << m_lQueueId;
  245. prByteStream << m_strRegions;
  246. prByteStream << m_nScriptFlags;
  247. prByteStream << m_strSection;
  248. prByteStream << m_lStatusId;
  249. prByteStream << m_lStoryId;
  250. prByteStream << m_tsTimeCreated;
  251. prByteStream << m_tsTimeLocked;
  252. prByteStream << m_lWordCount;
  253. prByteStream << m_strZone;
  254. }
  255.  
  256. template < class TStream >
  257. void Deserialise( TStream& prByteStream )
  258. {
  259. prByteStream >> m_lItemId;
  260. prByteStream >> m_bArchiveFlag;
  261. prByteStream >> m_nVersion;
  262. prByteStream >> m_bVersionFlag;
  263. prByteStream >> m_tsArchiveDate;
  264. prByteStream >> m_lCharCount;
  265. prByteStream >> m_strComments;
  266. prByteStream >> m_bContentFlag;
  267. prByteStream >> m_tsDeadline;
  268. prByteStream >> m_bDeleteFlag;
  269. prByteStream >> m_lDocId;
  270. prByteStream >> m_strEdition;
  271. prByteStream >> m_lElementId;
  272. prByteStream >> m_strElementName;
  273. prByteStream >> m_strExtension;
  274. prByteStream >> m_lFetchedBy;
  275. prByteStream >> m_tsFetchedTime;
  276. prByteStream >> m_strHnJDepth;
  277. prByteStream >> m_nImageColours;
  278. prByteStream >> m_strImageDimensions;
  279. prByteStream >> m_strItemName;
  280. prByteStream >> m_nItemStatus;
  281. prByteStream >> m_lItemType;
  282. prByteStream >> m_strKeywords;
  283. prByteStream >> m_tsLastUpdate;
  284. prByteStream >> m_lLastUpdateBy;
  285. prByteStream >> m_lLineCount;
  286. prByteStream >> m_lLockedBy;
  287. prByteStream >> m_strLockedLocation;
  288. prByteStream >> m_bLockedOffline;
  289. prByteStream >> m_lOriginalAuthor;
  290. prByteStream >> m_strOriginalName;
  291. prByteStream >> m_nPageNumber;
  292. prByteStream >> m_lParentEdition;
  293. prByteStream >> m_bPlaced;
  294. prByteStream >> m_strPub;
  295. prByteStream >> m_tsPubDate;
  296. prByteStream >> m_lPubInfoId;
  297. prByteStream >> m_lQueueId;
  298. prByteStream >> m_strRegions;
  299. prByteStream >> m_nScriptFlags;
  300. prByteStream >> m_strSection;
  301. prByteStream >> m_lStatusId;
  302. prByteStream >> m_lStoryId;
  303. prByteStream >> m_tsTimeCreated;
  304. prByteStream >> m_tsTimeLocked;
  305. prByteStream >> m_lWordCount;
  306. prByteStream >> m_strZone;
  307. }
  308. };
  309.  
  310. ///
  311. /// STL Collection typedefs
  312. ///
  313. typedef std::vector < CPrItemFields, CPrStandardAllocator < CPrItemFields > > VectorItemFields;
  314. typedef std::set < CPrItemFields, std::less < CPrItemFields >, CPrStandardAllocator < CPrItemFields > > SetItemFields;
  315. typedef std::deque < CPrItemFields, CPrStandardAllocator < CPrItemFields > > DequeItemFields;
  316.  
  317. ///
  318. /// Used for passing item data details (memory or file based).
  319. ///
  320. struct CPrItemDataFields
  321. {
  322. long m_lDataId;
  323. short m_nDataType;
  324. long m_lDataNo;
  325. prwstring m_strDataRef;
  326. CPrBinaryValue m_binItemData;
  327. prwstring m_strItemPath;
  328.  
  329. CPrItemDataFields( short nDataType = PRNULL_NUMBER, long lDataNo = PRNULL_NUMBER )
  330. {
  331. Clear();
  332. m_nDataType = nDataType;
  333. m_lDataNo = lDataNo;
  334. }
  335.  
  336. void Clear()
  337. {
  338. m_lDataId = PRNULL_NUMBER;
  339. m_nDataType = PRNULL_NUMBER;
  340. m_lDataNo = PRNULL_NUMBER;
  341. m_strDataRef.clear();
  342. m_binItemData.Clear();
  343. m_strItemPath.clear();
  344. }
  345.  
  346. template < class TStream >
  347. void Serialise( TStream& prByteStream ) const
  348. {
  349. prByteStream << m_lDataId;
  350. prByteStream << m_nDataType;
  351. prByteStream << m_lDataNo;
  352. prByteStream << m_strDataRef;
  353. prByteStream << m_strItemPath;
  354. prByteStream << m_binItemData;
  355. }
  356.  
  357. template < class TStream >
  358. void Deserialise( TStream& prByteStream )
  359. {
  360. prByteStream >> m_lDataId;
  361. prByteStream >> m_nDataType;
  362. prByteStream >> m_lDataNo;
  363. prByteStream >> m_strDataRef;
  364. prByteStream >> m_strItemPath;
  365. prByteStream >> m_binItemData;
  366. }
  367. };
Add Comment
Please, Sign In to add comment