Skip to content

Latest commit

 

History

History
247 lines (172 loc) · 6.76 KB

packager-cli-dependency-graph.md

File metadata and controls

247 lines (172 loc) · 6.76 KB

PackagerCLI Diagrams

The diagram is split into two, the first one showing the high-level dependencies for the application, and the second the detailed dependencies for expression building.

Application Dependencies (excl Logger and Options)

classDiagram
    direction TB

    %% HACK: Mermaid doesnt support commas withing generic, so use a similar looking character (﹐)

    namespace CSharpCode_Generate_And_Compile {
        class AssemblyCompiler {
%%            Compile(librarySet : LibrarySet,definitions : DefinitionDictionary~LambdaExpression~? = null) IDictionary~string, AssemblyData~
        }

        class CSharpLibrarySetToStreamsWriter {
        }

        class CSharpCodeStreamPostProcessor {
            ProcessStream(name : string, stream : Stream) void
        }

        class WriteToFileCSharpCodeStreamPostProcessor {
        }

        class AssemblyDataPostProcessor {
            ProcessAssemblyData(name : string, assemblyData : AssemblyData) void
        }

        class WriteToFileAssemblyDataPostProcessor {
        }
    }

    namespace Expression_Building {
        class LibrarySetExpressionBuilder {
            ProcessLibrarySet(librarySet : LibrarySet) DefinitionDictionary<LambdaExpression>
        }

        class OperatorsBinder {
        }

        class CqlOperatorsBinder {
        }

        class ContextBinder{
        }

        class CqlContextBinder{
		}

        class TypeConverter {
        }

        class ModelInspector {
        }

        class CqlCompilerFactory {
        }
    }

    namespace Fhir_Resource_Building {
        class ResourcePackager {
%%            PackageResources(elmDirectory : DirectoryInfo, cqlDirectory : DirectoryInfo, resourceCanonicalRootUrl : string? = null) IReadOnlyCollection~Resource~
        }

        class FhirResourcePostProcessor {
%%            ProcessResource(resource : Resource) void
        }

        class WriteToFileFhirResourcePostProcessor {
        }
    }

    namespace Cql_To_Resource_Pipeline {
        class CqlToResourcePackagingPipeline {
        }        
    }

    namespace Application {
        class PackagerCliProgram {
        }

        class OptionsConsoleDumper {
        }
    }

%%    namespace Dependencies {
        class TypeManager {
            get_TypeResolver() TypeResolver
            get_TupleTypes() IEnumerable~Type~
        }

    
        class TypeResolver {
        }
%%    }

    %% Inheritance  

    CqlOperatorsBinder --> OperatorsBinder : inherits
    CqlContextBinder --> ContextBinder : inherits
    WriteToFileCSharpCodeStreamPostProcessor --> CSharpCodeStreamPostProcessor : inherits
    WriteToFileAssemblyDataPostProcessor --> AssemblyDataPostProcessor : inherits
    WriteToFileFhirResourcePostProcessor --> FhirResourcePostProcessor : inherits

    %% Injected Dependencies

    AssemblyDataPostProcessor ..> AssemblyCompiler : injected\n(optional)
    CSharpCodeStreamPostProcessor ..> AssemblyCompiler : injected\n(optional)
    CSharpLibrarySetToStreamsWriter ..> AssemblyCompiler : injected
    TypeManager ..> AssemblyCompiler : injected
    
    AssemblyCompiler ..> CqlToResourcePackagingPipeline : injected
    ILibrarySetExpressionBuilder ..> CqlToResourcePackagingPipeline : injected
    ResourcePackager ..> CqlToResourcePackagingPipeline : injected 
    
    OptionsConsoleDumper ..> PackagerCliProgram : injected 
    CqlToResourcePackagingPipeline ..> PackagerCliProgram : injected
      
    TypeResolver ..> CqlOperatorsBinder : injected
    TypeConverter ..> CqlOperatorsBinder : injected

    ModelInspector ..> TypeConverter : injected  

    TypeResolver ..> TypeManager : injected

    TypeResolver ..> ResourcePackager : injected
    FhirResourcePostProcessor ..> ResourcePackager : injected\n(optional) 
    
    TypeResolver ..> CSharpLibrarySetToStreamsWriter : injected
Loading

Expression Builder Dependencies (excl Logger and Options)

classDiagram
    direction TB

    %% HACK: Mermaid doesnt support commas withing generic, so use a similar looking character (﹐)

%%    namespace Expression_Building {
        class ILibrarySetExpressionBuilderContext{
        }

        class LibrarySetExpressionBuilderContext {
        }

        class LibrarySetExpressionBuilder{
        }

        class ILibraryExpressionBuilderContext{
        }

        class LibraryExpressionBuilderContext {
        }

        class LibraryExpressionBuilder{
        }
        
        class ExpressionBuilderSettings {
        }

        class ExpressionBuilder{
        }

        class OperatorsBinder {
        }

        class CqlOperatorsBinder {
        }

        class ContextBinder{
        }

        class CqlContextBinder{
		}

        class TypeConverter {
        }

        class ModelInspector {
        }

        class CqlCompilerFactory {
        }
%%    }

    namespace Cql_To_Resource_Pipeline {
        class CqlToResourcePackagingPipeline {
        }        
    }

%%    namespace Dependencies {
        class TypeManager {
            get_TypeResolver() TypeResolver
            get_TupleTypes() IEnumerable~Type~
        }

    
        class TypeResolver {
        }
%%    }

    %% Inheritance  

    LibrarySetExpressionBuilderContext --> ILibrarySetExpressionBuilderContext : implements
    LibraryExpressionBuilderContext --> ILibraryExpressionBuilderContext : implements

    CqlContextBinder --> ContextBinder : inherits
    CqlOperatorsBinder --> OperatorsBinder : inherits

    %% Injected Dependencies

    LibraryExpressionBuilder ..> LibrarySetExpressionBuilder : injected

    LibrarySetExpressionBuilder ..> LibrarySetExpressionBuilderContext : injected
    DefinitionDictionary~LambdaExpression~ ..> LibrarySetExpressionBuilderContext : injected
    LibrarySet ..> LibrarySetExpressionBuilderContext : injected

    ExpressionBuilder ..> LibraryExpressionBuilder : injected

    LibraryExpressionBuilder ..> LibraryExpressionBuilderContext : injected
    Library ..> LibraryExpressionBuilderContext : injected
    DefinitionDictionary~LambdaExpression~ ..> LibraryExpressionBuilderContext : injected
    ILibraryExpressionBuilderContext ..> LibraryExpressionBuilderContext : injected (optional)

    OperatorsBinder ..> ExpressionBuilder : injected
    TypeManager ..> ExpressionBuilder : injected
    TypeConverter ..> ExpressionBuilder : injected
    TypeResolver ..> ExpressionBuilder : injected
    ContextBinder ..> ExpressionBuilder : injected
    ExpressionBuilderSettings ..> ExpressionBuilder : injected
    ILibraryExpressionBuilderContext ..> ExpressionBuilder : injected
    
    LibrarySetExpressionBuilder ..> CqlToResourcePackagingPipeline : injected

    TypeResolver ..> CqlOperatorsBinder : injected
    TypeConverter ..> CqlOperatorsBinder : injected

    ModelInspector ..> TypeConverter : injected  

    TypeResolver ..> TypeManager : injected
Loading