diff options
Diffstat (limited to 'trunk/TableStatus.m')
-rw-r--r-- | trunk/TableStatus.m | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/trunk/TableStatus.m b/trunk/TableStatus.m new file mode 100644 index 00000000..5bfd5513 --- /dev/null +++ b/trunk/TableStatus.m @@ -0,0 +1,113 @@ +#import "TableStatus.h" + +@implementation TableStatus + +- (void)awakeFromNib +{ + // TODO: implement awake code. +} + +- (void)setConnection:(CMMCPConnection *)theConnection +{ + mySQLConnection = theConnection; + [mySQLConnection retain]; +} + +- (NSString*)getSQLColumnValue:(NSString *)withName usingFields:(NSDictionary*)fields withLabel:(NSString*)label +{ + NSString* value = [fields objectForKey:withName]; + if([value isKindOfClass:[NSNull class]]) + { + value = @"--"; + } + + NSString* labelVal = [NSString stringWithFormat:@"%@: %@",label,value]; + + return labelVal; +} + +- (void)loadTable:(NSString *)aTable +{ + // Store the table name away for future use... + selectedTable = aTable; + + // Notify any listeners that a query is about to begin... + [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryWillBePerformed" object:self]; + + // no table selected + if([aTable isEqualToString:@""] || !aTable) { + [tableName setStringValue:@"Name: --"]; + [tableType setStringValue:@"Type: --"]; + [tableCreatedAt setStringValue:@"Created At: --"]; + [tableUpdatedAt setStringValue:@"Updated At: --"]; + + // Assign the row values... + [rowsNumber setStringValue:@"Number Of: --"]; + [rowsFormat setStringValue:@"Format: --"]; + [rowsAvgLength setStringValue:@"Avg. Length: --"]; + [rowsAutoIncrement setStringValue:@"Auto Increment: --"]; + + // Assign the size values... + [sizeData setStringValue:@"Data: --"]; + [sizeMaxData setStringValue:@"Max Data: --"]; + [sizeIndex setStringValue:@"Index: --"]; + [sizeFree setStringValue:@"Free: --"]; + + // Finally, set the value of the comments box + [commentsBox setStringValue:@"--"]; + + // Tell everyone we've finished with our query... + [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:self]; + return; + } + + // Run the query to retrieve the status of the selected table. We'll then use this information to populate + // the associated view's controls. + tableStatusResult = [mySQLConnection queryString:[NSString stringWithFormat:@"SHOW TABLE STATUS LIKE '%@'", selectedTable]]; + + statusFields = [tableStatusResult fetchRowAsDictionary]; + + // Assign the table values... + [tableName setStringValue:[NSString stringWithFormat:@"Name: %@",selectedTable]]; + if ( [statusFields objectForKey:@"Type"] ) { + [tableType setStringValue:[self getSQLColumnValue:@"Type" usingFields:statusFields withLabel:@"Type"]]; + } else { + // mysql > 4.1 + [tableType setStringValue:[self getSQLColumnValue:@"Engine" usingFields:statusFields withLabel:@"Type"]]; + } + [tableCreatedAt setStringValue:[self getSQLColumnValue:@"Create_time" usingFields:statusFields withLabel:@"Created At"]]; + [tableUpdatedAt setStringValue:[self getSQLColumnValue:@"Update_time" usingFields:statusFields withLabel:@"Updated At"]]; + + // Assign the row values... + [rowsNumber setStringValue:[self getSQLColumnValue:@"Rows" usingFields:statusFields withLabel:@"Number Of"]]; + [rowsFormat setStringValue:[self getSQLColumnValue:@"Row_format" usingFields:statusFields withLabel:@"Format"]]; + [rowsAvgLength setStringValue:[self getSQLColumnValue:@"Avg_row_length" usingFields:statusFields withLabel:@"Avg. Length"]]; + [rowsAutoIncrement setStringValue:[self getSQLColumnValue:@"Auto_increment" usingFields:statusFields withLabel:@"Auto Increment"]]; + + // Assign the size values... + [sizeData setStringValue:[self getSQLColumnValue:@"Data_length" usingFields:statusFields withLabel:@"Data"]]; + [sizeMaxData setStringValue:[self getSQLColumnValue:@"Max_data_length" usingFields:statusFields withLabel:@"Max Data"]]; + [sizeIndex setStringValue:[self getSQLColumnValue:@"Index_length" usingFields:statusFields withLabel:@"Index"]]; + [sizeFree setStringValue:[self getSQLColumnValue:@"Data_free" usingFields:statusFields withLabel:@"Free"]]; + + // Finally, assign the comments... + [commentsBox setStringValue:[statusFields objectForKey:@"Comment"]]; + + // Tell everyone we've finished with our query... + [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:self]; + + return; +} + +- (IBAction)reloadTable:(id)sender +{ + [self loadTable:selectedTable]; +} + +- (id)init +{ + self = [super init]; + + return self; +} +@end |