COAR  1.0
COAR - DMS system
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups
documentstr.h
Go to the documentation of this file.
1 //
2 // C++ Interface: documentstr
3 //
4 // Description: struktury dokumentu COARu tak ako budu ukladane do storage_DOCDATA a
5 // storage_DOCINFO
6 //
7 //
8 // Author: laco.domin <laco.domin@dominanz.sk>, (C) 2012
9 //
10 // Copyright: See COPYING file that comes with this distribution
11 //
12 //
13 
21 #ifndef DOCUMENTSTR_H
22 #define DOCUMENTSTR_H
23 #include "coartypes.h"
24 #include "coar.h"
25 
26 
29 #define DOCHDR_IDENT "DOCUMENT"
30 
33 #define DOC_STATE_HIDDEN 0x01
34 
35 
36 #define DOC_STATE_LOCKED 0x02
37 
38 
39 #define DOC_STATE_FINAL 0x04
40 
41 
42 #define DOC_STATE_WORKINGCOPY 0x08
43 
44 
45 #define DOC_STATE_DELETED 0x10
46 
47 
48 #define DOC_STATE_TOBEDELETEDREC 0x20
49 
50 
51 #define DOC_STATE_TOBEDELETED 0x40
52 
53 
54 #define DOC_STATE_SAVED 0x80
55 
58 #define DOC_STATE_TRACKVERSIONS 0x200000
59 
60 
61 #define DOC_STATE_MULTCHECKOUT 0x400000
62 
63 
64 #define DOC_STATE_TRACKCHANGES 0x800000
65 
66 
69 #define DOC_STATE_TAGINDEX 0x000100
70 
71 
72 #define DOC_STATE_NOINDEX 0x000200
73 
74 
75 #define DOC_STATE_MDINDEX 0x000400
76 
77 
78 #define DOC_STATE_RTINDEX 0x000800
79 
80 
81 #define DOC_STATE_DATAINDEX 0x001000
82 
83 
84 #define DOC_STATE_VERUDMINDEX 0x002000
85 
86 #define DOC_DATA_BASEDATA 0x01
87 #define DOC_DATA_TAGS 0x02
88 #define DOC_DATA_RTDATA 0x04
89 #define DOC_DATA_FILEDATA 0x08
90 #define DOC_DATA_METADATA 0x10
91 #define DOC_DATA_VUDATA 0x20
92 #define DOC_DATA_CHANGELOG 0x40
93 #define DOC_DATA_ALL 0x7F
94 
100 typedef struct
101 {
103  time_t time;
106 } checkoutent; //TODO packed?
107 
113 typedef struct
114 {
115 protected:
118  char ident[8];
119 
120  // identifikatory dokumentu
137  char userdocid[80];
150 
151 
152  // Stav dokumentu
156 
160 
161  // Casy
164  time_t created;
167  time_t updated;
170  time_t accessed;
173  time_t usertime;
176  time_t locktime;
177 
178  // Popisne data dokumentu
181  wchar_t docname_w[100];
184  wchar_t docdesc_w[256];
187  wchar_t md_w[512];
190  wchar_t tags_w[256];
191 
192 
193  // uzivatelia a pristupove prava k dokumentu
211  permission acl0_user[50];
214  permission acl0_group[20];
217  docid_t nesteddocs0[100];
218 
219 
220  // udaje o datach dokumentu
244  char mimeDocData[50];
247  char mimeRTData[50];
248 
249  // verzionovanie dokumentu
252  wchar_t versionComment[256];
255  char userVersionId[20];
268 
273  checkoutent checkoutentries[20];
274 
275  // atributy dynamickych dat dokumentu , dlzky su v Bytoch
284  size_t nestdocslen;
287  size_t mdlen;
290  size_t tagslen;
293  size_t changeloglen;
296  size_t elsignlen;
299  size_t totalLength;
300 
310 
315  bool dirtyTags;
316  unsigned long long changes;
317 
318  char reserved[500];
319 
320 private:
321  friend class aclobject;
322  friend class document;
323 
324 
325 } /*TODO __attribute__ ((packed))*/ document_static_header;
326 
327 
330 typedef struct DOC_FULL_HDR
331 {
332 
336 
337  // udaje ktorych dlzka je dynamicka
347  wiostream* md;
350  wiostream* tags;
353  iostream* log;
356  iostream* elsign;
357 
359  {
360  memset(&shdr, 0, sizeof(document_static_header));
361 
362  acl_user = NULL;
363  acl_group = NULL;
364  nesteddocs = NULL;
365  md = NULL;
366  tags = NULL;
367  log = NULL;
368  elsign = NULL;
369  }
370 
372  {
373  if(acl_group)
374  free(acl_group);
375 
376  if(acl_user)
377  free(acl_user);
378 
379  if(elsign)
380  delete elsign;
381 
382  if(log)
383  delete log;
384 
385  if(md)
386  delete md;
387 
388  if(nesteddocs)
389  free(nesteddocs);
390 
391  if(tags)
392  delete tags;
393  };
394 
395 } /*TODO __attribute__ ((packed))*/ document_full_header;
396 
397 
398 #endif