/* 
   EOEntity+GSDoc.m

   Copyright (C) 2000 Free Software Foundation, Inc.

   Author: Manuel Guesdon <mguesdon@orange-concept.com>
   Date: August 2000

   This file is part of the GNUstep Database Library.

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with this library; see the file COPYING.LIB.
   If not, write to the Free Software Foundation,
   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

#include <eoaccess/common.h>
#include <eoaccess/EOEntity.h>
#include <Foundation/NSAutoreleasePool.h>
#include "NSArray+GSDoc.h"
#include "NSDictionary+GSDoc.h"
#include "EOModel+GSDoc.h"
#include "EOEntity+GSDoc.h"

/*
    NSString*		externalQuery;
    NSArray*		attributesNamesUsedForInsert;
    EOQualifier*	qualifier;
    GCArray*		attributesUsedForInsert;  // cache from classProperties
    GCArray*		attributesUsedForFetch;   // cache from classProperties
    GCArray*		relationsUsedForFetch;    // cache from classProperties
*/

@implementation EOEntity (GSDoc)
-(NSString*)gsdocContent
{
  NSAutoreleasePool* arp=[NSAutoreleasePool new];
  NSString* content=[NSString string];
  NSLog(@"Start: %@: %@",[self class],[self name]);
  content=[content stringByAppendingFormat:@"<EOEntity%@%@%@%@%@>\n",
				   ([self name] ? [NSString stringWithFormat:@" name=\"%@\"",[self name]] : @""),
				   ([self externalName] ? [NSString stringWithFormat:@" externalName=\"%@\"",[self externalName]] : @""),
				   ([self className] ? [NSString stringWithFormat:@" className=\"%@\"",[self className]] : @""),
				   ([[self model] name] ? [NSString stringWithFormat:@" modelName=\"%@\"",[[self model] name]] : @""),
				   ([self isReadOnly] ? @"isReadOnly=\"YES\"" : @"")];
  if (attributes)
	content=[content stringByAppendingString:[attributes gsdocContentWithTagName:nil]];

  if (attributesUsedForLocking)
	content=[content stringByAppendingString:[attributesUsedForLocking gsdocContentWithTagName:@"EOAttributesUsedForLocking"
																	   elementsTagName:@"EOAttributeRef"]];

  if (classProperties)
	content=[content stringByAppendingString:[classProperties gsdocContentWithTagName:@"EOClassProperties"
															  elementsTagName:@"EOAttributeRef"]];

  if (primaryKeyAttributes)
	content=[content stringByAppendingString:[primaryKeyAttributes gsdocContentWithTagName:@"EOPrimaryKeyAttributes"
																   elementsTagName:@"EOAttributeRef"]];

  if (relationships)
	content=[content stringByAppendingString:[relationships gsdocContentWithTagName:nil]];

  if ([userDictionary count])
	  content=[content stringByAppendingString:[userDictionary gsdocContentWithTagName:@"EOUserDictionary"]];
  
  if ([self docComment])
	content=[content stringByAppendingFormat:@"<desc>%@</desc>\n",[self docComment]];

  content=[content stringByAppendingString:@"</EOEntity>\n"];
  NSLog(@"Stop: %@: %@",[self class],[self name]);
  RETAIN(content);
  DESTROY(arp);
  return AUTORELEASE(content);
};
@end


