/// <summary> /// creates new with all defaults /// </summary> /// <remarks> /// </remarks> public ThemaCompilerContext() { SourceFileData = new Dictionary<string, string>(); SourceFileXml = new Dictionary<string, XElement>(); Themas = new Dictionary<string, ThemaDescriptor>(); SubsetIndex = new Dictionary<string, XElement>(); ParameterIndex = new Dictionary<string, XElement>(); Properties = new Dictionary<string, object>(); Errors = new List<ThemaCompilerError>(); SourceFiles = new List<string>(); Globals = new Dictionary<string, string>(); LocalFileNames = new Dictionary<string, string>(); Generators = new Dictionary<string, GeneratorDescriptor>(); LinkTypes = new Dictionary<string, ThemaLinkType>(); OrgNodeIndex = new OrgNodeCollection(); RoleMaps = new BindingList<RoleMap>(); EcoProcessIndex = new EcoProcessCollection(); }
/// <summary> /// Resolves the structure and org nodes. /// </summary> /// <param name="orgnodes"> The orgnodes. </param> /// <param name="themas"> The themas. </param> /// <remarks> /// </remarks> public void ResolveStructureAndOrgNodes(OrgNodeCollection orgnodes, ThemaDescriptor[] themas) { BindProcessIns(); if (null != orgnodes) { BindOrgNodes(orgnodes); } if (null != themas) { BindThemas(themas); } }
/// <summary> /// Binds the org nodes. /// </summary> /// <param name="orgnodes"> The orgnodes. </param> /// <remarks> /// </remarks> private void BindOrgNodes(OrgNodeCollection orgnodes) { foreach (var process in Index.Values) { var orgnode = orgnodes[process.OrgNodeCode]; if (null == orgnode) { Errors.Add( new EcoProcessException("Процесс " + process.Code + " ссылается на несуществующий исполнительный узел " + process.OrgNodeCode, process.Xml)); continue; } process.OrgNode = orgnode; orgnode.Processes.Add(process); } }