Klassendiagramm
@startuml
class Tasklist {
+ {static} void main(String[] args)
}
@enduml
@startuml
package source {
enum Priority {
IMPORTANT
NOT_IMPORTANT
}
note bottom of ProjectSource: Directory
class ProjectSource {
- Project parent
- Path path
- List<Project> children
- List<Appointment> appointments
- List<Note> notes
- List<Workspace> workspaces
- List<Quicklink> quicklinks
+ List<Appointment> getAllAppointments()
}
class AppointmentSource {
- String title
- String comment
- Priority priority
- String repeatCron
- LocalDateTime start
- LocalDateTime end
}
note bottom of NoteSource: File
class NoteSource {
}
note bottom of QuicklinkSource: eg Moodle Link
class QuicklinkSource {
- URI uri
}
class WorkspaceSource {
- List<Quicklink> quicklinks
}
WorkspaceSource <|-- Source
QuicklinkSource <|-- Source
NoteSource <|-- Source
AppointmentSource <|-- Source
ProjectSource <|-- Source
class Source {
- String name
- Path path
+ {abstract} create(String name)
+ {abstract} rename(String name)
+ {abstract} delete()
}
}
package core {
Project *-- ProjectSource
class Project {
}
Appointment *-- AppointmentSource
class Appointment {
}
Note *-- NoteSource
class Note {
}
Quicklink *-- QuicklinkSource
class Quicklink {
}
Workspace *-- WorkspaceSource
class Workspace {
}
interface IProjectManager {
+ ProjectSource deserializeProject(File directory)
+ Project watchProjectChanges(ProjectSource project)
+ Project loadProject(File directory)
}
interface ISerializer {
+ String serialize(AppointmentSource appointment)
+ AppointmentSource deserialize(String data)
+ String serialize(WorkspaceSource workspace)
+ WorkspaceSource deserialize(String data)
}
}
package logic {
ProjectManager <|-- IProjectManager
class ProjectManager {
}
Serializer <|-- ISerializer
class Serializer {
}
class AppointmentFilter {
- Project rootProject
}
}
@enduml
@startuml
package ui {
class AppointmentsViewController{
}
class FileBrowserViewController{
}
class WorkspaceViewController{
}
class SettingsViewController{
}
class TasklistController {
}
note bottom of UI: start javafx
class UI {
}
}
@enduml
Libraries
Markdown parser
yaml parser
open files