Skip to content

Commit

Permalink
Add feature: Generating model directly from xml contents, fix #41
Browse files Browse the repository at this point in the history
  • Loading branch information
moh-hassan committed Apr 17, 2022
1 parent 2071153 commit 2a71c43
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 4 deletions.
15 changes: 14 additions & 1 deletion OData2Poco.Tests/O2PTest.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using NUnit.Framework;
using OData2Poco.Api;
Expand Down Expand Up @@ -27,7 +28,7 @@ public async Task GenerateDefaultTest(string url, string version, int n)
var code = await o2p.GenerateAsync(connString);
Assert.IsTrue(code.Contains("public partial class Product"));
}

[Test]
public async Task GenerateDefaultTestV4()
{
Expand Down Expand Up @@ -59,5 +60,17 @@ public async Task Filter_by_namespace_Test()
var code = await o2p.GenerateAsync(connString);
Assert.IsTrue(code.Contains("public partial class Product"));
}

[Test]
[TestCaseSource(typeof(TestSample), nameof(TestSample.FileCases))]
public async Task GenerateFromXmlContents(string fileName, string version, int n)
{
string xml = File.ReadAllText(fileName);
var o2p = new O2P();
var code = await o2p.GenerateAsync(xml);
Console.WriteLine(code);
Assert.IsTrue(code.Contains("public partial class Product"));
}

}
}
17 changes: 15 additions & 2 deletions OData2PocoLib/Api/O2P.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,12 @@ internal async Task<IPocoGenerator> GenerateModel(OdataConnectionString odataCon
MetaData=gen.MetaData;
return gen;
}

internal async Task<IPocoGenerator> GenerateModel(string xmlContent)
{
IPocoGenerator gen = await PocoFactory.GenerateModel(xmlContent, Setting);
MetaData = gen.MetaData;
return gen;
}
public async Task<string> GenerateAsync(OdataConnectionString odataConnString)
{
var gen = await GenerateModel(odataConnString);
Expand All @@ -43,8 +48,16 @@ public async Task<string> GenerateAsync(OdataConnectionString odataConnString)
CodeText = generatorCs.ToString();
return CodeText;
}


//feature request #41
public async Task<string> GenerateAsync(string xmlContent)
{
var gen = await GenerateModel(xmlContent);
var generatorCs = PocoClassGeneratorCs.GenerateCsPocoClass(gen, Setting);
ClassList = generatorCs.ClassList;
CodeText = generatorCs.ToString();
return CodeText;
}
public string GenerateProject()
{
var proj = new ProjectGenerator(Setting.Attributes);
Expand Down
10 changes: 9 additions & 1 deletion OData2PocoLib/PocoFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ internal static async Task<IPocoGenerator> GenerateModel(OdataConnectionString c
return generator;
}

internal static async Task<IPocoGenerator> GenerateModel(string xmlContents,
PocoSetting setting)
{
var metaData = await Task.Run (()=> MetaDataReader.LoadMetaDataFromXml(xmlContents));
IPocoGenerator generator = Create(metaData, setting);
return generator;
}

//internal static async Task<IPocoClassGenerator> GeneratePoco(OdataConnectionString connectionString,
// PocoSetting setting)
//{
Expand All @@ -62,7 +70,7 @@ internal static async Task<IPocoGenerator> GenerateModel(OdataConnectionString c

//----------
//var generatorCs = new PocoClassGeneratorCs(gen, Setting);

//public async Task<string> GenerateAsync(OdataConnectionString odataConnString)
//{
// var gen = await GenerateModel(odataConnString);
Expand Down

0 comments on commit 2a71c43

Please sign in to comment.