@startuml
skinparam classAttributeIconSize 0

class Company{
    +scheduleExportDailyVaccinated(dateTime)
}

interface Runnable{
    +run()
}

abstract TimerTask{
    +TimerTask()
    +run()
    +cancel()
    +scheduledExecutionTime()
}

class ExportDailyVaccinatedTask {
    +ExportDailyVaccinatedTask(filePath, VaccinationCenterStore, VaccineTypeStore)
    +run()
    +listIncrementVacType(vacType)
}

class TimerTask{
    +TimerTask()
    +scheduleAtFixedRate(task, firstTime, period)
}

class VaccinationCenterStore {
    +getVaccinationCenters()
}

class VaccineTypeStore {
    +getVaccineTypes()
}

class VaccinationCenter {
    +getVaccinaAdminList()
}

class Vaccine {
    +getVacType()
}

class CsvExporter {
    +CsvExporter
    +exportData(dataMap)
}

class VaccineAdministration {
    +getVaccine()
}

class VaccineType {}

TimerTask ..|> Runnable
ExportDailyVaccinatedTask -|> TimerTask
Company ..> VaccinationCenterStore : knows
Company ..> VaccineTypeStore : knows
Vaccine "*" -> "1" VaccineType : has
VaccineAdministration "*" -> "*" Vaccine : has
VaccinationCenter "1" -> "*" VaccineAdministration : has
VaccineTypeStore "1" -> "*" VaccineType : stores
VaccinationCenterStore "1" -> "*" VaccinationCenter : stores
Company -> Timer : uses
Timer -> ExportDailyVaccinatedTask : times
ExportDailyVaccinatedTask -> CsvExporter : uses

@enduml