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


Reply via email to