
(object Petal
    version    	47
    _written   	"Rose 8.0.0303.1400"
    charSet    	0)

(object Design "Logical View"
    is_unit    	TRUE
    is_loaded  	TRUE
    quid       	"4314C3EA02D4"
    defaults   	(object defaults
	rightMargin 	0.250000
	leftMargin 	0.250000
	topMargin  	0.250000
	bottomMargin 	0.500000
	pageOverlap 	0.250000
	clipIconLabels 	TRUE
	autoResize 	TRUE
	snapToGrid 	TRUE
	gridX      	13
	gridY      	13
	defaultFont 	(object Font
	    size       	12
	    face       	"Arial"
	    bold       	FALSE
	    italics    	FALSE
	    underline  	FALSE
	    strike     	FALSE
	    color      	0
	    default_color 	TRUE)
	showMessageNum 	3
	showClassOfObject 	TRUE
	notation   	"Unified")
    root_usecase_package 	(object Class_Category "Use Case View"
	quid       	"4314C3EA02D6"
	exportControl 	"Public"
	global     	TRUE
	logical_models 	(list unit_reference_list)
	logical_presentations 	(list unit_reference_list
	    (object UseCaseDiagram "Main"
		quid       	"4314C3EA02DF"
		title      	"Main"
		zoom       	100
		max_height 	28350
		max_width  	21600
		origin_x   	0
		origin_y   	0
		items      	(list diagram_item_list))))
    root_category 	(object Class_Category "Logical View"
	quid       	"4314C3EA02D5"
	exportControl 	"Public"
	global     	TRUE
	subsystem  	"Component View"
	quidu      	"4314C3EA02D7"
	logical_models 	(list unit_reference_list
	    (object Class_Category "ecore"
		is_unit    	TRUE
		is_loaded  	FALSE
		file_name  	"$ECORE_MODEL_PLUGIN_PATH\\org.eclipse.emf.ecore\\model\\org.eclipse.emf.Ecore.cat"
		quid       	"39A5ED04004E")
	    (object Class_Category "SQLModel"
		is_unit    	TRUE
		is_loaded  	FALSE
		file_name  	"$SQL_MODEL_PLUGIN_PATH\\org.eclipse.datatools.modelbase.sql\\model\\SQLModel.cat"
		quid       	"3E9B1F8201C1")
	    (object Class_Category "SQLQueryModel"
		is_unit    	TRUE
		is_loaded  	FALSE
		file_name  	"$SQL_MODEL_PLUGIN_PATH\\org.eclipse.datatools.modelbase.sql.query\\model\\SQLQueryModel.cat"
		quid       	"40467E9F03A6")
	    (object Class_Category "SQLXMLQueryModel"
		is_unit    	TRUE
		is_loaded  	FALSE
		file_name  	"$SQL_MODEL_PLUGIN_PATH\\org.eclipse.datatools.modelbase.sql.xml.query\\model\\SQLXMLQueryModel.cat"
		quid       	"4314C5120235"))
	logical_presentations 	(list unit_reference_list
	    (object ClassDiagram "Main"
		quid       	"4314C3EA02DB"
		title      	"Main"
		zoom       	100
		max_height 	28350
		max_width  	21600
		origin_x   	0
		origin_y   	763
		items      	(list diagram_item_list
		    (object CategoryView "Logical View::ecore" @1
			location   	(1001, 312)
			font       	(object Font
			    size       	12
			    face       	"Arial"
			    bold       	FALSE
			    italics    	FALSE
			    underline  	FALSE
			    strike     	FALSE
			    color      	0
			    default_color 	TRUE)
			label      	(object ItemLabel
			    Parent_View 	@1
			    location   	(857, 228)
			    fill_color 	13434879
			    nlines     	2
			    max_width  	288
			    justify    	0
			    label      	"ecore")
			icon_style 	"Label"
			line_color 	3342489
			fill_color 	13434879
			quidu      	"39A5ED04004E"
			width      	300
			height     	180)
		    (object CategoryView "Logical View::SQLModel" @2
			location   	(1014, 650)
			font       	(object Font
			    size       	12
			    face       	"Arial"
			    bold       	FALSE
			    italics    	FALSE
			    underline  	FALSE
			    strike     	FALSE
			    color      	0
			    default_color 	TRUE)
			label      	(object ItemLabel
			    Parent_View 	@2
			    location   	(870, 566)
			    fill_color 	13434879
			    nlines     	2
			    max_width  	288
			    justify    	0
			    label      	"SQLModel")
			icon_style 	"Label"
			line_color 	3342489
			fill_color 	13434879
			quidu      	"3E9B1F8201C1"
			width      	300
			height     	180)
		    (object CategoryView "Logical View::SQLQueryModel" @3
			location   	(1014, 1014)
			font       	(object Font
			    size       	12
			    face       	"Arial"
			    bold       	FALSE
			    italics    	FALSE
			    underline  	FALSE
			    strike     	FALSE
			    color      	0
			    default_color 	TRUE)
			label      	(object ItemLabel
			    Parent_View 	@3
			    location   	(802, 930)
			    fill_color 	13434879
			    nlines     	2
			    max_width  	424
			    justify    	0
			    label      	"SQLQueryModel")
			icon_style 	"Label"
			line_color 	3342489
			fill_color 	13434879
			quidu      	"40467E9F03A6"
			width      	437
			height     	181)
		    (object ImportView "" @4
			font       	(object Font
			    size       	12
			    face       	"Arial"
			    bold       	FALSE
			    italics    	FALSE
			    underline  	FALSE
			    strike     	FALSE
			    color      	0
			    default_color 	TRUE)
			stereotype 	TRUE
			line_color 	3342489
			quidu      	"4314C4E90143"
			client     	@2
			supplier   	@1
			line_style 	0)
		    (object ImportView "" @5
			stereotype 	TRUE
			line_color 	3342489
			quidu      	"404E1CF70346"
			client     	@3
			supplier   	@2
			line_style 	0)
		    (object CategoryView "Logical View::SQLXMLQueryModel" @6
			location   	(1014, 1365)
			font       	(object Font
			    size       	12
			    face       	"Arial"
			    bold       	FALSE
			    italics    	FALSE
			    underline  	FALSE
			    strike     	FALSE
			    color      	0
			    default_color 	TRUE)
			label      	(object ItemLabel
			    Parent_View 	@6
			    location   	(751, 1281)
			    fill_color 	13434879
			    nlines     	2
			    max_width  	526
			    justify    	0
			    label      	"SQLXMLQueryModel")
			icon_style 	"Label"
			line_color 	3342489
			fill_color 	13434879
			quidu      	"4314C5120235"
			width      	538
			height     	180)
		    (object ImportView "" @7
			font       	(object Font
			    size       	12
			    face       	"Arial"
			    bold       	FALSE
			    italics    	FALSE
			    underline  	FALSE
			    strike     	FALSE
			    color      	0
			    default_color 	TRUE)
			stereotype 	TRUE
			line_color 	3342489
			quidu      	"4314C52B01B1"
			client     	@6
			supplier   	@3
			line_style 	0)))))
    root_subsystem 	(object SubSystem "Component View"
	quid       	"4314C3EA02D7"
	physical_models 	(list unit_reference_list)
	physical_presentations 	(list unit_reference_list
	    (object Module_Diagram "Main"
		quid       	"4314C3EA02DE"
		title      	"Main"
		zoom       	100
		max_height 	28350
		max_width  	21600
		origin_x   	0
		origin_y   	0
		items      	(list diagram_item_list))))
    process_structure 	(object Processes
	quid       	"4314C3EA02D8"
	ProcsNDevs 	(list
	    (object Process_Diagram "Deployment View"
		quid       	"4314C3EA02DA"
		title      	"Deployment View"
		zoom       	100
		max_height 	28350
		max_width  	21600
		origin_x   	0
		origin_y   	0
		items      	(list diagram_item_list))))
    properties 	(object Properties
	attributes 	(list Attribute_Set
	    (object Attribute
		tool       	"Rose Web Publisher"
		name       	"HiddenTool"
		value      	FALSE)
	    (object Attribute
		tool       	"Ecore"
		name       	"propertyId"
		value      	"809135969")
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Category"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"packageName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"nsPrefix"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"nsURI"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"basePackage"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"prefix"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"annotation"
			value      	"")))
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Class"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"classifierName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"constraints"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"xmlName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"xmlContentKind"
			value      	("ContentKind" 0))
		    (object Attribute
			tool       	"Ecore"
			name       	"ContentKind"
			value      	(list Attribute_Set
			    (object Attribute
				tool       	"Ecore"
				name       	"Unspecified"
				value      	0)
			    (object Attribute
				tool       	"Ecore"
				name       	"Empty"
				value      	1)
			    (object Attribute
				tool       	"Ecore"
				name       	"Simple"
				value      	2)
			    (object Attribute
				tool       	"Ecore"
				name       	"Mixed"
				value      	3)
			    (object Attribute
				tool       	"Ecore"
				name       	"ElementOnly"
				value      	4)))
		    (object Attribute
			tool       	"Ecore"
			name       	"annotation"
			value      	"")))
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Operation"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"operationName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"annotation"
			value      	"")))
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Attribute"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"attributeName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"isTransient"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isVolatile"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isChangeable"
			value      	TRUE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isUnsettable"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isUnique"
			value      	TRUE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isID"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"xmlName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"xmlNamespace"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"xmlFeatureKind"
			value      	("FeatureKind" 0))
		    (object Attribute
			tool       	"Ecore"
			name       	"FeatureKind"
			value      	(list Attribute_Set
			    (object Attribute
				tool       	"Ecore"
				name       	"Unspecified"
				value      	0)
			    (object Attribute
				tool       	"Ecore"
				name       	"Simple"
				value      	1)
			    (object Attribute
				tool       	"Ecore"
				name       	"Attribute"
				value      	2)
			    (object Attribute
				tool       	"Ecore"
				name       	"Element"
				value      	4)))
		    (object Attribute
			tool       	"Ecore"
			name       	"annotation"
			value      	"")))
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Role"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"referenceName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"isTransient"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isVolatile"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isChangeable"
			value      	TRUE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isUnsettable"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isResolveProxies"
			value      	TRUE)
		    (object Attribute
			tool       	"Ecore"
			name       	"xmlName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"xmlNamespace"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"xmlFeatureKind"
			value      	("FeatureKind" 0))
		    (object Attribute
			tool       	"Ecore"
			name       	"FeatureKind"
			value      	(list Attribute_Set
			    (object Attribute
				tool       	"Ecore"
				name       	"Unspecified"
				value      	0)
			    (object Attribute
				tool       	"Ecore"
				name       	"Simple"
				value      	1)
			    (object Attribute
				tool       	"Ecore"
				name       	"Attribute"
				value      	2)
			    (object Attribute
				tool       	"Ecore"
				name       	"Element"
				value      	4)))
		    (object Attribute
			tool       	"Ecore"
			name       	"annotation"
			value      	""))))
	quid       	"4314C3EA02D9"))
