public CompositionElement(CompositionVariants variant, SObjectLink olink) { this.Variant = variant; this.ObjectLink = olink; FocusNode = variant == CompositionVariants.DirectSystem ? olink.Target : olink.Source; if (variant == CompositionVariants.BinaryRelation) { pair_link = FocusNode.DirectObjectLinks() .FirstOrDefault(lnk => lnk != olink && lnk.Definition.IsEssential); } }
private static XName GroupId(SObjectLink p) { // Здесь можно добавить всякие особые случаи группирования XName pname = p.Definition.Id; if (pname == "father" || pname == "mother" || pname == "husband" || pname == "wife") { return("family"); } if (pname == "in-collection" && p.Source .DirectObjectLinks("collection-item").Any(d => d.Target != null && d.Target.Definition.OfDocType())) { return("docincollection"); } if (pname == "reflected" && p.Source .DirectObjectLinks("in-doc") .Any(d => d.Target != null && d.Target.Definition.OfDocType())) { return("docinreflection"); } if (pname == "in-org" && p.Source.DirectProperty("role-classification") != null && ((SDataLink)p.Source.DirectProperty("role-classification")).InnerText == "director") { return("first-faces"); } if (pname == "participant" && (p.Source.Definition.Id == "participation" && p.Source.DirectObjectLinks("in-org").Any(dol => dol.Target != null && dol.Target.DirectProperty("org-classification") != null && ((SDataLink)dol.Target.DirectProperty("org-classification")).InnerText == "organization"))) { return("work-inorg"); } return(p.Definition.Id); }