Skip to content

Sequence diagrams

  1. Reading Data
  2. Converting Data
  3. Visualizing Data

1. Reading Data

We validate the MoleculeData object when we initialize it.

sequenceDiagram
    participant User
    participant Shaker
    participant ParserFactory
    participant BaseParser
    participant MoleculeData

    User->>Shaker: read(data, notation)
    alt Shaker->>ParserFactory: get_parser(notation)
            ParserFactory-->>Shaker: parser (BaseParser)
            Shaker->>BaseParser: parse(data)
            BaseParser-->>Shaker: molecule_data (MoleculeData)
    end
    Shaker-->>User: Shaker instance

2. Converting Data

sequenceDiagram
    participant User
    participant Shaker
    participant ConverterFactory
    participant BaseConverter

    User->>Shaker: convert(notation)
    Shaker->>ConverterFactory: get_converter(notation)
    ConverterFactory-->>Shaker: converter (BaseConverter)
    Shaker->>BaseConverter: convert(molecule_data)
    BaseConverter-->>Shaker: converted_data
    Shaker-->>User: converted_data

3. Visualizing Data

Not much thought put into this, just a very rough sketch

sequenceDiagram
    participant User
    participant Shaker
    participant VisualizationService
    participant Visualizer

    User->>Shaker: visualize(method)
    Shaker->>VisualizationService: visualize(molecule_data, method)
    alt method is "display"
        VisualizationService->>Visualizer: display(molecule_data)
    end
    Visualizer-->>VisualizationService: visualization_result
    VisualizationService-->>Shaker: visualization_result
    Shaker-->>User: Shaker instance