internal void ParseXml(String xmlName)
{
var stream = this.Assembly.GetManifestResourceStream(this._assemblyName + "." + xmlName);
var xdocument = XDocument.Load(stream);
var xmlEntities = xdocument.Document.Descendants("entity");
var entities = xmlEntities.Select(e =>
new CodeGeneratorEntityMetadata
{
Name = e.Attribute("Name") != null ? e.Attribute("Name").Value : "SemNome",
Properties = e.Descendants("property").Select(
p => new
{
Key = p.Attribute("Name").Value,
Value = new CodeGeneratorPropertyMetadata
{
Name = p.Attribute("Name").Value,
PropertyTemplate = p.Attribute("PropertyTemplate") == null ? PropertyTemplate.None : (PropertyTemplate)Enum.Parse(typeof(PropertyTemplate), p.Attribute("PropertyTemplate").Value),
MaxLength = p.Attribute("MaxLength") == null ? 0 : Int32.Parse(p.Attribute("MaxLength").Value),
}
}
).ToDictionary(x => x.Key, x => x.Value)
}
).ToList();
foreach (var entity in entities)
{
this.Entities.Add(entity.Name, entity);
/*
* foreach (var propertyName in entity.Properties.Keys)
{
var property = entity.Properties[propertyName];
if (property.PropertyTemplate == PropertyTemplate.StringCep)
{
if (property.MaxLength == 0) property.MaxLength = "00000-000".Length;
}
if (property.PropertyTemplate == PropertyTemplate.StringCpf)
{
if (property.MaxLength == 0) property.MaxLength = "111.222.333-44".Length;
}
if (property.PropertyTemplate == PropertyTemplate.StringCnpj)
{
if (property.MaxLength == 0) property.MaxLength = "012.345.678/0001-00".Length;
}
if (property.PropertyTemplate == PropertyTemplate.StringTelefone)
{
if (property.MaxLength == 0) property.MaxLength = "(11)2345-67890".Length;
}
}
*/
}
}