12012-01-20 Wolfgang Sourdeau <wsourdeau@inverse.ca> 2 3 * GCSSpecialQueries.m (-createSessionsFolderWithName:): declare 4 c_id as primary key to make sure it's indexed. 5 62011-12-08 Wolfgang Sourdeau <wsourdeau@inverse.ca> 7 8 * GCSFolder.m (-releaseChannel:): perform the debug logging BEFORE 9 the channel is released, to avoid a crash. 10 11 * GCSFolderManager.m (-releaseChannel:): perform the debug logging BEFORE 12 the channel is released, to avoid a crash. 13 142011-11-14 Wolfgang Sourdeau <wsourdeau@inverse.ca> 15 16 * GCSFolder.m 17 (_generateUpdateStatementForRow:adaptor:fields:tableName:whereColumn:isEqualTo:andColumn:isEqualTo:): 18 same as below. 19 (_attributeForColumn:): new helper method that automatically 20 constructs an EOAttribute for a colum name passed as parameter. 21 (_formatRowValue:withAdaptor:andAttribute:): now invokes 22 -[EOAdaptor formatValue:forAttribute:] to avoid a call from the caller. 23 242011-10-21 Francis Lachapelle <flachapelle@inverse.ca> 25 26 * GCSFolder.m 27 (_generateUpdateStatementForRow:adaptor:fields:tableName:whereColumn:isEqualTo:andColumn:isEqualTo:): 28 this method now uses the formatValue:forAttribute: method from the 29 database adaptor to benefit from the proper formatting depending 30 on the column type. 31 (-initWithPath:primaryKey:folderTypeName:folderType:location:quickLocation:aclLocation:folderManager:): 32 load the content field names from the GCSFolderType object. 33 34 * GCSFolderType.m (-initWithPropertyList:): the content table 35 structure is now part of the plist (.ocs) file. 36 372011-10-03 Francis Lachapelle <flachapelle@inverse.ca> 38 39 * GCSFolder.m (-updateQuickFields:whereColumn:isEqualTo:): new 40 method to update some fields of the quick table matching the 41 single specified condition. 42 (-_quickTableEntity): the method was not returning all the fields. 43 442011-05-30 Wolfgang Sourdeau <wsourdeau@inverse.ca> 45 46 * GCSFolder.m (-lastModificationDate): new method that returns the 47 last modification date based on the higher value of the 48 "c_lastmodified" column. 49 502010-12-30 Wolfgang Sourdeau <wsourdeau@inverse.ca> 51 52 * EOQualifier+GCS.m (_appendNotQualifier:toString:): new method 53 for handling the EONotQualifier. 54 552010-12-10 Wolfgang Sourdeau <wsourdeau@inverse.ca> 56 57 * EOQualifier+GCS.m (_appendKeyValueQualifier:toString:): fixed 58 evaluation to handle the "EOQualifierOperatorNotEqual" operator. 59 Fixed code to consider "nil" values as another case for "NULL". 60 612010-08-19 Wolfgang Sourdeau <wsourdeau@inverse.ca> 62 63 * GCSSpecialQueries.m (-createEMailAlarmsFolderWithName:): new sql 64 helper methods 65 (emailAlarmsAttributeTypes:): new helper method that returns the 66 types pertaining to the adaptor. 67 68 * GCSFolderManager.m (-alarmsFolder): new helper method. 69 70 * GCSAlarmsFolder.[hm]: new class module for handling alarm 71 references. 72 73 * GCSFolder.m (-_channelManager): made method private. 74 (-folderManager): removed method. 75 762010-06-11 Wolfgang Sourdeau <wsourdeau@inverse.ca> 77 78 * GCSFolderManager.m 79 (_reallyCreateFolderWithName:andFolderType:andType:andChannel:atPath:): 80 we now make use of the new classes described below. 81 82 * GCSSpecialQueries.m (-[EOAdaptorChannel specialQueries]): new 83 category method that returns the proper GCSSpecialQueries instance 84 based on the channel class. 85 86 * GCSSpecialQueries.[hm]: new module providing the 87 "GCSSpecialQueries" cluster class that implements 88 SQL queries that are specific to each SQL implementation. 89 902010-04-20 Wolfgang Sourdeau <wsourdeau@inverse.ca> 91 92 * EOAdaptorChannel+GCS.m (-tableExistsWithName:): cleaned method 93 up. 94 952009-11-30 Wolfgang Sourdeau <wsourdeau@inverse.ca> 96 97 * GCSChannelManager.m (-databaseKeyForURL): removed obsolete 98 method, replaced with the new one below. 99 (-acquireOpenChannelForURL:): we keep the last failure timestamp 100 into account and prevent further attempts before 5 seconds. 101 102 * NSURL+GCS.m (-gcsURLId): new method that returns a unique 103 identifier for database connections. 104 1052009-11-19 Wolfgang Sourdeau <wsourdeau@inverse.ca> 106 107 * GCSChannelManager.m (-releaseChannel:immediately:): new method 108 that enables the immediate release of channels, for handling 109 connection errors. 110 1112009-10-13 Wolfgang Sourdeau <wsourdeau@inverse.ca> 112 113 * GCSFolder.m (_tableRequirementForFields:andOrQualifier:): fixed 114 a double release of "allFields" occuring in the rare case where 115 the amount of fields would be 0. 116 1172009-09-10 Cyril Robert <crobert@inverse.ca> 118 119 * GCSFolder.m (deleteAllContent): New method to delete everything in the 120 folder (use with caution). 121 1222009-08-14 Wolfgang Sourdeau <wsourdeau@inverse.ca> 123 124 * GCSFolder.m (-deleteAclWithSpecification:): enable the deletion 125 of the complete list if a nil specification is passed as 126 parameter, previously we would ignore such as call. 127 1282009-06-03 Wolfgang Sourdeau <wsourdeau@inverse.ca> 129 130 * GCSFolderManager.m: replaced invocations of NSLog with 131 debugWithFormat:. This avoids polluting the log with information 132 that really pertains to debugging. 133 1342009-06-02 Wolfgang Sourdeau <wsourdeau@inverse.ca> 135 136 * GCSFolder.m ([GCSFolder -recordsCountByExcludingDeleted:]): new 137 method that returns the amount of records in a GCS folder. 138 1392009-03-24 Wolfgang Sourdeau <wsourdeau@inverse.ca> 140 141 * GCSFolderType.m ([GCSFolderType +folderTypeWithName:_typeName]): 142 autorelease the returned GCSFolderType. 143 ([GCSFolderType -initWithFolderTypeName:_path]): removed useless 144 method. 145 1462009-03-20 Wolfgang Sourdeau <wsourdeau@inverse.ca> 147 148 * GCSChannelManager.m ([GCSChannelManager 149 -acquireOpenChannelForURL:_url]): if the channel is not open, 150 assign nil to it so that the calling method doesn't consider it as 151 valid. This fixes a crash because the channel, already 152 autoreleased, would be later released again by the caller (through 153 releaseChannel:). 154 ([GCSChannelManager -releaseChannel:_channel]): ensure the channel 155 is closed if we need to release it. 156 1572009-03-17 Wolfgang Sourdeau <wsourdeau@inverse.ca> 158 159 * GCSFolder.m ([GCSFolder 160 -writeContent:_contenttoName:_namebaseVersion:_baseVersion]): 161 reorganized method to centralize error management, enabling us to 162 remove the "CHECKERROR" macro. The method was also not closing 163 channels whenever an error occured. 164 1652008-09-22 Wolfgang Sourdeau <wsourdeau@inverse.ca> 166 167 * GCSFolder.m ([GCSFolder 168 -fetchFields:fieldsfetchSpecification:specignoreDeleted:ignoreDeleted]): 169 made method public. 170 1712008-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca> 172 173 * GCSFolder.m ([GCSFolder 174 -writeContent:_contenttoName:_namebaseVersion:_baseVersion]): the 175 store table has now a "c_version" field in its description entity. 176 1772008-06-30 Wolfgang Sourdeau <wsourdeau@inverse.ca> 178 179 * GCSFolderManager.m ([GCSFolderManager 180 -createFolderOfType:_typewithName:_nameatPath:_path]): wrap the 181 creation queries in a transaction, to ensure the creation of 182 tables is atomic. 183 184 * GCSFolder.m ([GCSFolder -recordOfEntryWithName:name]) 185 ([GCSFolder -writeContent:_contenttoName:_namebaseVersion:_baseVersion]) 186 ([GCSFolder -fetchFields:fieldsfetchSpecification:spec]): don't 187 use the "as" keyword when specifying multiple tables, so that 188 Oracle doesn't choke on the queries. 189 190 * EOAdaptorChannel+GCS.m ([EOAdaptorChannel 191 -dropTables:tableNames]): new method that drops a list of tables. 192 1932008-06-23 Wolfgang Sourdeau <wsourdeau@inverse.ca> 194 195 * GCSFolderManager.m ([GCSFolderManager 196 -createFolderOfType:withName:atPath:]): escape the display names. 197 1982008-06-13 Wolfgang Sourdeau <wsourdeau@inverse.ca> 199 200 * GCSFolder.m: modified the fetchFields* methods so that any field 201 from the quick and/or content table will generate an appropriate 202 query. If both tables are required, a joined query is generated. 203 204 * GCSFolderType.m ([GCSFolderType -fields]): new method that 205 returns the fields used by the quick tables. 206 2072008-01-21 Wolfgang Sourdeau <wsourdeau@inverse.ca> 208 209 * GCSFolderManager.m ([GCSFolderManager 210 -baseTableNameWithUID:_uid]): the id was too long for the quick 211 tables, we reduce the length of the increment string to 3 212 characters instead of 8. 213 2142008-01-16 Wolfgang Sourdeau <wsourdeau@inverse.ca> 215 216 * GCSFolderManager.m ([GCSFolderManager -baseTableNameWithUID:]): 217 generate an id that is guaranteed to be unique in more than 218 1000000 cases (from unit testing). 219 220 * GCSFolder.m: fetch the content, version and dates at the same 221 time per record, to avoid multiple queries. 222 2232007-12-12 Wolfgang Sourdeau <wsourdeau@inverse.ca> 224 225 * GCSFolder.m ([GCSFolder -creationDateOfEntryWithName:]): new 226 method that returns the creation date of the specified entry. 227 ([GCSFolder -lastModificationOfEntryWithName:]): same as above for 228 the last modification time. 229 2302007-11-27 Wolfgang Sourdeau <wsourdeau@inverse.ca> 231 232 * GCSFolder.m ([GCSFolder -versionOfContentWithName:], [GCSFolder 233 -fetchContentWithName:]): ignore records marked as deleted. 234 ([GCSFolder -deletionOfContentWithName:]): don't. 235 2362007-11-04 Wolfgang Sourdeau <wsourdeau@inverse.ca> 237 238 * GCSFolder.m ([GCSFolder -writeContent:toName:baseVersion:]): the 239 test for the improvement below was wrong, we want to test the 240 value of the column ('0' or null) instead of whether it is null or 241 filled. 242 2432007-10-29 Wolfgang Sourdeau <wsourdeau@inverse.ca> 244 245 * GCSFolder.m ([GCSFolder -writeContent:toName:baseVersion:]): 246 purge the record if previously marked as deleted. 247 2482007-10-24 Wolfgang Sourdeau <wsourdeau@inverse.ca> 249 250 * GCSFolderManager.m ([GCSFolderManager -baseTableNameWithUID:]): 251 prefix the table names with "sogo" to avoid problems with 252 digits-only identifiers. 253 2542007-10-19 Wolfgang Sourdeau <wsourdeau@inverse.ca> 255 256 * GCSFolderManager.m ([GCSFolderManager -baseTableNameWithUID:]): 257 cast the time interval to an unsigned int. 258 2592007-08-29 Wolfgang Sourdeau <WSourdeau@Inverse.CA> 260 261 * EOQualifier+GCS.m: rewrote comparison code, now uses UPPER instead of 262 the PostgreSQL specific ILIKE. Fixes OGo bug #1906 (v4.7.49) 263 2642007-07-20 Helge Hess <helge.hess@opengroupware.org> 265 266 * GCSFolderManager.m: added 'some' rollback after an error (v4.7.48) 267 2682007-07-20 Wolfgang Sourdeau <WSourdeau@Inverse.CA> 269 270 * GCSFolderManager.m: fixed a bug in last check, DROP TABLE is allowed 271 to fail in the given context (bug #1883) (v4.7.47) 272 2732007-07-11 Helge Hess <helge.hess@opengroupware.org> 274 275 * GCSFolderManager.m: added some error checking, plenty of open ends 276 pending (eg folder creation not wrapped in a transaction) (v4.7.46) 277 2782007-06-29 Wolfgang Sourdeau <WSourdeau@Inverse.CA> 279 280 * GCSFolderManager.m: fixed folder creation to populate empty path 281 fields with NULLs (OGo bug #1883) (v4.7.45) 282 2832007-04-25 Wolfgang Sourdeau <WSourdeau@Inverse.CA> 284 285 * GCSFolder.[hm]: added methods to delete ACL records (OGo bug #1866) 286 (v4.7.44) 287 2882007-04-22 Helge Hess <helge.hess@opengroupware.org> 289 290 * GCSChannelManager.m: improved error log (v4.7.43) 291 2922007-04-17 Helge Hess <helge.hess@opengroupware.org> 293 294 * fixed a few GNUstep compilation warnings (v4.7.42) 295 2962007-03-21 Wolfgang Sourdeau <WSourdeau@Inverse.CA> 297 298 * GCSFolder.[hm], GCSFolderManager.[hm]: added ability to create and 299 delete GCS folders programmatically (OGo bug #1850) (v4.7.41) 300 3012007-02-12 Helge Hess <helge.hess@opengroupware.org> 302 303 * GCSFolder.m: fixed a gnustep-base compilation warning (v4.7.40) 304 3052007-02-09 Helge Hess <helge.hess@opengroupware.org> 306 307 * use -errorWithFormat:, fixed a few logging crashes (incomplete format 308 strings) (v4.5.39) 309 3102007-02-08 Wolfgang Sourdeau <WSourdeau@Inverse.CA> 311 312 * GCSFolder.m: added a gnustep-base hack to properly format bool 313 numbers for SQL. Base returns YES or NO in -stringValue while 314 libFoundation/NGExt returns 0 or 1 (v4.5.39) 315 3162007-01-15 Wolfgang Sourdeau <WSourdeau@Inverse.CA> 317 318 * GCSFolder.[hm], GCSFolderManager.m: added support for content table 319 ACLs (v4.5.38) 320 3212006-08-31 Wolfgang Sourdeau <WSourdeau@Inverse.CA> 322 323 * EOQualifier+GCS.m: added support for OR qualifiers and for case 324 insensitive-like qualifiers on PostgreSQL (v4.5.37) 325 3262006-07-04 Helge Hess <helge.hess@opengroupware.org> 327 328 * use %p for pointer formats, fixed gcc 4.1 warnings (v4.5.36) 329 3302005-08-16 Helge Hess <helge.hess@opengroupware.org> 331 332 * GNUmakefile, GNUmakefile.preamble: added OSX framework compilation 333 (v4.5.35) 334 3352005-07-23 Sebastian Reitenbach <reitenbach@rapideye.de> 336 337 * GNUmakefile.preamble: added OpenBSD linking flags (v4.5.34) 338 3392005-07-13 Helge Hess <helge.hess@opengroupware.org> 340 341 * GCSFolder.h: added -versionOfContentWithName: method to header file 342 (v4.5.33) 343 344 * GCSFolder.m: return a proper exception if the extractor was unable to 345 create a quickrow for a given content object (v4.5.32) 346 347 * GCSFolder.m: added -writeContent:toName:baseVersion: to support 348 consistent update operations (eg using etags), properly increase 349 content object version on update operations (v4.5.31) 350 351 * GCSFolderManager.m, GCSFolder.m: changed not to use EOF 352 attribute-name 'beautification', eg 'c_name' will stay 'c_name' 353 instead of being transformed into 'cName' (v4.5.30) 354 3552005-07-11 Helge Hess <helge.hess@opengroupware.org> 356 357 * GCSFolderManager.m: added automatic discovery of folder types by 358 scanning for .ocs files (v4.5.29) 359 3602005-04-25 Helge Hess <helge.hess@opengroupware.org> 361 362 * fixed gcc 4.0 warnings (v4.5.28) 363 3642005-03-21 Helge Hess <helge.hess@skyrix.com> 365 366 * GNUmakefile: added FHS support (v4.5.27) 367 3682005-03-20 Helge Hess <helge.hess@opengroupware.org> 369 370 * moved OGoContentStore as GDLContentStore into sope-gdl1, removed 371 dependencies on NGiCal and removed some SOGo specific things 372 (v4.5.26) 373 3742005-03-07 Helge Hess <helge.hess@opengroupware.org> 375 376 * appointment.ocs: added missing 'partstates' field (v0.9.25) 377 3782005-03-04 Helge Hess <helge.hess@opengroupware.org> 379 380 * v0.9.24 381 382 * ocs_gensql.m: started tool to create SQL CREATE from ocs model file 383 384 * OCSFolderType.m: small change to the factory API, changed to use 385 NGResourceLocator 386 3872005-03-03 Helge Hess <helge.hess@opengroupware.org> 388 389 * OCSFolderManager.m: fixed a bug in subfolder listing (v0.9.23) 390 3912005-03-01 Marcus Mueller <znek@mulle-kybernetik.com> 392 393 * v0.9.22 394 395 * appointment.ocs: added 'cycleenddate' and 'cycleinfo' to address 396 previous performance issues 397 398 * OCSiCalFieldExtractor.m: set 'cycleenddate' and 'cycleinfo' for 399 recurrent events. Reverted setting of 'enddate' to the previous 400 behaviour since 'cycleenddate' is dedicated to the task now 401 402 * iCalRepeatableEntityObject+OCS.[hm]: new category used by the 403 OCSiCalFieldExtractor to extract cycleInfo in an appropriate format 404 405 * sql/generate-folderinfo-sql-for-users.sh, 406 sql/foldertablecreate-helge-privcal.psql, 407 sql/foldertablecreate-helge-privcal.sqlite, 408 sql/generate-folderinfo-sql-for-users-sqlite.sh: adjusted to new 409 schema 410 4112005-03-01 Helge Hess <helge.hess@opengroupware.org> 412 413 * OCSFolder.m: added support for storing content and quick info in 414 the same table (untested) (v0.9.21) 415 4162005-02-21 Helge Hess <helge.hess@opengroupware.org> 417 418 * v0.9.20 419 420 * OCSFolderManager.m: removed quoting of SQL table and column names 421 (breaks with SQLite and isn't necessary for PG), fixed URL pooling 422 for SQLite 423 424 * NSURL+OCS.m: use tablename for last path component 425 4262005-02-12 Marcus Mueller <znek@mulle-kybernetik.com> 427 428 * OCSiCalFieldExtractor.m: uses new iCalEvent API to determine correct 429 'enddate' for recurrent events. This is an optimization which can 430 save quite some time for complex rules. (v0.9.19) 431 4322004-12-17 Marcus Mueller <znek@mulle-kybernetik.com> 433 434 * v0.9.18 435 436 * OCSiCalFieldExtractor.m: extract participants' state 437 438 * sql/generate-folderinfo-sql-for-user.sh, sql/appointment-create.psql, 439 sql/foldertablecreate-helge-privcal.psql: updated with new schema. 440 4412004-12-15 Marcus Mueller <znek@mulle-kybernetik.com> 442 443 * OCSiCalFieldExtractor.m: partmails + cn's are concatenated by '\n' 444 now - this directly eliminates any ambiguities. Also, instead of 445 using 'email' for partmails and orgmail, the extractor uses the 446 'rfc822Email' value which strips away any preceeding 'mailto:' 447 prefix, compacting the representation and speeding up comparison. 448 Also, "iscycle", "isallday" and "isopaque" are now provided by 449 NGiCal and thus always extracted (v0.9.17) 450 4512004-12-13 Marcus Mueller <znek@mulle-kybernetik.com> 452 453 * sql/generate-folderinfo-sql-for-user.sh: fixed critical error in 454 Contacts folder_info, type was 'Appointment' but MUST be 'Contact' 455 (v0.9.16) 456 4572004-12-10 Marcus Mueller <znek@mulle-kybernetik.com> 458 459 * sql: updated all generation scripts to the latest version (v0.9.15) 460 4612004-12-09 Marcus Mueller <znek@mulle-kybernetik.com> 462 463 * v0.9.14 464 465 * appointment.ocs: added "ispublic", "isopaque", "status" and 466 "orgmail". 467 468 * OCSiCalFieldExtractor.m: updated to extract new fields (see above) 469 470 * sql: updated generate-folderinfo-sql-for-users.sh 471 4722004-10-19 Helge Hess <helge.hess@opengroupware.org> 473 474 * OCSFolder.m: added new method -fetchContentsOfAllFiles method which 475 fetches the contents of all files stored in the folder (required for 476 iCal generation, such bulk fetches should be avoided if possible!) 477 (v0.9.13) 478 4792004-10-15 Marcus Mueller <znek@mulle-kybernetik.com> 480 481 * OCSStringFormatter.[hm]: minor cleanup (v0.9.12) 482 483 * v0.9.11 484 485 * OCSStringFormatter.[hm]: new class to format strings according to 486 Database requirements (escaping etc.). 487 488 * OCSFolder.m: uses new OCSStringFormatter now. 489 4902004-09-25 Helge Hess <helge.hess@opengroupware.org> 491 492 * fixed compilation on MacOSX (v0.9.10) 493 4942004-09-10 Helge Hess <helge.hess@skyrix.com> 495 496 * v0.9.9 497 498 * fixed some gcc warnings 499 500 * GNUmakefile.preamble: added pathes to compile against an FHS SOPE 501 502 * OCSiCalFieldExtractor.m: fixed type of sequence iCalEvent field 503 5042004-09-01 Marcus Mueller <znek@mulle-kybernetik.com> 505 506 * GNUmakefile: install type models into $(GNUSTEP_USER_ROOT) (v0.9.8) 507 5082004-08-27 Helge Hess <helge.hess@skyrix.com> 509 510 * v0.9.7 511 512 * OCSChannelManager.m: use PostgreSQL as adaptor, not PostgreSQL72 513 514 * OCSFolder.m: added support for doing folder sorting in SQL 515 5162004-08-26 Helge Hess <helge.hess@skyrix.com> 517 518 * v0.9.6 519 520 * added OCSContactFieldExtractor 521 522 * sql: added sample contact folder create scripts 523 524 * OCSFolderType.m: read extractor class name from type model 525 526 * OCSFolderManager.m: added contact type model per default (v0.9.5) 527 5282004-08-25 Helge Hess <helge.hess@skyrix.com> 529 530 * GNUmakefile: automatically install OCSTypeModels (v0.9.4) 531 5322004-08-15 Helge Hess <helge.hess@skyrix.com> 533 534 * OCSFolder.m: added content deletion (v0.9.3) 535 536 * OCSFolder.m: added sanity check to store method (v0.9.2) 537 5382004-08-14 Helge Hess <helge.hess@skyrix.com> 539 540 * v0.9.1 541 542 * OCSiCalFieldExtractor.m: extract new quick fields: location, 543 partmails, sequence (does not yet handle allday and cycle due to 544 NGiCal restrictions) 545 546 * appointment.ocs, sql/foldertablecreate-helge-privcal.psql, 547 sql/testapt-agenor-helge-privcal.psql, sql/appointment-create.psql: 548 added quick fields: isallday, iscycle, location, partmails, sequence 549 550 * started ocs_recreatequick tool intended for recreating a quick table 551 based on the content table of a folder 552 5532004-07-20 Helge Hess <helge.hess@opengroupware.org> 554 555 * OCSChannelManager.m: fixed a bug in the channel GC which resulted 556 in an exception during the GC NSTimer 557 5582004-07-16 Helge Hess <helge.hess@skyrix.com> 559 560 * improved error handling in various files 561 5622004-07-02 Helge Hess <helge.hess@opengroupware.org> 563 564 * OCSChannelManager.m: added garbage collector for channel pools 565 5662004-06-30 Helge Hess <helge.hess@opengroupware.org> 567 568 * OCSChannelManager.m: implemented pooling 569 570 * OCSFolder.m: added quick fetches 571 572 * GNUmakefile.preamble: fix link path 573 574 * GNUmakefile (libOGoContentStore_HEADER_FILES_INSTALL_DIR): install 575 headers in OGoContentStore 576 577 * GNUmakefile.preamble (ocs_ls_TOOL_LIBS): added static dependencies 578 for OSX 579 5802004-06-30 Marcus Mueller <znek@mulle-kybernetik.com> 581 582 * ocs_cat.m, ocs_ls.m, ocs_mkdir.m: fixed for gnustep compile. 583 5842004-06-29 Helge Hess <helge.hess@opengroupware.org> 585 586 * created ChangeLog 587 588