Skip to content

Commit

Permalink
MD-234
Browse files Browse the repository at this point in the history
  • Loading branch information
rossetantoine committed May 21, 2013
1 parent 750cd01 commit 790eaa8
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 54 deletions.
14 changes: 3 additions & 11 deletions DCMTKStoreSCU.mm
Expand Up @@ -1619,17 +1619,9 @@ - (void)run:(NSOperation*) operation
[userInfo setObject:[NSNumber numberWithInt:_numberOfFiles] forKey:@"SendTotal"];
[userInfo setObject:[NSNumber numberWithInt:_numberSent] forKey:@"NumberSent"];
[userInfo setObject:[NSNumber numberWithInt:_numberErrors] forKey:@"ErrorCount"];
if (_numberSent + _numberErrors < _numberOfFiles)
{
[userInfo setObject:[NSNumber numberWithInt:NO] forKey:@"Sent"];
[userInfo setObject:@"In Progress" forKey:@"Message"];
}
else
{
[userInfo setObject:[NSNumber numberWithInt:YES] forKey:@"Sent"];
[userInfo setObject:@"Complete" forKey:@"Message"];
}

[userInfo setObject:[NSNumber numberWithInt:NO] forKey:@"Sent"];
[userInfo setObject:@"In Progress" forKey:@"Message"];

if( [operation isCancelled] || (operation == nil && [[NSThread currentThread] isCancelled]))
[userInfo setObject:@"Incomplete" forKey:@"Message"];

Expand Down
1 change: 0 additions & 1 deletion LogManager.h
Expand Up @@ -20,7 +20,6 @@
@interface LogManager : NSObject
{
NSMutableDictionary *_currentLogs;
NSTimeInterval lastSave;
}

+ (id) currentLogManager;
Expand Down
102 changes: 60 additions & 42 deletions LogManager.mm
Expand Up @@ -58,8 +58,7 @@ - (void) resetLogs
[o setValue: @"Incomplete" forKey:@"message"];
} @catch (NSException* e) {
N2LogException(e);
} @finally {
}
}
}

- (void) dealloc
Expand All @@ -72,44 +71,56 @@ - (BOOL) updateLogDatabase: (NSDictionary*) dict objectID: (NSManagedObjectID*)
{
BOOL complete = NO;

NSManagedObject *logEntry = nil;

if( objectID)
logEntry = [[[[BrowserController currentBrowser] database] independentContext] objectWithID: objectID];

if( logEntry)
{
[logEntry setValue:[dict valueForKey: @"logMessage"] forKey:@"message"];
[logEntry setValue:[NSNumber numberWithInt: [[dict valueForKey: @"logNumberTotal"] intValue]] forKey:@"numberImages"];
[logEntry setValue:[NSNumber numberWithInt: [[dict valueForKey: @"logNumberReceived"] intValue]] forKey:@"numberSent"];
[logEntry setValue:[NSNumber numberWithInt: [[dict valueForKey: @"logNumberError"] intValue]] forKey:@"numberError"];
@try {
NSManagedObject *logEntry = nil;

NSDate *logEndTime = [dict valueForKey: @"logEndTime"];
if( objectID)
logEntry = [[[[BrowserController currentBrowser] database] independentContext] objectWithID: objectID];

if( [[dict valueForKey: @"logMessage"] isEqualToString:@"Complete"] || [[dict valueForKey: @"logMessage"] isEqualToString:@"Incomplete"])
if( logEntry)
{
if( logEndTime == 0)
logEndTime = [NSDate date];
[logEntry setValue:[dict valueForKey: @"logMessage"] forKey:@"message"];
[logEntry setValue:[NSNumber numberWithInt: [[dict valueForKey: @"logNumberTotal"] intValue]] forKey:@"numberImages"];
[logEntry setValue:[NSNumber numberWithInt: [[dict valueForKey: @"logNumberReceived"] intValue]] forKey:@"numberSent"];
[logEntry setValue:[NSNumber numberWithInt: [[dict valueForKey: @"logNumberError"] intValue]] forKey:@"numberError"];

complete = YES;
}

if( logEndTime != 0)
[logEntry setValue: logEndTime forKey:@"endTime"];

@try
{
[logEntry.managedObjectContext save: nil];
}
@catch ( NSException *e)
{
N2LogException( e);
NSDate *logEndTime = [dict valueForKey: @"logEndTime"];

if( [[dict valueForKey: @"logMessage"] isEqualToString:@"Complete"] || [[dict valueForKey: @"logMessage"] isEqualToString:@"Incomplete"])
{
if( logEndTime == 0)
logEndTime = [NSDate date];

complete = YES;
}

if( logEndTime != 0)
[logEntry setValue: logEndTime forKey:@"endTime"];

@try
{
[logEntry.managedObjectContext save: nil];
}
@catch ( NSException *e)
{
N2LogException( e);
}
}
}
} @catch (NSException* e) {
N2LogException(e);
}

return complete;
}

- (void) removeFromCurrentLog: (NSString*) uid
{
@synchronized( self)
{
[_currentLogs removeObjectForKey: uid];
}
}

- (void) addLogLine: (NSDictionary*) dict
{
if( [[BrowserController currentBrowser] isNetworkLogsActive] && [[[BrowserController currentBrowser] database] isLocal])
Expand Down Expand Up @@ -140,24 +151,31 @@ - (void) addLogLine: (NSDictionary*) dict
N2LogException( e);
}

[_currentLogs setObject: [NSDictionary dictionaryWithObjectsAndKeys: logEntry.objectID, @"objectID", dict, @"dict", nil] forKey:uid];
[_currentLogs setObject: [NSDictionary dictionaryWithObjectsAndKeys: logEntry.objectID, @"objectID", dict, @"dict", [NSNumber numberWithDouble: [NSDate timeIntervalSinceReferenceDate]], @"lastSave", nil] forKey:uid];
}

if( [_currentLogs objectForKey:uid])
{
NSDictionary *previousDict = [_currentLogs objectForKey:uid];
[_currentLogs setObject: [NSDictionary dictionaryWithObjectsAndKeys: [previousDict objectForKey: @"objectID"] , @"objectID", dict, @"dict", nil] forKey: uid];
NSMutableDictionary *previousDict = [[[_currentLogs objectForKey:uid] mutableCopy] autorelease];

[previousDict setObject: dict forKey: @"dict"];

NSTimeInterval lastSave = [[previousDict objectForKey: @"lastSave"] doubleValue];
if( [NSDate timeIntervalSinceReferenceDate] - lastSave > 5 || [[dict valueForKey: @"logMessage"] isEqualToString:@"Complete"])
{
if( [self updateLogDatabase: [[_currentLogs objectForKey:uid] objectForKey: @"dict"] objectID: [[_currentLogs objectForKey:uid] objectForKey: @"objectID"]])
{
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector( removeFromCurrentLog:) object: uid];
[self performSelector: @selector( removeFromCurrentLog:) withObject: uid afterDelay: 5];
}

[previousDict setObject: [NSNumber numberWithDouble: [NSDate timeIntervalSinceReferenceDate]] forKey: @"lastSave"];
}

[_currentLogs setObject: previousDict forKey: uid];
}
else
NSLog( @"********** [_currentLogs objectForKey:uid] == nil");

if( [NSDate timeIntervalSinceReferenceDate] - lastSave > 10 || [[dict valueForKey: @"logMessage"] isEqualToString:@"Complete"])
{
if( [self updateLogDatabase: [[_currentLogs objectForKey:uid] objectForKey: @"dict"] objectID: [[_currentLogs objectForKey:uid] objectForKey: @"objectID"]])
[_currentLogs removeObjectForKey: uid];

lastSave = [NSDate timeIntervalSinceReferenceDate];
}
}
}
@catch ( NSException *e) {
Expand Down
2 changes: 2 additions & 0 deletions browserController.m
Expand Up @@ -1347,6 +1347,8 @@ -(void)setDatabase:(DicomDatabase*)db
{
@try
{
[[LogManager currentLogManager] resetLogs];

[self willChangeValueForKey:@"database"];

@synchronized( previewPixThumbnails)
Expand Down

0 comments on commit 790eaa8

Please sign in to comment.