Also fix some other issues discovered while testing.
---
EOAccess/EOAttribute.m | 2 +-
EOAccess/EOModel.m | 5 ++++-
Examples/GNUmakefile | 2 +-
Examples/Trading/GNUmakefile | 9 ++++-----
Examples/connection.m | 3 +++
Examples/eoexample.m | 29 +++++++++++++++++++++++++++--
Examples/library.eomodel | 2 +-
Tools/eoutil.m | 15 ++++++++++++---
8 files changed, 53 insertions(+), 14 deletions(-)
diff --git a/EOAccess/EOAttribute.m b/EOAccess/EOAttribute.m
index 61c5cc5..7403595 100644
--- a/EOAccess/EOAttribute.m
+++ b/EOAccess/EOAttribute.m
@@ -657,7 +657,7 @@ static NSArray* staticPrototypeKeys=nil;
else if ([self isFlattened])
return [[_definitionArray realAttribute] externalType];
else
- return nil;
+ return [_prototype externalType];
}
/**
diff --git a/EOAccess/EOModel.m b/EOAccess/EOModel.m
index ad634c0..49fb95e 100644
--- a/EOAccess/EOModel.m
+++ b/EOAccess/EOModel.m
@@ -1703,7 +1703,10 @@ NSString *EOEntityLoadedNotification =
@"EOEntityLoadedNotification";
[self _verifyBuiltEntityObject: entity
named: name];
- [entity _loadEntity];
+ if ([entity isKindOfClass: GDL2_EOEntityClass])
+ {
+ [entity _loadEntity];
+ }
}
}
diff --git a/Examples/GNUmakefile b/Examples/GNUmakefile
index 71f1fd8..34b42c3 100644
--- a/Examples/GNUmakefile
+++ b/Examples/GNUmakefile
@@ -1,6 +1,6 @@
include ../common.make
include $(GNUSTEP_MAKEFILES)/common.make
-include $(GNUSTEP_MAKEFILES)/Auxiliary/gdl2.make
+-include $(GNUSTEP_MAKEFILES)/Auxiliary/gdl2.make
SUBPROJECTS = Trading
diff --git a/Examples/Trading/GNUmakefile b/Examples/Trading/GNUmakefile
index faa96d5..d0aaf9f 100644
--- a/Examples/Trading/GNUmakefile
+++ b/Examples/Trading/GNUmakefile
@@ -3,7 +3,7 @@ include $(GNUSTEP_MAKEFILES)/common.make
include ../../Version
include ../../common.make
-NATIVE_LIBRARY_NAME=Trading
+FRAMEWORK_NAME=Trading
TOOL_NAME=createTradingDB
Trading_RESOURCE_FILES=Trading.eomodeld
@@ -17,10 +17,9 @@ createTradingDB_NATIVE_LIBS+= Trading
ADDITIONAL_INCLUDE_DIRS+=-I../..
-ADDITIONAL_NATIVE_LIBS+=EOAccess EOControl
-ADDITIONAL_NATIVE_LIB_DIRS+=../../EOAccess ../../EOControl
+LIBRARIES_DEPEND_UPON+=-lEOAccess -lEOControl
-ADDITIONAL_NATIVE_LIB_DIRS+= .
+ADDITIONAL_LIB_DIRS+= -LTrading.framework
-include $(GNUSTEP_MAKEFILES)/native-library.make
+include $(GNUSTEP_MAKEFILES)/framework.make
include $(GNUSTEP_MAKEFILES)/tool.make
diff --git a/Examples/connection.m b/Examples/connection.m
index cde9aa8..b82b80d 100644
--- a/Examples/connection.m
+++ b/Examples/connection.m
@@ -11,17 +11,20 @@ main(int arcg, char *argv[], char **envp)
EOAdaptor *adaptor;
EOAdaptorContext *context;
EOAdaptorChannel *channel;
+ NSDictionary *dict = nil;
/* Tools don't have resources so we have to add the model manually. */
if (!model)
{
NSString *path = @"./library.eomodel";
model = [[EOModel alloc] initWithContentsOfFile: path];
+ dict = [model connectionDictionary];
[modelGroup addModel:model];
[model release];
}
adaptor = [EOAdaptor adaptorWithName:[model adaptorName]];
+ [adaptor setConnectionDictionary: dict];
context = [adaptor createAdaptorContext];
channel = [context createAdaptorChannel];
diff --git a/Examples/eoexample.m b/Examples/eoexample.m
index 83963a9..ad5b8c0 100644
--- a/Examples/eoexample.m
+++ b/Examples/eoexample.m
@@ -14,6 +14,8 @@ main(int arcg, char *argv[], char **envp)
EOEditingContext *ec;
EODatabaseDataSource *authorsDS;
NSArray *authors;
+ NSArray *tables;
+ NSArray *entities = nil;
id author;
model = [group modelNamed:@"library"];
@@ -24,19 +26,42 @@ main(int arcg, char *argv[], char **envp)
NSString *path = @"./library.eomodel";
model = [[EOModel alloc] initWithContentsOfFile: path];
[group addModel:model];
+ entities = [model entities];
[model release];
}
adaptor = [EOAdaptor adaptorWithModel:model];
context = [adaptor createAdaptorContext];
channel = [context createAdaptorChannel];
+
+ [channel openChannel];
+ tables = [channel describeTableNames];
+
+ /* Create the tables if they don't exist in the database. */
+ if (![tables count])
+ {
+ NSDictionary *optDict;
+ NSArray *stmts;
+ Class exprClass;
+ NSUInteger i;
+
+ optDict = [NSDictionary dictionaryWithObjectsAndKeys:
+ @"NO", @"EODropTablesKey",
+ @"NO", @"EODropPrimaryKeySupportKey", nil];
+ exprClass = [adaptor expressionClass];
+ stmts = [exprClass schemaCreationStatementsForEntities: entities
+ options: optDict];
+ for (i = 0; i < [stmts count]; i++)
+ {
+ [channel evaluateExpression: [stmts objectAtIndex: i]];
+ }
+ }
+
ec = [[EOEditingContext alloc] init];
authorsDS
= [[EODatabaseDataSource alloc] initWithEditingContext: ec
entityName:@"authors"];
- [channel openChannel];
-
/* Create a new author object */
author = [authorsDS createObject];
[author takeValue:@"Anonymous" forKey:@"name"];
diff --git a/Examples/library.eomodel b/Examples/library.eomodel
index 6ce97e5..74beded 100644
--- a/Examples/library.eomodel
+++ b/Examples/library.eomodel
@@ -2,7 +2,7 @@
EOModelVersion = 2;
adaptorName = SQLite3;
connectionDictionary = {
- databasePath = "/tmp/example.db";
+ databasePath = "example.db";
};
entities = (
{
diff --git a/Tools/eoutil.m b/Tools/eoutil.m
index 3528bb6..c5a1a04 100644
--- a/Tools/eoutil.m
+++ b/Tools/eoutil.m
@@ -862,11 +862,20 @@ dump(NSArray *arguments)
{
NSAutoreleasePool *arp = [[NSAutoreleasePool alloc] init];
EOEntity *anEntity = [[EOModelGroup
defaultGroup] entityNamed: anEntityName];
- NSEnumerator *aRowEnum = [[[dataDictionary
objectForKey: anEntityName] objectForKey: @"rows"] objectEnumerator];
+ NSEnumerator *aRowEnum = nil;
+ NSArray *attrNames = nil;
+ id obj = [dataDictionary objectForKey: anEntityName];
+
+ if ([obj isKindOfClass: [NSDictionary class]])
+ {
+ aRowEnum = [[obj objectForKey: @"rows"] objectEnumerator];
+ attrNames = [obj objectForKey: @"attributeNames"];
+ }
+
NSMutableDictionary *aDict = [NSMutableDictionary
dictionary];
- NSArray *aRow, *attrNames = [[dataDictionary
objectForKey: anEntityName] objectForKey: @"attributeNames"];
+ NSArray *aRow;
- while ((aRow = [aRowEnum nextObject]))
+ while (aRowEnum && (aRow = [aRowEnum nextObject]))
{
NSEnumerator *anAttributeEnum = [attrNames objectEnumerator];
NSEnumerator *aValueEnum = [aRow objectEnumerator];
--
2.55.0