/// <summary> /// Creates a simple extent containing three elements with four properties /// </summary> /// <returns>The created uri extent</returns> private static IUriExtent CreateSimpleCsvExtent() { var csvFile = "eins 1 one\r\nzwei 2 two\r\ndrei 3 three\r\nvier 4 four\r\n"; File.WriteAllText("data.txt", csvFile); var mapper = new ManualConfigurationToExtentStorageMapper(); mapper.AddMapping(typeof (CSVStorageConfiguration), scope => new CSVStorage(null, null)); DataLayers dataLayers; var dataLayerLogic = DataLayerLogic.InitDefault(out dataLayers); var data = new ExtentStorageData(); var logic = new ExtentStorageLoader(data, mapper, dataLayerLogic); var configuration = new CSVStorageConfiguration() { Path = "data.txt", ExtentUri = "dm:///local/", Settings = { HasHeader = false, Separator = ' ' } }; var csvExtent = logic.LoadExtent(configuration); return csvExtent; }
public ExtentStorageLoader(ExtentStorageData data, IConfigurationToExtentStorageMapper map, IDataLayerLogic dataLayerLogic) { Debug.Assert(map != null, "map != null"); Debug.Assert(data != null, "data != null"); Debug.Assert(dataLayerLogic != null, "dataLayerLogic != null"); _data = data; _map = map; _dataLayerLogic = dataLayerLogic; }
public ExtentStorageLoader( ExtentStorageData data, IConfigurationToExtentStorageMapper map, IDataLayerLogic dataLayerLogic, IWorkspaceCollection workspaceCollection, ILifetimeScope diScope ) : this(data, map, dataLayerLogic) { Debug.Assert(workspaceCollection != null, "collection != null"); _workspaceCollection = workspaceCollection; _diScope = diScope; }
public void TestExtentStorageLogic() { var csvFile = "eins 1 one\r\nzwei 2 two\r\ndrei 3 three\r\nvier 4 four\r\n"; File.WriteAllText("data.txt", csvFile); var mapper = new ManualConfigurationToExtentStorageMapper(); mapper.AddMapping(typeof (CSVStorageConfiguration), scope => new CSVStorage(null, null)); DataLayers dataLayers; var dataLayerLogic = DataLayerLogic.InitDefault(out dataLayers); var data = new ExtentStorageData(); var logic = new ExtentStorageLoader(data, mapper, dataLayerLogic); var configuration = new CSVStorageConfiguration() { Path = "data.txt", ExtentUri = "dm:///local/", Settings = { HasHeader = false, Separator = ' ' } }; var csvExtent = logic.LoadExtent(configuration); Assert.That(csvExtent, Is.Not.Null); Assert.That(csvExtent.elements().Count(), Is.EqualTo(4)); logic.StoreExtent(csvExtent); // Changes content, store it and check, if stored (csvExtent.elements().ElementAt(0) as IObject).set(configuration.Settings.Columns[0], "eens"); logic.StoreAll(); var read = File.ReadAllText("data.txt"); Assert.That(read.Contains("eens"), Is.True); }
public IContainer UseDatenMeister(ContainerBuilder kernel) { if (_settings == null) { Debug.WriteLine("No integration settings were given. Loading the default values."); _settings = new IntegrationSettings(); } kernel.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource()); var watch = new Stopwatch(); watch.Start(); // Defines the factory method for a certain extent type var factoryMapper = new DefaultFactoryMapper(); kernel.RegisterInstance(factoryMapper).As<IFactoryMapper>(); // Finds the loader for a certain extent type var storageMap = new ManualConfigurationToExtentStorageMapper(); kernel.RegisterInstance(storageMap).As<IConfigurationToExtentStorageMapper>(); // Workspace collection var workspaceCollection = new WorkspaceCollection(); workspaceCollection.Init(); kernel.RegisterInstance(workspaceCollection).As<IWorkspaceCollection>(); // Defines the extent storage data var extentStorageData = new ExtentStorageData(); kernel.RegisterInstance(extentStorageData).As<ExtentStorageData>(); kernel.RegisterType<ExtentStorageLoader>().As<IExtentStorageLoader>(); // Defines the datalayers var dataLayers = new DataLayers(); kernel.RegisterInstance(dataLayers).As<DataLayers>(); var dataLayerData = new DataLayerData(dataLayers); kernel.RegisterInstance(dataLayerData).As<DataLayerData>(); kernel.RegisterType<DataLayerLogic>().As<IDataLayerLogic>(); // Adds the name resolution kernel.RegisterType<UmlNameResolution>().As<IUmlNameResolution>(); var builder = kernel.Build(); using (var scope = builder.BeginLifetimeScope()) { // Is used by .Net Provider to include the mappings for extent storages and factory types _settings?.Hooks?.OnStartScope(scope); var dataLayerLogic = scope.Resolve<IDataLayerLogic>(); dataLayers.SetRelationsForDefaultDataLayers(dataLayerLogic); // Load the default extents // Performs the bootstrap var paths = new Bootstrapper.FilePaths() { PathPrimitive = Path.Combine(_settings.PathToXmiFiles, "PrimitiveTypes.xmi"), PathUml = Path.Combine(_settings.PathToXmiFiles, "UML.xmi"), PathMof = Path.Combine(_settings.PathToXmiFiles, "MOF.xmi") }; if (_settings.PerformSlimIntegration) { throw new InvalidOperationException("Slim integration is currently not supported"); } else { Bootstrapper.PerformFullBootstrap( paths, workspaceCollection.GetWorkspace("UML"), dataLayerLogic, dataLayers.Uml); Bootstrapper.PerformFullBootstrap( paths, workspaceCollection.GetWorkspace("MOF"), dataLayerLogic, dataLayers.Mof); } // Creates the workspace and extent for the types layer which are belonging to the types var extentTypes = new MofUriExtent("dm:///types"); var typeWorkspace = workspaceCollection.GetWorkspace("Types"); typeWorkspace.AddExtent(extentTypes); dataLayerLogic.AssignToDataLayer(extentTypes, dataLayers.Types); // Boots up the typical DatenMeister Environment if (_settings.EstablishDataEnvironment) { EstablishDataEnvironment(builder, scope); } } watch.Stop(); Debug.WriteLine($"Elapsed time for bootstrap: {watch.Elapsed}"); return builder; }