private List<StepInfo> GetChildrenStepsFromMetadata(BaseUsage usage, StepInfo parent, string parentXpath, StepModelHelper parentStepModelHelper)
{
List<StepInfo> childrenSteps = new List<StepInfo>();
List<BaseUsage> childrenUsages = UsageHelper.GetCompoundChildrens(usage);
List<StepModelHelper> stepHelperModelList = (List<StepModelHelper>)TaskManager.Bus[CreateTaskmanager.METADATA_STEP_MODEL_HELPER];
if (childrenUsages.Count > 0)
{
foreach (BaseUsage u in childrenUsages)
{
int number = 1;//childrenUsages.IndexOf(u) + 1;
string xPath = parentXpath + "//" + u.Label.Replace(" ", string.Empty) + "[" + number + "]";
bool complex = false;
string actionName = "";
string attrName = "";
if (u is MetadataPackageUsage)
{
actionName = "SetMetadataPackage";
}
else
{
actionName = "SetMetadataCompoundAttribute";
if (u is MetadataAttributeUsage)
{
MetadataAttributeUsage mau = (MetadataAttributeUsage)u;
if (mau.MetadataAttribute.Self is MetadataCompoundAttribute)
{
complex = true;
attrName = mau.MetadataAttribute.Self.Name;
}
}
if (u is MetadataNestedAttributeUsage)
{
MetadataNestedAttributeUsage mau = (MetadataNestedAttributeUsage)u;
if (mau.Member.Self is MetadataCompoundAttribute)
{
complex = true;
attrName = mau.Member.Self.Name;
}
}
}
if (complex)
{
StepInfo s = new StepInfo(u.Label)
{
Id = TaskManager.GenerateStepId(),
parentTitle = attrName,
Parent = parent,
IsInstanze = false,
GetActionInfo = new ActionInfo
{
ActionName = actionName,
ControllerName = "CreateSetMetadataPackage",
AreaName = "DCM"
},
PostActionInfo = new ActionInfo
{
ActionName = actionName,
ControllerName = "CreateSetMetadataPackage",
AreaName = "DCM"
}
};
//only not optional
if (TaskManager.StepInfos.Where(z => z.Id.Equals(s.Id)).Count() == 0)
{
StepModelHelper newStepModelHelper = new StepModelHelper(s.Id, 1, u, xPath,
parentStepModelHelper);
stepHelperModelList.Add(newStepModelHelper);
s = LoadStepsBasedOnUsage(u, s, xPath, newStepModelHelper);
childrenSteps.Add(s);
}
}
//}
}
}
return childrenSteps;
}