Revision 46876
Added by Claudio Atzori about 7 years ago
MongoLoggerClient.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.datasource.publisher.clients; |
2 | 2 |
|
3 | 3 |
import java.util.List; |
4 |
import java.util.function.Function; |
|
5 |
import java.util.stream.Collectors; |
|
4 | 6 |
|
5 |
import com.google.common.base.Function; |
|
6 |
import com.google.common.base.Predicate; |
|
7 |
import com.google.common.collect.Iterables; |
|
8 |
import com.google.common.collect.Lists; |
|
9 | 7 |
import com.google.common.primitives.Ints; |
10 | 8 |
import com.mongodb.BasicDBObject; |
11 | 9 |
import com.mongodb.MongoClient; |
12 |
import com.mongodb.client.FindIterable; |
|
13 | 10 |
import com.mongodb.client.MongoCollection; |
14 | 11 |
import com.mongodb.client.model.Projections; |
15 | 12 |
import eu.dnetlib.datasource.publisher.ApiException; |
16 | 13 |
import eu.dnetlib.datasource.publisher.clients.utils.DatasourceFunctions; |
17 | 14 |
import eu.dnetlib.datasource.publisher.model.*; |
15 |
import eu.dnetlib.datasource.publisher.utils.Utils; |
|
18 | 16 |
import eu.dnetlib.miscutils.datetime.DateUtils; |
19 | 17 |
import org.apache.commons.lang.StringUtils; |
20 | 18 |
import org.apache.commons.lang.time.DateFormatUtils; |
... | ... | |
26 | 24 |
import org.springframework.beans.factory.annotation.Value; |
27 | 25 |
import org.springframework.cache.annotation.Cacheable; |
28 | 26 |
|
29 |
import static com.mongodb.client.model.Filters.*; |
|
27 |
import static com.mongodb.client.model.Filters.and; |
|
28 |
import static com.mongodb.client.model.Filters.eq; |
|
30 | 29 |
|
31 |
|
|
32 |
|
|
33 | 30 |
/** |
34 | 31 |
* Created by claudio on 20/10/2016. |
35 | 32 |
*/ |
... | ... | |
72 | 69 |
|
73 | 70 |
final Bson query = getQuery(dsId); |
74 | 71 |
|
75 |
final FindIterable<Document> iterable = getCollection().find(query).projection(fields).limit(limit).sort(dbo("system:startHumanDate", -1)); |
|
76 |
final Iterable<AggregationInfo> transform = Iterables.transform(iterable, new Function<Document, AggregationInfo>() { |
|
72 |
return Utils.stream(getCollection().find(query).projection(fields).limit(limit).sort(dbo("system:startHumanDate", -1)).iterator()) |
|
73 |
.map(getMapper()) |
|
74 |
.filter(ai -> ai.getNumberOfRecords() >= 0 && StringUtils.isNotBlank(ai.getDate())) |
|
75 |
.collect(Collectors.toList()); |
|
76 |
} |
|
77 | 77 |
|
78 |
private Function<Document, AggregationInfo> getMapper() { |
|
79 |
return new java.util.function.Function<Document, AggregationInfo>() { |
|
80 |
|
|
78 | 81 |
@Override |
79 | 82 |
public AggregationInfo apply(final Document d) { |
80 | 83 |
|
... | ... | |
122 | 125 |
return -1; |
123 | 126 |
} |
124 | 127 |
} |
125 |
}); |
|
126 |
|
|
127 |
final Iterable<AggregationInfo> filter = Iterables.filter(transform, new Predicate<AggregationInfo>() { |
|
128 |
@Override |
|
129 |
public boolean apply(final AggregationInfo ai) { |
|
130 |
return ai.getNumberOfRecords() >= 0 && StringUtils.isNotBlank(ai.getDate()); |
|
131 |
} |
|
132 |
}); |
|
133 |
|
|
134 |
return Lists.newArrayList(filter); |
|
128 |
}; |
|
135 | 129 |
} |
136 | 130 |
|
137 | 131 |
private static Bson getFields() { |
Also available in: Unified diff
cleanup, added method to search among apis