.// Copyright (c) 2007-2010 by Kavanagh Consultancy Limited. All rights reserved. .// .Assign tab = " " .// .Function objectDescription .Param inst_ref object .Param string indent .// Heading ${indent}<h3>\ .If (object.Number > 0) ${object.Number}. \ .End if $u{object.Name}\ .If (object.KeyLetters != "") (${object.KeyLetters})\ .End if </h3> .// ${indent}<table border="0"> ${indent}${tab}<tr> ${indent}${tab}${tab}<td width="40"></td> ${indent}${tab}${tab}<td> .// .// Object Summary ${indent}${tab}${tab}${tab}<table border="0"> ${indent}${tab}${tab}${tab}${tab}<tr> ${indent}${tab}${tab}${tab}${tab}${tab}<td width="40"></td> ${indent}${tab}${tab}${tab}${tab}${tab}<td valign="top"><nobr>${object.Name} (</nobr></td> .Select many attributes related by object->Attribute[R106] .For each attribute in attributes .If (first attributes) ${indent}${tab}${tab}${tab}${tab}${tab}<td><nobr>\ .Else , <wbr>\ .End if .Select one preferredIdentifier related by attribute->IdentifyingAttribute[R111]->Identifier[R111] where (selected.Preferred == true) .If (not_empty preferredIdentifier) <u>${attribute.Name}</u>\ .Else ${attribute.Name}\ .End if .If (last attributes) )</nobr></td> .End if .End for ${indent}${tab}${tab}${tab}${tab}</tr> ${indent}${tab}${tab}${tab}</table> .// .// Identifiers .Select many identifiers related by object->Identifier[R110] .For each identifier in identifiers .If (first identifiers) ${indent}${tab}${tab}${tab}<p><i>Identifiers:</i> ${indent}${tab}${tab}${tab}${tab}<table border="0"> .End if ${indent}${tab}${tab}${tab}${tab}${tab}<tr> ${indent}${tab}${tab}${tab}${tab}${tab}${tab}<td width="40"></td> .Select many identifyingAttributes related by identifier->IdentifyingAttribute[R111] .For each identifyingAttribute in identifyingAttributes .If (first identifyingAttributes) ${indent}${tab}${tab}${tab}${tab}${tab}${tab}<td><nobr>\ .Else <wbr>+ \ .End if ${identifyingAttribute->Attribute[R111].Name}\ .If (last identifyingAttributes) </nobr></td> .End if .End for ${indent}${tab}${tab}${tab}${tab}${tab}</tr> .If (last identifiers) ${indent}${tab}${tab}${tab}${tab}</table> ${indent}${tab}${tab}${tab}</p> .End if .End for .// .If (object.Description != "") ${indent}${tab}${tab}${tab}<p>${object.Description}</p> .End if .// .Select many attributes related by object->Attribute[R106] .For each attribute in attributes .Invoke attributeDescription (attribute, "${indent}${tab}${tab}${tab}") .End for ${indent}${tab}${tab}</td> ${indent}${tab}</tr> ${indent}</table> .End function .// .Function attributeDescription .Param inst_ref attribute .Param string indent .// Heading .Select one object related by attribute->Object[R106] .Assign attributeNumber = (attribute.Order + 1) ${indent}<h4>\ .If (object.Number > 0) ${object.Number}.${attributeNumber}. \ .End if ${object.Name}.${attribute.Name}</h4> .// .If (attribute.Description != "") ${indent}${tab}${tab}${tab}<p>${attribute.Description}</p> .End if .End function .// .Select many informationModels from instances of InformationModel .For each informationModel in informationModels .Select many subsystems related by informationModel->Subsystem[R136] .If ((cardinality subsystems) == 0) <html> ${tab}<head> ${tab}${tab}<title>Information Model Report for ${informationModel.Name}</title> ${tab}${tab}<meta name="generator" content="OOA Tool"> .//${tab}${tab}<meta name="keywords" content=""> ${tab}</head> ${tab}<body> ${tab}${tab}<h1 align="center">${informationModel.Name}</h1> ${tab}${tab}<h2 align="center">Part II: Objects and Attributes</h2> .Select many objects related by informationModel->Object[R105] .For each object in objects .Invoke objectDescription (object, "${tab}${tab}${tab}") .End for ${tab}${tab}<h2 align="center">Part III: Relationships</h2> ${tab}</body> </html> .Emit to file "$r{informationModel.Name}.html" .Else .For each subsystem in subsystems <html> ${tab}<head> ${tab}${tab}<title>Information Model Report for ${subsystem.Name}</title> ${tab}${tab}<meta name="generator" content="OOA Tool"> .//${tab}${tab}<meta name="keywords" content=""> ${tab}</head> ${tab}<body> ${tab}${tab}<h1 align="center">${subsystem.Name}</h1> ${tab}${tab}<h2 align="center">Part II: Objects and Attributes</h2> .Select many objects related by subsystem->Object[R137] .For each object in objects .Invoke objectDescription (object, "${tab}${tab}${tab}") .End for ${tab}${tab}<h2 align="center">Part III: Relationships</h2> ${tab}</body> </html> .Emit to file "$r{subsystem.Name}.html" .End for .End if .End for