summaryrefslogtreecommitdiff
path: root/21-implementierungsheft-kolloquium/assets/diagrams/classdiagram-subscriptions.puml
blob: 432f18554d5e273ae3d6c8269524170656c65672 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
@startuml

package subscriptionsAPI <<Frame>> {
    package subscriptionDataAccessLayer <<Frame>> {
        class SubscriptionDataAccessService <<@Repository>> {
            <<create>> SubscriptionDataAccessService(JpaTemplate jpaTemplate)
            int uploadSubscriptions(String username, List<SubscriptionAction> subscriptions)
            List<String> getSubscriptions(String username)
            List<String> getSubscriptionsSince(String username, LocalDateTime time)
            int addSubscriptions(String username, List<SubscriptionAction> addedSubscriptions)
            int removeSubscriptions(String username, List<SubscriptionAction> removedSubscriptions)
            List<SubscriptionTitles> getTitles(String username)
        }

        interface SubscriptionDao {
            int uploadSubscriptions(String username, List<SubscriptionAction> subscriptions)
            List<String> getSubscriptions(String username)
            List<String> getSubscriptionsSince(String username, LocalDateTime time)
            int addSubscriptions(String username, List<SubscriptionAction> addedSubscriptions)
            int removeSubscriptions(String username, List<SubscriptionAction> removedSubscriptions)
            List<SubscriptionTitles> getTitles(String username)
        }
    }

    package subscriptionService <<Frame>> {
        class SubscriptionService <<@Service>> {
            <<create>> SubscriptionService(SubscriptionDao subscriptionDao)
            int uploadSubscriptions(String username, List<SubscriptionAction> subscriptions)
            List<String> getSubscriptions(String username)
            List<String> getSubscriptionsSince(String username, LocalDateTime time)
            int addSubscriptions(String username, List<SubscriptionAction> addedSubscriptions)
            int removeSubscriptions(String username, List<SubscriptionAction> removedSubscriptions)
            List<SubscriptionTitles> getTitles(String username)
        }
    }

    package subscriptionController <<Frame>> {
        class SubscriptionController <<@Controller>>{
            ' @Autowired
            <<create>> SubscriptionController(SubscriptionService subscriptionService) 
            ' @GetMapping
            ResponseEntity<List<String>> getSubscriptions(String username, String deviceID, String functionJSONP)  
            ' @PutMapping
            ResponseEntity<String> uploadSubscriptions(String username, String deviceID, List<String> subscriptions) 
            ' @PostMapping
            ResponseEntity<SubscriptionDelta> applySubscriptionDelta(String username, String deviceID, SubscriptionDelta delta) 
            ' @GetMapping
            ResponseEntity<SubscriptionDelta> getSubscriptionDelta(String username, String deviceID, long since) 
            ResponseEntity<List<SubscriptionTitles>> getTitles(String username, String deviceID)
        }

        class SubscriptionTitles {
            <<create>> SubscriptionTitles(Subscription subscription, List<EpisodeActionPost> episodeTitles)
            Subscription getSubscription()
            List<EpisodeActionPost> getEpisodesTitles()
        }

        class SubscriptionDelta {
            <<create>> SubscriptionDelta(List<String> add, List<String> remove) 
            List<String> getRemove() 
            LocalDate getTimestamp() 
            List<List<String>> getUpdate_urls() 
        }
    }

}

' Subscription <.. SubscriptionDataAccessService: DB
' SubscriptionAction <.. SubscriptionDataAccessService: DB
SubscriptionService --o SubscriptionController
SubscriptionDao <.. SubscriptionService: <<use>>
SubscriptionDao <|. SubscriptionDataAccessService: <<realize>>

@enduml