Forráskód Böngészése

Added association cardinalities to the MMCL

Yentl Van Tendeloo 9 éve
szülő
commit
c60dd20227
1 módosított fájl, 43 hozzáadás és 4 törlés
  1. 43 4
      bootstrap/metamodels.alc

+ 43 - 4
bootstrap/metamodels.alc

@@ -25,12 +25,32 @@ Element function create_metamodels():
 		model_add_edge(scd, "association_attr", "Association", "String")
 		model_add_edge(scd, "attr_name", "association_attr", "name")
 		model_add_node(scd, "Integer")
+
+		// TODO: possible to use instantiate_named here?
+		// Lower multiplicity on classes
 		model_add_value(scd, "lower_multiplicity", "lower_multiplicity")
-		model_add_value(scd, "upper_multiplicity", "upper_multiplicity")
 		model_add_edge(scd, "class_to_lm", "Class", "Integer")
-		model_add_edge(scd, "class_to_um", "Class", "Integer")
 		model_add_edge(scd, "lm_name", "class_to_lm", "lower_multiplicity")
+		// Upper multiplicity on classes
+		model_add_value(scd, "upper_multiplicity", "upper_multiplicity")
+		model_add_edge(scd, "class_to_um", "Class", "Integer")
 		model_add_edge(scd, "um_name", "class_to_um", "upper_multiplicity")
+		// Source lower multiplicity on associations
+		model_add_value(scd, "source_lower_cardinality", "source_lower_cardinality")
+		model_add_edge(scd, "assoc_to_slc", "Association", "Integer")
+		model_add_edge(scd, "slc_name", "assoc_to_slc", "source_lower_cardinality")
+		// Source upper multiplicity on associations
+		model_add_value(scd, "source_upper_cardinality", "source_upper_cardinality")
+		model_add_edge(scd, "assoc_to_suc", "Association", "Integer")
+		model_add_edge(scd, "suc_name", "assoc_to_suc", "source_upper_cardinality")
+		// Target lower multiplicity on associations
+		model_add_value(scd, "target_lower_cardinality", "target_lower_cardinality")
+		model_add_edge(scd, "assoc_to_tlc", "Association", "Integer")
+		model_add_edge(scd, "tlc_name", "assoc_to_tlc", "target_lower_cardinality")
+		// Target upper multiplicity on associations
+		model_add_value(scd, "target_upper_cardinality", "target_upper_cardinality")
+		model_add_edge(scd, "assoc_to_tuc", "Association", "Integer")
+		model_add_edge(scd, "tuc_name", "assoc_to_tuc", "target_upper_cardinality")
 
 		retype_model(scd, scd)
 		define_inheritance(scd, "Inheritance")
@@ -51,12 +71,31 @@ Element function create_metamodels():
 		retype(scd, "association_attr", "Association")
 		retype(scd, "attr_name", "association_attr")
 		retype(scd, "Integer", "Type")
+		// TODO: with instantiate_named, after all previous retypings?
+		// Lower multiplicity on classes
 		retype(scd, "lower_multiplicity", "String")
+		retype(scd, "lm_name", "association_attr")
+		retype(scd, "class_to_um", "Association")
+		// Upper multiplicity on classes
 		retype(scd, "upper_multiplicity", "String")
 		retype(scd, "class_to_lm", "Association")
-		retype(scd, "class_to_um", "Association")
-		retype(scd, "lm_name", "association_attr")
 		retype(scd, "um_name", "association_attr")
+		// Source lower cardinality on associations
+		retype(scd, "source_lower_cardinality", "String")
+		retype(scd, "assoc_to_slc", "Association")
+		retype(scd, "slc_name", "association_attr")
+		// Source upper cardinality on associations
+		retype(scd, "source_upper_cardinality", "String")
+		retype(scd, "assoc_to_suc", "Association")
+		retype(scd, "suc_name", "association_attr")
+		// Target lower cardinality on associations
+		retype(scd, "target_lower_cardinality", "String")
+		retype(scd, "assoc_to_tlc", "Association")
+		retype(scd, "tlc_name", "association_attr")
+		// Target upper cardinality on associations
+		retype(scd, "target_upper_cardinality", "String")
+		retype(scd, "assoc_to_tuc", "Association")
+		retype(scd, "tuc_name", "association_attr")
 
 		export_node("models/SimpleClassDiagrams", scd)