diff examples/iAudioDB/AppController.m @ 712:df850498486e

Fixed overwrite handling (shows error if unable to remove existing files).
author mas01mj
date Fri, 18 Jun 2010 14:31:58 +0000
parents 362bae792124
children e3087cf8ff14
line wrap: on
line diff
--- a/examples/iAudioDB/AppController.m	Fri Jun 18 14:06:03 2010 +0000
+++ b/examples/iAudioDB/AppController.m	Fri Jun 18 14:31:58 2010 +0000
@@ -104,14 +104,50 @@
 		
 		[self reset];
 		 
-		// Create new db, and set flags.
-		db = audiodb_create([[panel filename] cStringUsingEncoding:NSUTF8StringEncoding], datasize, numtracks, dim);
-		audiodb_l2norm(db);
-			 
+		
+		
 		// Store useful paths.
 		dbName = [[[panel URL] relativePath] retain];
 		dbFilename = [[panel filename] retain];
 		plistFilename = [[NSString stringWithFormat:@"%@.plist", [dbFilename stringByDeletingPathExtension]] retain];
+		
+		// Remove any existing files
+		NSFileManager *fileManager = [[NSFileManager alloc] init];
+		
+		BOOL overwriteError = NO;
+		
+		if([fileManager fileExistsAtPath:[panel filename]])
+		{
+			if(![fileManager removeItemAtPath:[panel filename] error:NULL])
+			{
+				overwriteError = YES;
+			}
+		}
+		
+		if(!overwriteError && [fileManager fileExistsAtPath:plistFilename])
+		{
+			if(![fileManager removeItemAtPath:plistFilename error:NULL])
+			{
+				overwriteError = YES;
+			}
+		}
+		[fileManager release];
+		
+		if(overwriteError)
+		{
+			NSAlert *alert = [[NSAlert alloc] init];
+			[alert addButtonWithTitle:@"OK"];
+			[alert setMessageText:@"Unable to create database."];
+			[alert setInformativeText:@"A database with this name already exists, and could not be overwritten."];
+			[alert setAlertStyle:NSWarningAlertStyle];
+			[alert runModal];
+			[alert release];
+			return;
+		}
+		
+		// Create new db, and set flags.
+		db = audiodb_create([[panel filename] cStringUsingEncoding:NSUTF8StringEncoding], datasize, numtracks, dim);
+		audiodb_l2norm(db);
 			
 		// Create the plist file (contains mapping from filename to key).
 		dbState = [[NSMutableDictionary alloc] init];