public void LoadUmlInfrastructure() { var factory = new MofFactory(); var extent = new MofUriExtent("datenmeister:///target"); Assert.That(extent.elements().Count(), Is.EqualTo(0)); var loader = new SimpleLoader(factory); loader.Load(extent, "Xmi/UML.xmi"); var firstElement = (extent.elements().ElementAt(0) as IObject); Assert.That(firstElement, Is.Not.Null); Assert.That(firstElement.get("name").ToString(), Is.EqualTo("UML")); }
private static void TestFillTree() { var watch = new Stopwatch(); watch.Start(); var factory = new MofFactory(); var mofExtent = new MofUriExtent("datenmeister:///mof"); var umlExtent = new MofUriExtent("datenmeister:///uml"); var loader = new SimpleLoader(factory); loader.Load(mofExtent, "data/MOF.xmi"); loader.Load(mofExtent, "data/UML.xmi"); var mof = new _MOF(); var uml = new _UML(); FillTheMOF.DoFill(mofExtent.elements(), mof); FillTheUML.DoFill(umlExtent.elements(), uml); watch.Stop(); System.Console.WriteLine($"Elapsed Time for MOF and UML Fill {watch.ElapsedMilliseconds.ToString("n0")} ms"); }
/// <summary> /// Performs a full bootstrap by reading in the uml class /// </summary> /// <param name="paths">Paths storing the uml information</param> /// <param name="dataLayerLogic">The datalayer logic to be used</param> /// <param name="dataLayer">The datalayer to be filled before the bootstrap itself</param> /// <returns>The instance of the bootstrapper</returns> public static Bootstrapper PerformFullBootstrap( FilePaths paths, IDataLayerLogic dataLayerLogic, IDataLayer dataLayer) { var factory = new MofFactory(); var umlExtent = new MofUriExtent("datenmeister:///uml"); var mofExtent = new MofUriExtent("datenmeister:///mof"); var primitiveExtent = new MofUriExtent("datenmeister:///prototypes"); var loader = new SimpleLoader(factory); loader.Load(primitiveExtent, paths.PathPrimitive); loader.Load(umlExtent, paths.PathUml); loader.Load(mofExtent, paths.PathMof); // Assigns the extents to the datalayer if (dataLayer != null && dataLayerLogic != null) { dataLayerLogic.AssignToDataLayer(mofExtent, dataLayer); dataLayerLogic.AssignToDataLayer(umlExtent, dataLayer); dataLayerLogic.AssignToDataLayer(primitiveExtent, dataLayer); dataLayerLogic.Create<FillTheMOF, _MOF>(dataLayer); dataLayerLogic.Create<FillTheUML, _UML>(dataLayer); dataLayerLogic.Create<FillThePrimitiveTypes, _PrimitiveTypes>(dataLayer); var dmml = new DmML(); UmlToDmMLConverter.Convert(dataLayerLogic.Get<_UML>(dataLayer), dmml); dataLayerLogic.Set(dataLayer, dmml); } else { // To support the creation of _MOF and _UML, we need to have datalayers and their logic throw new InvalidOperationException("datalayers or dataLayerLogic is null"); } // Now do the bootstrap var bootStrapper = new Bootstrapper(primitiveExtent, umlExtent, mofExtent, dataLayerLogic); bootStrapper.Strap(); return bootStrapper; }
public static void Main(string[] args) { var factory = new MofFactory(); var umlExtent = new MofUriExtent("datenmeister:///uml"); var mofExtent = new MofUriExtent("datenmeister:///mof"); var primitiveTypeExtent = new MofUriExtent("datenmeister:///primitivetypes"); var loader = new SimpleLoader(factory); loader.Load(umlExtent, "data/UML.xmi"); loader.Load(mofExtent, "data/MOF.xmi"); loader.Load(primitiveTypeExtent, "data/PrimitiveTypes.xmi"); // Generates tree for UML var generator = new ClassTreeGenerator { Namespace = "DatenMeister" }; generator.Walk(umlExtent); var extentCreator = new FillClassTreeByExtentCreator("DatenMeister._UML") { Namespace = "DatenMeister.Filler" }; extentCreator.Walk(umlExtent); File.WriteAllText("../../uml.cs", generator.Result.ToString()); File.WriteAllText("../../FillTheUML.cs", extentCreator.Result.ToString()); Console.WriteLine("C# Code for UML written"); // Generates tree for MOF generator = new ClassTreeGenerator { Namespace = "DatenMeister" }; generator.Walk(mofExtent); extentCreator = new FillClassTreeByExtentCreator("DatenMeister._MOF") { Namespace = "DatenMeister.Filler" }; extentCreator.Walk(mofExtent); File.WriteAllText("../../mof.cs", generator.Result.ToString()); File.WriteAllText("../../FillTheMOF.cs", extentCreator.Result.ToString()); Console.WriteLine("C# Code for MOF written"); // Generates tree for PrimitiveTypes generator = new ClassTreeGenerator { Namespace = "DatenMeister" }; generator.Walk(primitiveTypeExtent); extentCreator = new FillClassTreeByExtentCreator("DatenMeister._PrimitiveTypes") { Namespace = "DatenMeister.Filler" }; extentCreator.Walk(primitiveTypeExtent); File.WriteAllText("../../primitivetypes.cs", generator.Result.ToString()); File.WriteAllText("../../FillThePrimitiveTypes.cs", extentCreator.Result.ToString()); Console.WriteLine("C# Code for PrimitiveTypes written"); #if !DEBUG File.Copy("../../primitivetypes.cs", "../../../DatenMeister/Filler/primitivetypes.cs", true); File.Copy("../../FillThePrimitiveTypes.cs", "../../../DatenMeister/Filler/FillThePrimitiveTypes.cs", true); File.Copy("../../mof.cs", "../../../DatenMeister/Filler/mof.cs", true); File.Copy("../../FillTheMOF.cs", "../../../DatenMeister/Filler/FillTheMOF.cs", true); File.Copy("../../uml.cs", "../../../DatenMeister/Filler/uml.cs", true); File.Copy("../../FillTheUML.cs", "../../../DatenMeister/Filler/FillTheUML.cs", true); #endif }