public static MetadataAttributeModel Convert(BaseUsage current , BaseUsage parent, long metadataStructureId, int packageModelNumber, long parentStepId)
{
MetadataAttribute metadataAttribute;
List<object> domainConstraintList = new List<object>();
string constraintsDescription="";
if (current is MetadataNestedAttributeUsage)
{
MetadataNestedAttributeUsage mnau = (MetadataNestedAttributeUsage)current;
metadataAttribute = mnau.Member;
}
else
{
MetadataAttributeUsage mau = (MetadataAttributeUsage)current;
metadataAttribute = mau.MetadataAttribute;
}
if (metadataAttribute.Constraints.Where(c => (c is DomainConstraint)).Count() > 0)
domainConstraintList = createDomainContraintList(metadataAttribute);
if (metadataAttribute.Constraints.Count > 0)
{
foreach (Constraint c in metadataAttribute.Constraints)
{
if (string.IsNullOrEmpty(constraintsDescription)) constraintsDescription = c.FormalDescription;
else constraintsDescription = String.Format("{0}\n{1}", constraintsDescription, c.FormalDescription);
}
}
//load displayPattern
DataTypeDisplayPattern dtdp = DataTypeDisplayPattern.Materialize(metadataAttribute.DataType.Extra);
string displayPattern="";
if(dtdp !=null) displayPattern = dtdp.StringPattern;
return new MetadataAttributeModel
{
Id = current.Id,
Number = 1,
ParentModelNumber = packageModelNumber,
MetadataStructureId = metadataStructureId,
Parent = parent,
Source = current,
DisplayName = current.Label,
Discription = current.Description,
ConstraintDescription = constraintsDescription,
DataType = metadataAttribute.DataType.Name,
SystemType = metadataAttribute.DataType.SystemType,
DisplayPattern = displayPattern,
MinCardinality = current.MinCardinality,
MaxCardinality = current.MaxCardinality,
NumberOfSourceInPackage = 1,
first = true,
DomainList = domainConstraintList,
last = true,
MetadataAttributeId = metadataAttribute.Id,
ParentStepId = parentStepId,
Errors = null
};
}