Skip to content

Commit 1911eb2

Browse files
authored
Merge pull request #175 from devgateway/fix/OCE-121
OCE-121
2 parents ed7b02e + 7d357b6 commit 1911eb2

File tree

3 files changed

+27
-22
lines changed

3 files changed

+27
-22
lines changed

web/src/main/java/org/devgateway/ocds/web/rest/controller/AverageNumberOfTenderersController.java

+17-15
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,23 @@
1111
*******************************************************************************/
1212
package org.devgateway.ocds.web.rest.controller;
1313

14-
import com.mongodb.BasicDBObject;
15-
import com.mongodb.DBObject;
16-
import io.swagger.annotations.ApiOperation;
14+
import static org.springframework.data.mongodb.core.aggregation.Aggregation.group;
15+
import static org.springframework.data.mongodb.core.aggregation.Aggregation.limit;
16+
import static org.springframework.data.mongodb.core.aggregation.Aggregation.match;
17+
import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation;
18+
import static org.springframework.data.mongodb.core.aggregation.Aggregation.project;
19+
import static org.springframework.data.mongodb.core.aggregation.Aggregation.skip;
20+
import static org.springframework.data.mongodb.core.query.Criteria.where;
21+
22+
import java.util.List;
23+
24+
import javax.validation.Valid;
25+
1726
import org.devgateway.ocds.web.rest.controller.request.DefaultFilterPagingRequest;
1827
import org.devgateway.toolkit.persistence.mongo.aggregate.CustomProjectionOperation;
28+
import org.devgateway.toolkit.persistence.mongo.aggregate.CustomSortingOperation;
1929
import org.springframework.cache.annotation.CacheConfig;
2030
import org.springframework.cache.annotation.Cacheable;
21-
import org.springframework.data.domain.Sort.Direction;
2231
import org.springframework.data.mongodb.core.aggregation.Aggregation;
2332
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
2433
import org.springframework.data.mongodb.core.aggregation.Fields;
@@ -27,17 +36,10 @@
2736
import org.springframework.web.bind.annotation.RequestMethod;
2837
import org.springframework.web.bind.annotation.RestController;
2938

30-
import javax.validation.Valid;
31-
import java.util.List;
39+
import com.mongodb.BasicDBObject;
40+
import com.mongodb.DBObject;
3241

33-
import static org.springframework.data.mongodb.core.aggregation.Aggregation.group;
34-
import static org.springframework.data.mongodb.core.aggregation.Aggregation.limit;
35-
import static org.springframework.data.mongodb.core.aggregation.Aggregation.match;
36-
import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation;
37-
import static org.springframework.data.mongodb.core.aggregation.Aggregation.project;
38-
import static org.springframework.data.mongodb.core.aggregation.Aggregation.skip;
39-
import static org.springframework.data.mongodb.core.aggregation.Aggregation.sort;
40-
import static org.springframework.data.mongodb.core.query.Criteria.where;
42+
import io.swagger.annotations.ApiOperation;
4143

4244
/**
4345
*
@@ -74,7 +76,7 @@ public List<DBObject> averageNumberOfTenderers(@ModelAttribute @Valid final Defa
7476
project(Fields.from(Fields.field("year", Fields.UNDERSCORE_ID_REF)))
7577
.andInclude(Keys.AVERAGE_NO_OF_TENDERERS)
7678
.andExclude(Fields.UNDERSCORE_ID),
77-
sort(Direction.ASC, Keys.YEAR),
79+
new CustomSortingOperation(new BasicDBObject(Keys.YEAR, 1)),
7880
skip(filter.getSkip()), limit(filter.getPageSize()));
7981

8082
AggregationResults<DBObject> results = mongoTemplate.aggregate(agg, "release", DBObject.class);

web/src/main/java/org/devgateway/ocds/web/rest/controller/NumberOfTendersByItemClassification.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.devgateway.toolkit.persistence.mongo.aggregate.CustomProjectionOperation;
1919
import org.springframework.cache.annotation.CacheConfig;
2020
import org.springframework.cache.annotation.Cacheable;
21+
import org.springframework.data.domain.Sort.Direction;
2122
import org.springframework.data.mongodb.core.aggregation.Aggregation;
2223
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
2324
import org.springframework.data.mongodb.core.aggregation.Fields;
@@ -31,6 +32,7 @@
3132

3233
import static org.springframework.data.mongodb.core.aggregation.Aggregation.group;
3334
import static org.springframework.data.mongodb.core.aggregation.Aggregation.match;
35+
import static org.springframework.data.mongodb.core.aggregation.Aggregation.sort;
3436
import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation;
3537
import static org.springframework.data.mongodb.core.aggregation.Aggregation.unwind;
3638
import static org.springframework.data.mongodb.core.query.Criteria.where;
@@ -67,7 +69,8 @@ public List<DBObject> numberOfTendersByItemClassification(
6769
.andOperator(getYearFilterCriteria("tender.tenderPeriod.startDate", filter))),
6870
match(getDefaultFilterCriteria(filter)), new CustomProjectionOperation(project),
6971
unwind("tender.items"),
70-
group("$tender." + Keys.ITEMS_CLASSIFICATION).count().as(Keys.TOTAL_TENDERS)
72+
group("$tender." + Keys.ITEMS_CLASSIFICATION).count().as(Keys.TOTAL_TENDERS),
73+
sort(Direction.ASC, Fields.UNDERSCORE_ID)
7174
);
7275

7376
AggregationResults<DBObject> results = mongoTemplate.aggregate(agg, "release", DBObject.class);

web/src/test/java/org/devgateway/ocds/web/rest/controller/AverageNumberOfTenderersControllerTest.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ public void averageNumberOfTenderers() throws Exception {
2323
final List<DBObject> averageNumberOfTenderers = averageNumberOfTenderersController
2424
.averageNumberOfTenderers(new DefaultFilterPagingRequest());
2525

26-
final DBObject first = averageNumberOfTenderers.get(0);
27-
int year = (int) first.get(AverageNumberOfTenderersController.Keys.YEAR);
28-
double averageNoTenderers = (double) first.get(AverageNumberOfTenderersController.Keys.AVERAGE_NO_OF_TENDERERS);
26+
final DBObject sec = averageNumberOfTenderers.get(1);
27+
int year = (int) sec.get(AverageNumberOfTenderersController.Keys.YEAR);
28+
double averageNoTenderers = (double) sec.get(AverageNumberOfTenderersController.Keys.AVERAGE_NO_OF_TENDERERS);
2929
Assert.assertEquals(2015, year);
3030
Assert.assertEquals(5.5, averageNoTenderers, 0);
3131

32-
final DBObject second = averageNumberOfTenderers.get(1);
33-
year = (int) second.get(AverageNumberOfTenderersController.Keys.YEAR);
34-
averageNoTenderers = (double) second.get(AverageNumberOfTenderersController.Keys.AVERAGE_NO_OF_TENDERERS);
32+
final DBObject first = averageNumberOfTenderers.get(0);
33+
year = (int) first.get(AverageNumberOfTenderersController.Keys.YEAR);
34+
averageNoTenderers = (double) first.get(AverageNumberOfTenderersController.Keys.AVERAGE_NO_OF_TENDERERS);
3535
Assert.assertEquals(2014, year);
3636
Assert.assertEquals(5.0, averageNoTenderers, 0);
3737
}

0 commit comments

Comments
 (0)