2012-01-20 Wolfgang Sourdeau * GCSSpecialQueries.m (-createSessionsFolderWithName:): declare c_id as primary key to make sure it's indexed. 2011-12-08 Wolfgang Sourdeau * GCSFolder.m (-releaseChannel:): perform the debug logging BEFORE the channel is released, to avoid a crash. * GCSFolderManager.m (-releaseChannel:): perform the debug logging BEFORE the channel is released, to avoid a crash. 2011-11-14 Wolfgang Sourdeau * GCSFolder.m (_generateUpdateStatementForRow:adaptor:fields:tableName:whereColumn:isEqualTo:andColumn:isEqualTo:): same as below. (_attributeForColumn:): new helper method that automatically constructs an EOAttribute for a colum name passed as parameter. (_formatRowValue:withAdaptor:andAttribute:): now invokes -[EOAdaptor formatValue:forAttribute:] to avoid a call from the caller. 2011-10-21 Francis Lachapelle * GCSFolder.m (_generateUpdateStatementForRow:adaptor:fields:tableName:whereColumn:isEqualTo:andColumn:isEqualTo:): this method now uses the formatValue:forAttribute: method from the database adaptor to benefit from the proper formatting depending on the column type. (-initWithPath:primaryKey:folderTypeName:folderType:location:quickLocation:aclLocation:folderManager:): load the content field names from the GCSFolderType object. * GCSFolderType.m (-initWithPropertyList:): the content table structure is now part of the plist (.ocs) file. 2011-10-03 Francis Lachapelle * GCSFolder.m (-updateQuickFields:whereColumn:isEqualTo:): new method to update some fields of the quick table matching the single specified condition. (-_quickTableEntity): the method was not returning all the fields. 2011-05-30 Wolfgang Sourdeau * GCSFolder.m (-lastModificationDate): new method that returns the last modification date based on the higher value of the "c_lastmodified" column. 2010-12-30 Wolfgang Sourdeau * EOQualifier+GCS.m (_appendNotQualifier:toString:): new method for handling the EONotQualifier. 2010-12-10 Wolfgang Sourdeau * EOQualifier+GCS.m (_appendKeyValueQualifier:toString:): fixed evaluation to handle the "EOQualifierOperatorNotEqual" operator. Fixed code to consider "nil" values as another case for "NULL". 2010-08-19 Wolfgang Sourdeau * GCSSpecialQueries.m (-createEMailAlarmsFolderWithName:): new sql helper methods (emailAlarmsAttributeTypes:): new helper method that returns the types pertaining to the adaptor. * GCSFolderManager.m (-alarmsFolder): new helper method. * GCSAlarmsFolder.[hm]: new class module for handling alarm references. * GCSFolder.m (-_channelManager): made method private. (-folderManager): removed method. 2010-06-11 Wolfgang Sourdeau * GCSFolderManager.m (_reallyCreateFolderWithName:andFolderType:andType:andChannel:atPath:): we now make use of the new classes described below. * GCSSpecialQueries.m (-[EOAdaptorChannel specialQueries]): new category method that returns the proper GCSSpecialQueries instance based on the channel class. * GCSSpecialQueries.[hm]: new module providing the "GCSSpecialQueries" cluster class that implements SQL queries that are specific to each SQL implementation. 2010-04-20 Wolfgang Sourdeau * EOAdaptorChannel+GCS.m (-tableExistsWithName:): cleaned method up. 2009-11-30 Wolfgang Sourdeau * GCSChannelManager.m (-databaseKeyForURL): removed obsolete method, replaced with the new one below. (-acquireOpenChannelForURL:): we keep the last failure timestamp into account and prevent further attempts before 5 seconds. * NSURL+GCS.m (-gcsURLId): new method that returns a unique identifier for database connections. 2009-11-19 Wolfgang Sourdeau * GCSChannelManager.m (-releaseChannel:immediately:): new method that enables the immediate release of channels, for handling connection errors. 2009-10-13 Wolfgang Sourdeau * GCSFolder.m (_tableRequirementForFields:andOrQualifier:): fixed a double release of "allFields" occuring in the rare case where the amount of fields would be 0. 2009-09-10 Cyril Robert * GCSFolder.m (deleteAllContent): New method to delete everything in the folder (use with caution). 2009-08-14 Wolfgang Sourdeau * GCSFolder.m (-deleteAclWithSpecification:): enable the deletion of the complete list if a nil specification is passed as parameter, previously we would ignore such as call. 2009-06-03 Wolfgang Sourdeau * GCSFolderManager.m: replaced invocations of NSLog with debugWithFormat:. This avoids polluting the log with information that really pertains to debugging. 2009-06-02 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -recordsCountByExcludingDeleted:]): new method that returns the amount of records in a GCS folder. 2009-03-24 Wolfgang Sourdeau * GCSFolderType.m ([GCSFolderType +folderTypeWithName:_typeName]): autorelease the returned GCSFolderType. ([GCSFolderType -initWithFolderTypeName:_path]): removed useless method. 2009-03-20 Wolfgang Sourdeau * GCSChannelManager.m ([GCSChannelManager -acquireOpenChannelForURL:_url]): if the channel is not open, assign nil to it so that the calling method doesn't consider it as valid. This fixes a crash because the channel, already autoreleased, would be later released again by the caller (through releaseChannel:). ([GCSChannelManager -releaseChannel:_channel]): ensure the channel is closed if we need to release it. 2009-03-17 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -writeContent:_contenttoName:_namebaseVersion:_baseVersion]): reorganized method to centralize error management, enabling us to remove the "CHECKERROR" macro. The method was also not closing channels whenever an error occured. 2008-09-22 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -fetchFields:fieldsfetchSpecification:specignoreDeleted:ignoreDeleted]): made method public. 2008-08-09 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -writeContent:_contenttoName:_namebaseVersion:_baseVersion]): the store table has now a "c_version" field in its description entity. 2008-06-30 Wolfgang Sourdeau * GCSFolderManager.m ([GCSFolderManager -createFolderOfType:_typewithName:_nameatPath:_path]): wrap the creation queries in a transaction, to ensure the creation of tables is atomic. * GCSFolder.m ([GCSFolder -recordOfEntryWithName:name]) ([GCSFolder -writeContent:_contenttoName:_namebaseVersion:_baseVersion]) ([GCSFolder -fetchFields:fieldsfetchSpecification:spec]): don't use the "as" keyword when specifying multiple tables, so that Oracle doesn't choke on the queries. * EOAdaptorChannel+GCS.m ([EOAdaptorChannel -dropTables:tableNames]): new method that drops a list of tables. 2008-06-23 Wolfgang Sourdeau * GCSFolderManager.m ([GCSFolderManager -createFolderOfType:withName:atPath:]): escape the display names. 2008-06-13 Wolfgang Sourdeau * GCSFolder.m: modified the fetchFields* methods so that any field from the quick and/or content table will generate an appropriate query. If both tables are required, a joined query is generated. * GCSFolderType.m ([GCSFolderType -fields]): new method that returns the fields used by the quick tables. 2008-01-21 Wolfgang Sourdeau * GCSFolderManager.m ([GCSFolderManager -baseTableNameWithUID:_uid]): the id was too long for the quick tables, we reduce the length of the increment string to 3 characters instead of 8. 2008-01-16 Wolfgang Sourdeau * GCSFolderManager.m ([GCSFolderManager -baseTableNameWithUID:]): generate an id that is guaranteed to be unique in more than 1000000 cases (from unit testing). * GCSFolder.m: fetch the content, version and dates at the same time per record, to avoid multiple queries. 2007-12-12 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -creationDateOfEntryWithName:]): new method that returns the creation date of the specified entry. ([GCSFolder -lastModificationOfEntryWithName:]): same as above for the last modification time. 2007-11-27 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -versionOfContentWithName:], [GCSFolder -fetchContentWithName:]): ignore records marked as deleted. ([GCSFolder -deletionOfContentWithName:]): don't. 2007-11-04 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -writeContent:toName:baseVersion:]): the test for the improvement below was wrong, we want to test the value of the column ('0' or null) instead of whether it is null or filled. 2007-10-29 Wolfgang Sourdeau * GCSFolder.m ([GCSFolder -writeContent:toName:baseVersion:]): purge the record if previously marked as deleted. 2007-10-24 Wolfgang Sourdeau * GCSFolderManager.m ([GCSFolderManager -baseTableNameWithUID:]): prefix the table names with "sogo" to avoid problems with digits-only identifiers. 2007-10-19 Wolfgang Sourdeau * GCSFolderManager.m ([GCSFolderManager -baseTableNameWithUID:]): cast the time interval to an unsigned int. 2007-08-29 Wolfgang Sourdeau * EOQualifier+GCS.m: rewrote comparison code, now uses UPPER instead of the PostgreSQL specific ILIKE. Fixes OGo bug #1906 (v4.7.49) 2007-07-20 Helge Hess * GCSFolderManager.m: added 'some' rollback after an error (v4.7.48) 2007-07-20 Wolfgang Sourdeau * GCSFolderManager.m: fixed a bug in last check, DROP TABLE is allowed to fail in the given context (bug #1883) (v4.7.47) 2007-07-11 Helge Hess * GCSFolderManager.m: added some error checking, plenty of open ends pending (eg folder creation not wrapped in a transaction) (v4.7.46) 2007-06-29 Wolfgang Sourdeau * GCSFolderManager.m: fixed folder creation to populate empty path fields with NULLs (OGo bug #1883) (v4.7.45) 2007-04-25 Wolfgang Sourdeau * GCSFolder.[hm]: added methods to delete ACL records (OGo bug #1866) (v4.7.44) 2007-04-22 Helge Hess * GCSChannelManager.m: improved error log (v4.7.43) 2007-04-17 Helge Hess * fixed a few GNUstep compilation warnings (v4.7.42) 2007-03-21 Wolfgang Sourdeau * GCSFolder.[hm], GCSFolderManager.[hm]: added ability to create and delete GCS folders programmatically (OGo bug #1850) (v4.7.41) 2007-02-12 Helge Hess * GCSFolder.m: fixed a gnustep-base compilation warning (v4.7.40) 2007-02-09 Helge Hess * use -errorWithFormat:, fixed a few logging crashes (incomplete format strings) (v4.5.39) 2007-02-08 Wolfgang Sourdeau * GCSFolder.m: added a gnustep-base hack to properly format bool numbers for SQL. Base returns YES or NO in -stringValue while libFoundation/NGExt returns 0 or 1 (v4.5.39) 2007-01-15 Wolfgang Sourdeau * GCSFolder.[hm], GCSFolderManager.m: added support for content table ACLs (v4.5.38) 2006-08-31 Wolfgang Sourdeau * EOQualifier+GCS.m: added support for OR qualifiers and for case insensitive-like qualifiers on PostgreSQL (v4.5.37) 2006-07-04 Helge Hess * use %p for pointer formats, fixed gcc 4.1 warnings (v4.5.36) 2005-08-16 Helge Hess * GNUmakefile, GNUmakefile.preamble: added OSX framework compilation (v4.5.35) 2005-07-23 Sebastian Reitenbach * GNUmakefile.preamble: added OpenBSD linking flags (v4.5.34) 2005-07-13 Helge Hess * GCSFolder.h: added -versionOfContentWithName: method to header file (v4.5.33) * GCSFolder.m: return a proper exception if the extractor was unable to create a quickrow for a given content object (v4.5.32) * GCSFolder.m: added -writeContent:toName:baseVersion: to support consistent update operations (eg using etags), properly increase content object version on update operations (v4.5.31) * GCSFolderManager.m, GCSFolder.m: changed not to use EOF attribute-name 'beautification', eg 'c_name' will stay 'c_name' instead of being transformed into 'cName' (v4.5.30) 2005-07-11 Helge Hess * GCSFolderManager.m: added automatic discovery of folder types by scanning for .ocs files (v4.5.29) 2005-04-25 Helge Hess * fixed gcc 4.0 warnings (v4.5.28) 2005-03-21 Helge Hess * GNUmakefile: added FHS support (v4.5.27) 2005-03-20 Helge Hess * moved OGoContentStore as GDLContentStore into sope-gdl1, removed dependencies on NGiCal and removed some SOGo specific things (v4.5.26) 2005-03-07 Helge Hess * appointment.ocs: added missing 'partstates' field (v0.9.25) 2005-03-04 Helge Hess * v0.9.24 * ocs_gensql.m: started tool to create SQL CREATE from ocs model file * OCSFolderType.m: small change to the factory API, changed to use NGResourceLocator 2005-03-03 Helge Hess * OCSFolderManager.m: fixed a bug in subfolder listing (v0.9.23) 2005-03-01 Marcus Mueller * v0.9.22 * appointment.ocs: added 'cycleenddate' and 'cycleinfo' to address previous performance issues * OCSiCalFieldExtractor.m: set 'cycleenddate' and 'cycleinfo' for recurrent events. Reverted setting of 'enddate' to the previous behaviour since 'cycleenddate' is dedicated to the task now * iCalRepeatableEntityObject+OCS.[hm]: new category used by the OCSiCalFieldExtractor to extract cycleInfo in an appropriate format * sql/generate-folderinfo-sql-for-users.sh, sql/foldertablecreate-helge-privcal.psql, sql/foldertablecreate-helge-privcal.sqlite, sql/generate-folderinfo-sql-for-users-sqlite.sh: adjusted to new schema 2005-03-01 Helge Hess * OCSFolder.m: added support for storing content and quick info in the same table (untested) (v0.9.21) 2005-02-21 Helge Hess * v0.9.20 * OCSFolderManager.m: removed quoting of SQL table and column names (breaks with SQLite and isn't necessary for PG), fixed URL pooling for SQLite * NSURL+OCS.m: use tablename for last path component 2005-02-12 Marcus Mueller * OCSiCalFieldExtractor.m: uses new iCalEvent API to determine correct 'enddate' for recurrent events. This is an optimization which can save quite some time for complex rules. (v0.9.19) 2004-12-17 Marcus Mueller * v0.9.18 * OCSiCalFieldExtractor.m: extract participants' state * sql/generate-folderinfo-sql-for-user.sh, sql/appointment-create.psql, sql/foldertablecreate-helge-privcal.psql: updated with new schema. 2004-12-15 Marcus Mueller * OCSiCalFieldExtractor.m: partmails + cn's are concatenated by '\n' now - this directly eliminates any ambiguities. Also, instead of using 'email' for partmails and orgmail, the extractor uses the 'rfc822Email' value which strips away any preceeding 'mailto:' prefix, compacting the representation and speeding up comparison. Also, "iscycle", "isallday" and "isopaque" are now provided by NGiCal and thus always extracted (v0.9.17) 2004-12-13 Marcus Mueller * sql/generate-folderinfo-sql-for-user.sh: fixed critical error in Contacts folder_info, type was 'Appointment' but MUST be 'Contact' (v0.9.16) 2004-12-10 Marcus Mueller * sql: updated all generation scripts to the latest version (v0.9.15) 2004-12-09 Marcus Mueller * v0.9.14 * appointment.ocs: added "ispublic", "isopaque", "status" and "orgmail". * OCSiCalFieldExtractor.m: updated to extract new fields (see above) * sql: updated generate-folderinfo-sql-for-users.sh 2004-10-19 Helge Hess * OCSFolder.m: added new method -fetchContentsOfAllFiles method which fetches the contents of all files stored in the folder (required for iCal generation, such bulk fetches should be avoided if possible!) (v0.9.13) 2004-10-15 Marcus Mueller * OCSStringFormatter.[hm]: minor cleanup (v0.9.12) * v0.9.11 * OCSStringFormatter.[hm]: new class to format strings according to Database requirements (escaping etc.). * OCSFolder.m: uses new OCSStringFormatter now. 2004-09-25 Helge Hess * fixed compilation on MacOSX (v0.9.10) 2004-09-10 Helge Hess * v0.9.9 * fixed some gcc warnings * GNUmakefile.preamble: added pathes to compile against an FHS SOPE * OCSiCalFieldExtractor.m: fixed type of sequence iCalEvent field 2004-09-01 Marcus Mueller * GNUmakefile: install type models into $(GNUSTEP_USER_ROOT) (v0.9.8) 2004-08-27 Helge Hess * v0.9.7 * OCSChannelManager.m: use PostgreSQL as adaptor, not PostgreSQL72 * OCSFolder.m: added support for doing folder sorting in SQL 2004-08-26 Helge Hess * v0.9.6 * added OCSContactFieldExtractor * sql: added sample contact folder create scripts * OCSFolderType.m: read extractor class name from type model * OCSFolderManager.m: added contact type model per default (v0.9.5) 2004-08-25 Helge Hess * GNUmakefile: automatically install OCSTypeModels (v0.9.4) 2004-08-15 Helge Hess * OCSFolder.m: added content deletion (v0.9.3) * OCSFolder.m: added sanity check to store method (v0.9.2) 2004-08-14 Helge Hess * v0.9.1 * OCSiCalFieldExtractor.m: extract new quick fields: location, partmails, sequence (does not yet handle allday and cycle due to NGiCal restrictions) * appointment.ocs, sql/foldertablecreate-helge-privcal.psql, sql/testapt-agenor-helge-privcal.psql, sql/appointment-create.psql: added quick fields: isallday, iscycle, location, partmails, sequence * started ocs_recreatequick tool intended for recreating a quick table based on the content table of a folder 2004-07-20 Helge Hess * OCSChannelManager.m: fixed a bug in the channel GC which resulted in an exception during the GC NSTimer 2004-07-16 Helge Hess * improved error handling in various files 2004-07-02 Helge Hess * OCSChannelManager.m: added garbage collector for channel pools 2004-06-30 Helge Hess * OCSChannelManager.m: implemented pooling * OCSFolder.m: added quick fetches * GNUmakefile.preamble: fix link path * GNUmakefile (libOGoContentStore_HEADER_FILES_INSTALL_DIR): install headers in OGoContentStore * GNUmakefile.preamble (ocs_ls_TOOL_LIBS): added static dependencies for OSX 2004-06-30 Marcus Mueller * ocs_cat.m, ocs_ls.m, ocs_mkdir.m: fixed for gnustep compile. 2004-06-29 Helge Hess * created ChangeLog