ETL Components

@startuml

skinparam monochrome true
skinparam defaultFontname Bitstream Vera Sans Mono
skinparam defaultFontSize 18

left to right direction
hide empty members

' namespace spooq {
  namespace extractor {

      class Extractor {
      }
      Extractor <|-- JSONExtractor
      class JSONExtractor{
      }
      Extractor <|-- JDBCExtractor
      class JDBCExtractor{
      }
      JDBCExtractor <|- JDBCExtractorFullLoad
      class JDBCExtractorFullLoad {
      }
      JDBCExtractorIncremental -|> JDBCExtractor
      class JDBCExtractorIncremental {
      }

  }
  namespace transformer{

    class Transformer
    Transformer <|-- Sieve
    class Sieve
    Transformer <|-- Exploder
    class Exploder
    Transformer <|-- EnumCleaner
    class EnumCleaner
    Transformer <|-- NullCleaner
    class NullCleaner
    Transformer <|-- ThresholdCleaner
    class ThresholdCleaner
    Transformer <|-- NewestByGroup
    class NewestByGroup
    Transformer <|-- Mapper
    class Mapper

  }
  namespace loader {

    class Loader
    Loader <|-- HiveLoader
    class HiveLoader
  }
  namespace pipeline {

    class Pipeline
    Pipeline o-- extractor : has 1 instance >
    Pipeline o-- transformer : has 1+ instances >
    Pipeline o-- loader : has 1 instance >

    class PipelineFactory
    PipelineFactory .> Pipeline : "creates"
  }
' }

' skinparam ClassArrowFontSize 18
skinparam ClassRelationFontSize 30

@enduml

Simplified UML Class Diagram