@@ -8,7 +8,7 @@ import software.amazon.awssdk.services.cloudformation.model.StackEvent
8
8
import javax.swing.SwingUtilities
9
9
10
10
/* *
11
- * AWS returns events in Events in reverse chronological order. This class remembers last event id and returns only new one.
11
+ * AWS returns events in reverse chronological order. This class remembers last event id and returns only new one.
12
12
* [lastEventIdOfCurrentPage] String? id of the last event used to prevent duplicates.
13
13
* [id] String field used as event id
14
14
* [previousPages] stack of tokens for all pages except first. First page does not have token
@@ -27,48 +27,47 @@ class EventsFetcher(private val stackName: String) {
27
27
* @return new events from last call or all events if [pageToSwitchTo] is set (because all events
28
28
* are new to another page) and set of available [Page]s
29
29
*/
30
- fun fetchEvents (client : CloudFormationClient , pageToSwitchTo : Page ? ):
31
- Pair <List <StackEvent >, Set <Page >> {
32
- assert (! SwingUtilities .isEventDispatchThread())
30
+ fun fetchEvents (client : CloudFormationClient , pageToSwitchTo : Page ? ): Pair <List <StackEvent >, Set<Page>> {
31
+ assert (! SwingUtilities .isEventDispatchThread())
33
32
34
- val pageToFetch: String? = when (pageToSwitchTo) {
35
- Page .NEXT -> nextPage
36
- Page .PREVIOUS -> previousPages.lastOrNull()
37
- else -> currentPage
38
- }
39
-
40
- val request = DescribeStackEventsRequest .builder().stackName(stackName).nextToken(pageToFetch).build()
41
- val response = client.describeStackEvents(request)
33
+ val pageToFetch: String? = when (pageToSwitchTo) {
34
+ Page .NEXT -> nextPage
35
+ Page .PREVIOUS -> previousPages.lastOrNull()
36
+ else -> currentPage
37
+ }
42
38
43
- when (pageToSwitchTo) {
44
- Page .NEXT -> currentPage?.let { previousPages.add(it) } // Store current as prev
45
- Page .PREVIOUS -> if (previousPages.isNotEmpty()) previousPages.removeAt(previousPages.size - 1 )
46
- }
47
- nextPage = response.nextToken()
48
- currentPage = pageToFetch
39
+ val request = DescribeStackEventsRequest .builder().stackName(stackName).nextToken(pageToFetch).build()
40
+ val response = client.describeStackEvents(request)
49
41
50
- if (pageToSwitchTo != null ) { // page changed, last event is not valid
51
- lastEventIdOfCurrentPage = null
52
- }
42
+ when (pageToSwitchTo) {
43
+ Page .NEXT -> currentPage?.let { previousPages.add(it) } // Store current as prev
44
+ Page .PREVIOUS -> if (previousPages.isNotEmpty()) previousPages.removeAt(previousPages.size - 1 )
45
+ }
46
+ nextPage = response.nextToken()
47
+ currentPage = pageToFetch
53
48
54
- val eventsUnprocessed = response.stackEvents()
55
- val eventsProcessed = when (lastEventIdOfCurrentPage) {
56
- null -> eventsUnprocessed
57
- else -> eventsUnprocessed.takeWhile { it.id != lastEventIdOfCurrentPage }
58
- }
59
- eventsProcessed.firstOrNull()?.let { lastEventIdOfCurrentPage = it.id }
49
+ if (pageToSwitchTo != null ) { // page changed, last event is not valid
50
+ lastEventIdOfCurrentPage = null
51
+ }
60
52
61
- val availablePages = mutableSetOf<Page >()
53
+ val eventsUnprocessed = response.stackEvents()
54
+ val eventsProcessed = when (lastEventIdOfCurrentPage) {
55
+ null -> eventsUnprocessed
56
+ else -> eventsUnprocessed.takeWhile { it.id != lastEventIdOfCurrentPage }
57
+ }
58
+ eventsProcessed.firstOrNull()?.let { lastEventIdOfCurrentPage = it.id }
62
59
63
- if (currentPage != null ) { // We only can go prev. if current page is not first (not null)
64
- availablePages.add(Page .PREVIOUS )
65
- }
66
- if (nextPage != null ) {
67
- availablePages.add(Page .NEXT )
68
- }
60
+ val availablePages = mutableSetOf<Page >()
69
61
70
- return Pair (eventsProcessed, availablePages)
62
+ if (currentPage != null ) { // We only can go prev. if current page is not first (not null)
63
+ availablePages.add(Page .PREVIOUS )
64
+ }
65
+ if (nextPage != null ) {
66
+ availablePages.add(Page .NEXT )
71
67
}
72
68
69
+ return Pair (eventsProcessed, availablePages)
70
+ }
71
+
73
72
private val StackEvent .id: String get() = eventId()
74
73
}
0 commit comments