/****************************************************************************
 *   Copyright (C) 2004 by Arboretum Systems, Inc.                          *
 *   Technical administrator: Alain Mazy, hav@mazy.be                       *
 *   Lead program designer: Georges Jaroslaw, gjaro@arboretum.com           *
 *                                                                          *
 *   HyperEngine-AV is a video, audio and text editor that can be used to   *
 *   record, import, edit, process and arrange together video, sound and    *
 *   text. These are all achieved in the program's free-form document       *
 *   window, with no limitations to the number of tracks.                   *
 *   The purpose of this program is to provide to users at all levels of    *
 *   expertise a readily accessible tool enabling them to create movies,    *
 *   slide shows or presentations.                                          *
 *                                                                          *
 *   HyperEngine-AV itself is free software. However, plug-ins that can be  *
 *   used as add-ons to HyperEngine-AV may or may not be free software, at  *
 *   the discretion of each plug-in developer and as specified by these     *
 *   plug-ins' respective licenses.                                         *
 *   You can redistribute HyperEngine-AV itself and/or modify it under the  *
 *   terms of the GNU General Public License as published by the Free       *
 *   Software Foundation; either version 2 of the License, or (at your      *
 *   option) any later version.                                             *
 *                                                                          *
 *   HyperEngine-AV is distributed in the hope that it will be useful, but  *
 *   WITHOUT ANY WARRANTY; without even the implied warranty of             *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
 *   GNU General Public License for all applicable details.                 *
 *                                                                          *
 *   You should have received a copy of the GNU General Public License      *
 *   along with this program; if not, write to:                             *
 *   Free Software Foundation, Inc.,                                        *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.              *
 ****************************************************************************/

#import "MITemporaryDirectory.h"

@implementation MITemporaryDirectory

+ (MITemporaryDirectory*)temporaryDirectory {
    return [[[self alloc] init] autorelease];
}

- (MITemporaryDirectory*)init {
    if (( self = [super init] )) {
        BOOL isDir = NO;
        NSString *slash = @"/";
        NSFileManager *manager = [NSFileManager defaultManager];
        NSString *path = NSTemporaryDirectory();

		if ( [slash characterAtIndex:0] != [path characterAtIndex:[path length]-1] ) {
			path = [path stringByAppendingString:slash];
		}

		if ( !( ( [manager fileExistsAtPath:path isDirectory:&isDir] ) && ( isDir ) ) ) {
			[self release];
			return nil;
		}

        path = [path stringByAppendingPathComponent:[NSString uniqueString]];
        if ( ![manager createDirectoryAtPath:path attributes:nil] ) {
            [self release];
            return nil;
        }

        fPath = [path retain];
    }
    return self;
}

- (void)dealloc {
    [[NSFileManager defaultManager] removeFileAtPath:fPath handler:nil];
    [fPath release];
    [super dealloc];
}

- (NSString*)path {
    return fPath;
}

- (BOOL)moveContentToPath:(NSString*)path {
    return [[NSFileManager defaultManager] movePath:fPath toPath:path handler:nil] ;
}

@end

@implementation NSString (MTGUniqueStringAddition)

+ (NSString*)uniqueString {
	CFUUIDRef uniqueID = CFUUIDCreate( kCFAllocatorDefault );
	NSString* string = (NSString*)CFUUIDCreateString( kCFAllocatorDefault, uniqueID );
	CFRelease( uniqueID );
	return [string autorelease];
}

@end
