Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit f440e25b authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

adding xml functionality (export json to xml, run xml jobs) to GUI

parent fb048548
No related branches found
No related tags found
No related merge requests found
......@@ -36,6 +36,8 @@ using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Xml;
using System.Xml.Linq;
using NLog;
using NLog.Config;
using NLog.Targets;
......@@ -44,9 +46,12 @@ using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.InputData.FileIO.JSON;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
using TUGraz.VectoCore.InputData.FileIO.XML.Engineering;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.OutputData;
using TUGraz.VectoCore.OutputData.FileIO;
using TUGraz.VectoCore.Resources;
using LogManager = NLog.LogManager;
namespace VectoConsole
......@@ -187,26 +192,33 @@ Examples:
return 1;
}
DetectPlugins();
var plugins = PluginRegistry.Instance.GetInputDataPlugins().ToArray();
foreach (var file in jobFiles) {
WriteLine(@"Reading job: " + file);
if (Path.GetExtension(file) == Constants.FileExtensions.VectoJobFile) {
var dataProvider = JSONInputDataFactory.ReadJsonJob(file);
fileWriter = new FileOutputWriter(file);
var runsFactory = new SimulatorFactory(mode, dataProvider, fileWriter) {
ModalResults1Hz = args.Contains("-1Hz"),
WriteModalResults = args.Contains("-mod"),
ActualModalData = args.Contains("-act")
};
var extension = Path.GetExtension(file);
IInputDataProvider dataProvider = null;
switch (extension) {
case Constants.FileExtensions.VectoJobFile:
dataProvider = JSONInputDataFactory.ReadJsonJob(file);
break;
case ".xml":
var xDocument = XDocument.Load(file);
var rootNode = xDocument == null ? "" : xDocument.Root.Name.LocalName;
switch (rootNode) {
case "VectoInputEngineering":
dataProvider = new XMLEngineeringInputDataProvider(file, true);
break;
case "VectoInputDeclaration":
dataProvider = new XMLInputDataProvider(XmlReader.Create(file), true);
break;
}
break;
}
if (dataProvider == null) {
WriteLine(string.Format(@"failed to read job: '{0}'", file));
continue;
}
_jobContainer.AddRuns(runsFactory);
} else {
var handled = false;
foreach (var plugin in plugins) {
if (!handled && plugin.Value.CanHandleJob(file)) {
WriteLine("using plugin: " + plugin.Value.Name);
var dataProvider = plugin.Value.ReadVectoJob(file);
fileWriter = new FileOutputWriter(file);
var runsFactory = new SimulatorFactory(mode, dataProvider, fileWriter) {
ModalResults1Hz = args.Contains("-1Hz"),
......@@ -215,10 +227,6 @@ Examples:
};
_jobContainer.AddRuns(runsFactory);
handled = true;
}
}
}
}
WriteLine();
......@@ -302,33 +310,6 @@ Examples:
Console.ResetColor();
}
private static void DetectPlugins()
{
var assemblies = new List<Assembly>();
var dllFileNames = Directory.GetFiles(".", "*.dll");
foreach (var dllFileName in dllFileNames) {
var assemblyName = AssemblyName.GetAssemblyName(dllFileName);
var assembly = Assembly.Load(assemblyName);
assemblies.Add(assembly);
}
var inputDataPluginType = typeof(IInputDataPlugin);
foreach (var assembly in assemblies) {
if (assembly == null) {
continue;
}
var types = assembly.GetTypes();
foreach (var type in types) {
if (type.IsInterface || type.IsAbstract || type.GetInterface(inputDataPluginType.FullName) == null) {
continue;
}
var plugin = (IInputDataPlugin)Activator.CreateInstance(type);
if (plugin != null) {
PluginRegistry.Instance.RegisterPlugin(plugin);
}
}
}
}
private static void DisplayWarnings()
{
if (_quiet) {
......
......@@ -60,6 +60,7 @@
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
......
......@@ -190,6 +190,7 @@
<Compile Include="OutputData\ModFilter\ModalData1HzFilter.cs" />
<Compile Include="OutputData\XML\AbstractXMLWriter.cs" />
<Compile Include="OutputData\XML\AttributeMappings.cs" />
<Compile Include="OutputData\XML\XMLDeclarationReport.cs" />
<Compile Include="OutputData\XML\XMLDeclarationWriter.cs" />
<Compile Include="OutputData\XML\XMLEngineeringWriter.cs" />
<Compile Include="Resources\XMLNames.Designer.cs" />
......@@ -336,7 +337,9 @@
<Compile Include="Utils\XPathHelper.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\XMLNames.resx" />
<EmbeddedResource Include="Resources\XMLNames.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<None Include="app.config" />
<None Include="packages.config" />
<EmbeddedResource Include="JsonKeys.resx">
......@@ -409,6 +412,9 @@
<SubType>Designer</SubType>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="Resources\XSD\VectoOutput.xsd">
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\Declaration\Report\4x2r.png" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment