aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/TableStatus.m
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TableStatus.m')
-rw-r--r--trunk/TableStatus.m113
1 files changed, 113 insertions, 0 deletions
diff --git a/trunk/TableStatus.m b/trunk/TableStatus.m
new file mode 100644
index 00000000..f2ad1244
--- /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