public void TestXmlStorage() { var factory = new XmlFactory(); var mofObject1 = factory.create(null); var mofObject2 = factory.create(null); var mofObject3 = factory.create(null); mofObject1.set("name", "Martin"); mofObject2.set("name", "Martina"); mofObject3.set("name", "Martini"); var extent = new XmlUriExtent("dm:///test/"); Assert.That(extent.contextURI(), Is.EqualTo("dm:///test/")); extent.elements().add(mofObject1); extent.elements().add(mofObject2); extent.elements().add(mofObject3); var xmiStorageConfiguration = new XmiStorageConfiguration { ExtentUri = "dm:///test/", Path = "data.xml" }; var xmiStorage = new XmiStorage(); xmiStorage.StoreExtent(extent, xmiStorageConfiguration); var otherExtent = xmiStorage.LoadExtent(xmiStorageConfiguration); Assert.That(otherExtent.elements().size(), Is.EqualTo(3)); Assert.That(otherExtent.contextURI(), Is.EqualTo("dm:///test/")); Assert.That((otherExtent.elements().ElementAt(0) as IObject)?.get("name"), Is.EqualTo("Martin")); Assert.That((otherExtent.elements().ElementAt(1) as IObject)?.get("name"), Is.EqualTo("Martina")); Assert.That((otherExtent.elements().ElementAt(2) as IObject)?.get("name"), Is.EqualTo("Martini")); File.Delete("data.xml"); }
public void TestXmlExtentStorage() { var kernel = new ContainerBuilder(); var builder = kernel.UseDatenMeisterDotNet(new IntegrationSettings { PathToXmiFiles = "Xmi" }); using (var scope = builder.BeginLifetimeScope()) { var path = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"testing{new Random().Next(0, 100000)}.xml"); if (File.Exists(path)) { File.Delete(path); } var storageConfiguration = new XmiStorageConfiguration { ExtentUri = "dm:///test", Path = path, Workspace = "Data" }; // Creates the extent var loader = scope.Resolve<IExtentStorageLoader>(); var loadedExtent = loader.LoadExtent(storageConfiguration, true); Assert.That(loadedExtent, Is.TypeOf<XmlUriExtent>()); // Includes some data var factory = scope.Resolve<IFactoryMapper>().FindFactoryFor(scope, loadedExtent); var createdElement = factory.create(null); Assert.That(createdElement, Is.TypeOf<XmlElement>()); loadedExtent.elements().add(createdElement); createdElement.set("test", "Test"); Assert.That(createdElement.get("test"), Is.EqualTo("Test")); // Stores the extent loader.StoreExtent(loadedExtent); // Detaches it loader.DetachExtent(loadedExtent); // Reloads it storageConfiguration.ExtentUri = "dm:///test_new"; var newExtent = loader.LoadExtent(storageConfiguration, false); Assert.That(newExtent.elements().size(), Is.EqualTo(1)); Assert.That((newExtent.elements().ElementAt(0) as IElement).get("test"), Is.EqualTo("Test")); } }
/// <summary> /// Gets the configuration by using the given model and their filename /// </summary> /// <param name="model">Model to be used to retrieve the information</param> /// <param name="filename">Filename to be used</param> /// <returns></returns> private static ExtentStorageConfiguration GetStorageConfiguration(ExtentAddModel model, string filename) { ExtentStorageConfiguration configuration; switch (model.type) { case "xmi": configuration = new XmiStorageConfiguration { ExtentUri = model.contextUri, Path = filename, Workspace = model.workspace }; break; case "csv": var csvExtentData = new CSVStorageConfiguration { ExtentUri = model.contextUri, Path = filename, Workspace = model.workspace, Settings = new CSVSettings() }; var modelAsCreateModel = model as ExtentCreateModel; if (modelAsCreateModel != null) { foreach (var c in modelAsCreateModel.ColumnsAsEnumerable) { csvExtentData.Settings.Columns.Add(c); } } configuration = csvExtentData; break; default: throw new InvalidOperationException($"Unknown extent type: {model.type}"); } return configuration; }