diff --git a/ChangeLog b/ChangeLog index 9612e1bbb..9d9c6ca6f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-12-07 Wolfgang Sourdeau + + * Main/SOGo.m ([SOGo -run]): the table creation script now have a + @{tableName} substitution variable to be substitued with the real + table name obtained from the configuration variables. + 2007-12-07 Ludovic Marcotte * UI/MailPartViewers/UIxMailRenderingContext.m diff --git a/Main/SOGo.m b/Main/SOGo.m index 6bdb86e32..ac530d561 100644 --- a/Main/SOGo.m +++ b/Main/SOGo.m @@ -151,38 +151,62 @@ static BOOL debugObjectAllocation = NO; [super dealloc]; } +- (NSString *) _sqlScriptFromTableFile: (NSString *) fileName + withTableName: (NSString *) tableName +{ + NSString *script; + + + return script; +} + +- (NSString *) _sqlScriptForTable: (NSString *) tableName + withType: (NSString *) tableType + andFileSuffix: (NSString *) fileSuffix +{ + NSString *tableFile, *descFile; + NGBundleManager *bm; + NSBundle *bundle; + unsigned int length; + + bm = [NGBundleManager defaultBundleManager]; + + bundle = [bm bundleWithName: @"MainUI" type: @"SOGo"]; + length = [tableType length] - 3; + tableFile = [tableType substringToIndex: length]; + descFile + = [bundle pathForResource: [NSString stringWithFormat: @"%@-%@", + tableFile, fileSuffix] + ofType: @"sql"]; + if (!descFile) + descFile = [bundle pathForResource: tableFile ofType: @"sql"]; + + return [[NSString stringWithContentsOfFile: descFile] + stringByReplacingString: @"@{tableName}" + withString: tableName]; +} + - (void) _checkTableWithCM: (GCSChannelManager *) cm tableURL: (NSString *) url andType: (NSString *) tableType { - NSString *tableName, *descFile, *tableFile, *fileSuffix; + NSString *tableName, *fileSuffix, *tableScript; EOAdaptorChannel *tc; - NGBundleManager *bm; - NSBundle *bundle; - unsigned int length; NSURL *channelURL; - bm = [NGBundleManager defaultBundleManager]; - channelURL = [NSURL URLWithString: url]; fileSuffix = [channelURL scheme]; tc = [cm acquireOpenChannelForURL: channelURL]; tableName = [url lastPathComponent]; if ([tc evaluateExpressionX: - [NSString stringWithFormat: @"SELECT count(*) FROM %@", tableName]]) + [NSString stringWithFormat: @"SELECT count(*) FROM %@", + tableName]]) { - bundle = [bm bundleWithName: @"MainUI" type: @"SOGo"]; - length = [tableType length] - 3; - tableFile = [tableType substringToIndex: length]; - descFile - = [bundle pathForResource: [NSString stringWithFormat: @"%@-%@", - tableFile, fileSuffix] - ofType: @"sql"]; - if (!descFile) - descFile = [bundle pathForResource: tableFile ofType: @"sql"]; - if (![tc evaluateExpressionX: - [NSString stringWithContentsOfFile: descFile]]) + tableScript = [self _sqlScriptForTable: tableName + withType: tableType + andFileSuffix: fileSuffix]; + if (![tc evaluateExpressionX: tableScript]) [self logWithFormat: @"table '%@' successfully created!", tableName]; } else diff --git a/UI/MainUI/AgenorProfile-oracle.sql b/UI/MainUI/AgenorProfile-oracle.sql index 240af39e3..c3371e55b 100644 --- a/UI/MainUI/AgenorProfile-oracle.sql +++ b/UI/MainUI/AgenorProfile-oracle.sql @@ -2,7 +2,7 @@ -- (C) 2007 Inverse groupe conseil -- -CREATE TABLE SOGo_user_profile ( +CREATE TABLE @{tableName} ( c_uid VARCHAR(255) NOT NULL PRIMARY KEY, c_defaults CLOB, c_settings CLOB diff --git a/UI/MainUI/AgenorProfile.sql b/UI/MainUI/AgenorProfile.sql index 1849425b8..f8f0adc8b 100644 --- a/UI/MainUI/AgenorProfile.sql +++ b/UI/MainUI/AgenorProfile.sql @@ -3,7 +3,7 @@ -- (C) 2006-2007 Inverse groupe conseil -- -CREATE TABLE SOGo_user_profile ( +CREATE TABLE @{tableName} ( c_uid VARCHAR(255) NOT NULL PRIMARY KEY, c_defaults TEXT, c_settings TEXT diff --git a/UI/MainUI/OCSFolderInfo-oracle.sql b/UI/MainUI/OCSFolderInfo-oracle.sql index c019e4860..3167282b3 100644 --- a/UI/MainUI/OCSFolderInfo-oracle.sql +++ b/UI/MainUI/OCSFolderInfo-oracle.sql @@ -2,7 +2,7 @@ -- (C) 2007 Inverse groupe conseil -- -CREATE TABLE SOGo_folder_info ( +CREATE TABLE @{tableName} ( c_folder_id INTEGER PRIMARY KEY, c_path VARCHAR(255) NOT NULL, -- the full path to the folder c_path1 VARCHAR(255) NOT NULL, -- parts (for fast queries) @@ -16,12 +16,12 @@ CREATE TABLE SOGo_folder_info ( c_folder_type VARCHAR(255) NOT NULL -- the folder type ... ); -CREATE SEQUENCE SOGo_folder_info_seq; -CREATE OR REPLACE TRIGGER SOGo_folder_info_autonumber -BEFORE INSERT ON SOGo_folder_info FOR EACH ROW +CREATE SEQUENCE @{tableName}_seq; +CREATE OR REPLACE TRIGGER @{tableName}_autonumber +BEFORE INSERT ON @{tableName} FOR EACH ROW BEGIN IF :new.c_folder_id IS NULL THEN - SELECT SOGO_folder_info_seq.nextval INTO :new.c_folder_id FROM DUAL; + SELECT @{tableName}_seq.nextval INTO :new.c_folder_id FROM DUAL; END IF; END; / diff --git a/UI/MainUI/OCSFolderInfo.sql b/UI/MainUI/OCSFolderInfo.sql index f9fcde209..548b71a10 100644 --- a/UI/MainUI/OCSFolderInfo.sql +++ b/UI/MainUI/OCSFolderInfo.sql @@ -3,7 +3,7 @@ -- (C) 2006-2007 Inverse groupe conseil -- -CREATE TABLE SOGo_folder_info ( +CREATE TABLE @{tableName} ( c_folder_id SERIAL, c_path VARCHAR(255) NOT NULL, -- the full path to the folder c_path1 VARCHAR(255) NOT NULL, -- parts (for fast queries)