Monotone-Parent: 24ba5bd537bf1999f7443bca34f07358c1ea42d9

Monotone-Revision: 94d50c27be1b236681a2089a0eecac7c67e93f40

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-12-07T20:34:29
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2007-12-07 20:34:29 +00:00
parent 19720a645f
commit 60ae2b07af
6 changed files with 56 additions and 26 deletions

View File

@ -1,3 +1,9 @@
2007-12-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* 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 <ludovic@inverse.ca> 2007-12-07 Ludovic Marcotte <ludovic@inverse.ca>
* UI/MailPartViewers/UIxMailRenderingContext.m * UI/MailPartViewers/UIxMailRenderingContext.m

View File

@ -151,38 +151,62 @@ static BOOL debugObjectAllocation = NO;
[super dealloc]; [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 - (void) _checkTableWithCM: (GCSChannelManager *) cm
tableURL: (NSString *) url tableURL: (NSString *) url
andType: (NSString *) tableType andType: (NSString *) tableType
{ {
NSString *tableName, *descFile, *tableFile, *fileSuffix; NSString *tableName, *fileSuffix, *tableScript;
EOAdaptorChannel *tc; EOAdaptorChannel *tc;
NGBundleManager *bm;
NSBundle *bundle;
unsigned int length;
NSURL *channelURL; NSURL *channelURL;
bm = [NGBundleManager defaultBundleManager];
channelURL = [NSURL URLWithString: url]; channelURL = [NSURL URLWithString: url];
fileSuffix = [channelURL scheme]; fileSuffix = [channelURL scheme];
tc = [cm acquireOpenChannelForURL: channelURL]; tc = [cm acquireOpenChannelForURL: channelURL];
tableName = [url lastPathComponent]; tableName = [url lastPathComponent];
if ([tc evaluateExpressionX: if ([tc evaluateExpressionX:
[NSString stringWithFormat: @"SELECT count(*) FROM %@", tableName]]) [NSString stringWithFormat: @"SELECT count(*) FROM %@",
tableName]])
{ {
bundle = [bm bundleWithName: @"MainUI" type: @"SOGo"]; tableScript = [self _sqlScriptForTable: tableName
length = [tableType length] - 3; withType: tableType
tableFile = [tableType substringToIndex: length]; andFileSuffix: fileSuffix];
descFile if (![tc evaluateExpressionX: tableScript])
= [bundle pathForResource: [NSString stringWithFormat: @"%@-%@",
tableFile, fileSuffix]
ofType: @"sql"];
if (!descFile)
descFile = [bundle pathForResource: tableFile ofType: @"sql"];
if (![tc evaluateExpressionX:
[NSString stringWithContentsOfFile: descFile]])
[self logWithFormat: @"table '%@' successfully created!", tableName]; [self logWithFormat: @"table '%@' successfully created!", tableName];
} }
else else

View File

@ -2,7 +2,7 @@
-- (C) 2007 Inverse groupe conseil -- (C) 2007 Inverse groupe conseil
-- --
CREATE TABLE SOGo_user_profile ( CREATE TABLE @{tableName} (
c_uid VARCHAR(255) NOT NULL PRIMARY KEY, c_uid VARCHAR(255) NOT NULL PRIMARY KEY,
c_defaults CLOB, c_defaults CLOB,
c_settings CLOB c_settings CLOB

View File

@ -3,7 +3,7 @@
-- (C) 2006-2007 Inverse groupe conseil -- (C) 2006-2007 Inverse groupe conseil
-- --
CREATE TABLE SOGo_user_profile ( CREATE TABLE @{tableName} (
c_uid VARCHAR(255) NOT NULL PRIMARY KEY, c_uid VARCHAR(255) NOT NULL PRIMARY KEY,
c_defaults TEXT, c_defaults TEXT,
c_settings TEXT c_settings TEXT

View File

@ -2,7 +2,7 @@
-- (C) 2007 Inverse groupe conseil -- (C) 2007 Inverse groupe conseil
-- --
CREATE TABLE SOGo_folder_info ( CREATE TABLE @{tableName} (
c_folder_id INTEGER PRIMARY KEY, c_folder_id INTEGER PRIMARY KEY,
c_path VARCHAR(255) NOT NULL, -- the full path to the folder c_path VARCHAR(255) NOT NULL, -- the full path to the folder
c_path1 VARCHAR(255) NOT NULL, -- parts (for fast queries) 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 ... c_folder_type VARCHAR(255) NOT NULL -- the folder type ...
); );
CREATE SEQUENCE SOGo_folder_info_seq; CREATE SEQUENCE @{tableName}_seq;
CREATE OR REPLACE TRIGGER SOGo_folder_info_autonumber CREATE OR REPLACE TRIGGER @{tableName}_autonumber
BEFORE INSERT ON SOGo_folder_info FOR EACH ROW BEFORE INSERT ON @{tableName} FOR EACH ROW
BEGIN BEGIN
IF :new.c_folder_id IS NULL THEN 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 IF;
END; END;
/ /

View File

@ -3,7 +3,7 @@
-- (C) 2006-2007 Inverse groupe conseil -- (C) 2006-2007 Inverse groupe conseil
-- --
CREATE TABLE SOGo_folder_info ( CREATE TABLE @{tableName} (
c_folder_id SERIAL, c_folder_id SERIAL,
c_path VARCHAR(255) NOT NULL, -- the full path to the folder c_path VARCHAR(255) NOT NULL, -- the full path to the folder
c_path1 VARCHAR(255) NOT NULL, -- parts (for fast queries) c_path1 VARCHAR(255) NOT NULL, -- parts (for fast queries)