10
10
import mServer .crawler .sender .base .JsonUtils ;
11
11
12
12
import java .lang .reflect .Type ;
13
+ import java .util .Arrays ;
13
14
import java .util .HashSet ;
14
15
import java .util .Optional ;
15
16
import java .util .Set ;
@@ -23,9 +24,13 @@ public class ArdTopicsLetterDeserializer implements JsonDeserializer<PaginationU
23
24
private static final String ELEMENT_TOTAL_ELEMENTS = "totalElements" ;
24
25
private static final String ELEMENT_PAGE_SIZE = "pageSize" ;
25
26
private static final String ELEMENT_PAGINATION = "pagination" ;
27
+ private static final String ELEMENT_PUBLICATION_SERVICE = "publicationService" ;
28
+ private static final String ATTRIBUTE_NAME = "name" ;
26
29
27
30
private static final String ATTRIBUTE_ID = "id" ;
28
31
32
+ private static final String [] IGNORED_SENDER = new String [] {"zdf" , "kika" , "3sat" , "arte" };
33
+
29
34
@ Override
30
35
public PaginationUrlDto deserialize (
31
36
final JsonElement jsonElement , final Type type , final JsonDeserializationContext context ) {
@@ -79,13 +84,31 @@ private Set<CrawlerUrlDTO> parseTeaser(final JsonObject teaserObject) {
79
84
id = JsonUtils .getAttributeAsString (teaserObject , ATTRIBUTE_ID );
80
85
}
81
86
82
- id .ifPresent (
83
- nonNullId ->
84
- results .add (
85
- new CrawlerUrlDTO (
86
- String .format (
87
- ArdConstants .TOPIC_URL , nonNullId , ArdConstants .TOPIC_PAGE_SIZE ))));
87
+ if (isRelevant (teaserObject )) {
88
+ id .ifPresent (
89
+ nonNullId ->
90
+ results .add (
91
+ new CrawlerUrlDTO (
92
+ String .format (
93
+ ArdConstants .TOPIC_URL , nonNullId , ArdConstants .TOPIC_PAGE_SIZE ))));
94
+ }
88
95
89
96
return results ;
90
97
}
98
+
99
+ private boolean isRelevant (final JsonObject teaserObject ) {
100
+ if (teaserObject .has (ELEMENT_PUBLICATION_SERVICE )) {
101
+ final JsonObject publicationService =
102
+ teaserObject .get (ELEMENT_PUBLICATION_SERVICE ).getAsJsonObject ();
103
+ final Optional <String > attributeAsString =
104
+ JsonUtils .getAttributeAsString (publicationService , ATTRIBUTE_NAME );
105
+ if (attributeAsString .isPresent ()) {
106
+
107
+ return !Arrays .stream (IGNORED_SENDER )
108
+ .anyMatch (sender -> sender .equalsIgnoreCase (attributeAsString .get ()));
109
+ }
110
+ }
111
+
112
+ return true ;
113
+ }
91
114
}
0 commit comments