예제 #1
0
        /// <summary></summary>
        /// <param name="artifact"></param>
        /// <param name="tag"></param>
        /// <param name="indentLevel"></param>
        public virtual void AnalyseArtifactRecordTree(IArtifact artifact, string tag, long indentLevel)
        {
            Debug.Assert(artifact != null && tag != null && indentLevel > 0);

            var indentString = new string('\t', (int)indentLevel);

            RecordTreeStringList.Add(string.Format("{0}{1}[{2}{3}: {4}", Environment.NewLine, indentString, tag, artifact.Uid, artifact.GetArticleName(true, buf: Buf)));

            var containedList = artifact.GetContainedList(containerType: (ContainerType)(-1));

            foreach (var containedArtifact in containedList)
            {
                AnalyseArtifactRecordTree(containedArtifact,
                                          containedArtifact.GetCarriedByContainerContainerType() == ContainerType.On ? "OA" :
                                          containedArtifact.GetCarriedByContainerContainerType() == ContainerType.Under ? "UA" :
                                          containedArtifact.GetCarriedByContainerContainerType() == ContainerType.Behind ? "BA" :
                                          "IA",
                                          indentLevel + 1);
            }

            RecordTreeStringList.Add(string.Format("{0}]", containedList.Count > 0 ? Environment.NewLine + indentString : ""));
        }