/* 
   EORelationship+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/EORelationship.h>
#include <eoaccess/EOEntity.h>
#include <Foundation/NSAutoreleasePool.h>
#include "NSArray+GSDoc.h"
#include "NSDictionary+GSDoc.h"
#include "EORelationship+GSDoc.h"

/*
    NSString*	definition;
    struct {
	BOOL	isFlattened:1;
	BOOL	isToMany:1;
	BOOL	createsMutableObjects:1;
    } flags;
*/

@implementation EORelationship (GSDoc)

-(NSString*)gsdocContent
{
  return [self gsdocContentWithTagName:@"EORelationship"];
};

-(NSString*)gsdocContentWithTagName:(NSString*)tagName
{
  NSAutoreleasePool* arp=[NSAutoreleasePool new];
  NSString* content=[NSString string];
  NSLog(@"Start: %@: %@",[self class],[self name]);
  if ([tagName isEqual:@"EOAttributeRef"])
	{
	  content=[content stringByAppendingFormat:@"<EOAttributeRef name=\"%@\"/>\n",
					   [self name]];
	}
  else
	{
	  content=[content stringByAppendingFormat:@"<%@ name=\"%@\" entityName=\"%@\" destinationEntityName=\"%@\">\n",
					   tagName,
					   name,
					   [entity name],
					   [destinationEntity name]];
	  if ([self isFlattened])
		{
		  int count=[componentRelationships count];
		  int i=0;
		  for(i=0;i<count;i++)
			{
			  id component=[componentRelationships objectAtIndex:i];
			  content=[content stringByAppendingFormat:@"<EORelationshipComponent definition=\"%@\">\n",
							   [component name]];
			};
		  for(i=0;i<count;i++)
			content=[content stringByAppendingString:@"</EORelationshipComponent>\n"];
		}
	  else if (joins)
		content=[content stringByAppendingString:[joins gsdocContentWithTagName:nil]];
	  if ([userDictionary count])
		content=[content stringByAppendingString:[userDictionary gsdocContentWithTagName:@"EOUserDictionary"]];
	  
	  if ([self docComment])
		content=[content stringByAppendingFormat:@"<desc>%@</desc>\n",[self docComment]];
	  content=[content stringByAppendingFormat:@"</%@>\n",
					   tagName];
	};
  NSLog(@"Stop: %@: %@",[self class],[self name]);
  RETAIN(content);
  DESTROY(arp);
  return AUTORELEASE(content);
};
@end

