Skip to content

Commit 9c8f5e7

Browse files
committed
Merge remote-tracking branch 'origin/8.0.1' into 9.0
2 parents cb5fab0 + df36ddd commit 9c8f5e7

File tree

4 files changed

+22
-3
lines changed

4 files changed

+22
-3
lines changed

avni-server-api/src/main/java/org/avni/server/dao/EntityApprovalStatusRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.avni.server.dao.sync.SyncEntityName;
44
import org.avni.server.domain.*;
55
import org.avni.server.framework.security.UserContextHolder;
6+
import org.avni.server.web.request.EntitySyncStatusContract;
67
import org.joda.time.DateTime;
78
import org.springframework.data.domain.Page;
89
import org.springframework.data.domain.Pageable;
@@ -36,7 +37,7 @@ Page<EntityApprovalStatus> findByLastModifiedDateTimeIsBetweenOrderByLastModifie
3637
default Page<EntityApprovalStatus> findEntityApprovalStatuses(EntityApprovalStatusSearchParams searchParams, Pageable pageable) {
3738

3839
Specification specification = lastModifiedBetween(
39-
CHSEntity.toDate(searchParams.getLastModifiedDateTime() != null ? searchParams.getLastModifiedDateTime() : new DateTime("1900-01-01T00:00:00.000Z")),
40+
CHSEntity.toDate(searchParams.getLastModifiedDateTime() != null ? searchParams.getLastModifiedDateTime() : EntitySyncStatusContract.REALLY_OLD_DATE),
4041
CHSEntity.toDate(searchParams.getNow() != null ? searchParams.getNow() : new DateTime()));
4142

4243
if (searchParams.getEntityType() != null) {

avni-server-api/src/main/java/org/avni/server/web/MediaController.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import org.slf4j.Logger;
1414
import org.slf4j.LoggerFactory;
1515
import org.springframework.beans.factory.annotation.Autowired;
16+
import org.springframework.core.io.InputStreamResource;
17+
import org.springframework.http.HttpHeaders;
1618
import org.springframework.http.HttpStatus;
1719
import org.springframework.http.MediaType;
1820
import org.springframework.http.ResponseEntity;
@@ -25,6 +27,7 @@
2527
import javax.servlet.http.HttpServletResponse;
2628
import java.awt.*;
2729
import java.io.File;
30+
import java.io.FileInputStream;
2831
import java.io.IOException;
2932
import java.io.UnsupportedEncodingException;
3033
import java.net.URL;
@@ -179,4 +182,14 @@ private boolean isInvalidDimension(File tempSourceFile, AvniFiles.ImageType imag
179182
Dimension dimension = AvniFiles.getImageDimension(tempSourceFile, imageType);
180183
return dimension.getHeight() > 75 || dimension.getWidth() > 75;
181184
}
185+
186+
@GetMapping("/web/media/downloadStream")
187+
public ResponseEntity<InputStreamResource> downloadFile(@RequestParam String s3Url, @RequestParam String fileName) throws IOException {
188+
InputStreamResource resource = new InputStreamResource(s3Service.getObjectContentFromUrl(s3Url));
189+
190+
return ResponseEntity.ok()
191+
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileName)
192+
.contentType(MediaType.parseMediaType("application/octet-stream"))
193+
.body(resource);
194+
}
182195
}

avni-server-api/src/main/java/org/avni/server/web/api/LocationApiController.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import org.avni.server.dao.LocationRepository;
55
import org.avni.server.domain.AddressLevel;
66
import org.avni.server.service.ConceptService;
7+
import org.avni.server.util.DateTimeUtil;
8+
import org.avni.server.web.request.EntitySyncStatusContract;
79
import org.avni.server.web.response.LocationApiResponse;
810
import org.avni.server.web.response.ResponsePage;
911
import org.joda.time.DateTime;
@@ -32,9 +34,12 @@ public LocationApiController(LocationRepository locationRepository, ConceptRepos
3234

3335
@RequestMapping(value = "/api/locations", method = RequestMethod.GET)
3436
@PreAuthorize(value = "hasAnyAuthority('user')")
35-
public ResponsePage getLocations(@RequestParam(value = "lastModifiedDateTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) DateTime lastModifiedDateTime,
37+
public ResponsePage getLocations(@RequestParam(value = "lastModifiedDateTime", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) DateTime lastModifiedDateTime,
3638
@RequestParam(value = "now", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) DateTime now,
3739
Pageable pageable) {
40+
if (lastModifiedDateTime == null) {
41+
lastModifiedDateTime = EntitySyncStatusContract.REALLY_OLD_DATE;
42+
}
3843
Page<AddressLevel> addresses = locationRepository.findByLastModifiedDateTimeIsBetweenOrderByLastModifiedDateTimeAscIdAsc(lastModifiedDateTime, now, pageable);
3944
ArrayList<LocationApiResponse> locationApiResponses = new ArrayList<>();
4045
addresses.forEach(addressLevel -> {

avni-server-api/src/main/java/org/avni/server/web/request/EntitySyncStatusContract.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.util.UUID;
1010

1111
public class EntitySyncStatusContract {
12-
private static final DateTime REALLY_OLD_DATE = new DateTime("1900-01-01T00:00:00.000Z");
12+
public static final DateTime REALLY_OLD_DATE = new DateTime("1900-01-01T00:00:00.000Z");
1313
private String uuid;
1414
private String entityName;
1515
private DateTime loadedSince;

0 commit comments

Comments
 (0)