@startuml package model <> { class Subscription { <> Subscription(String url, String title) int getID() String getURL() long getLastActionTimestamp() String getTitle() } class SubscriptionAction { <> SubscriptionAction(int userID, int subscriptionID) int getID() int getUserID() int getSubscriptionID() long getTimestamp() boolean getAdded() } class Episode { <> Episode(int subscriptionID, int id, String url, String title, String thumbnailURL, int total) int getSubscriptionID() int getID() int getGUID() String getURL() String getTitle() int getTotal() } enum Action { Download Play Delete New Flattr String getJsonProperty() } class EpisodeAction { <> EpisodeAction(Action action, LocalDateTime timestamp, int started, int position) int getEpisodeID() Action getAction() long getTimestamp() int getStarted() int getPosition() void setEpisodeID() EpisodeActionPost getEpisodeActionPost(String podcastURL, String episodeURL) } interface UserDetails { String getUsername() String getPassword() Collection getAuthorities() boolean isAccountExpired() boolean isAccountLocked() boolean isCredentialsNonExpired() boolean isEnabled() } note left Aus org.springframework.security.core.userdetails. Wird für die Schnittstelle UserDetailsManager benötigt. Stellt wichtige Informationen eines Users bereit. Diese werden nur indirekt von Spring Security benutzt, indem sie vorher in Authentication Objekten gekapselt werden. end note class User { -- <> User(String username, String password) int getID() String getSessionToken() boolean getEmailIsValidated() .. interface methods .. String getUsername() String getPassword() Collection getAuthorities() boolean isAccountExpired() boolean isAccountLocked() boolean isCredentialsNonExpired() boolean isEnabled() } interface GrantedAuthority { String getAuthority() } note right Aus org.springframework.security.core. Wird für die Schnittstelle UserDetails benötigt. Repräsentiert eine Autorisierung, die einem Authentication Objekt gewährt wird. end note class Authority { <> Authority() String getAuthority() } } Subscription <. SubscriptionAction: ID Action <-- EpisodeAction EpisodeAction .> Episode: ID UserDetails <|.. User: <> User -> Authority GrantedAuthority <|.. Authority: <> @enduml