diff --git a/Dockerfile b/Dockerfile index a15a5d1..ce124d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # syntax=docker/dockerfile:1 -FROM nla-registry-quay-quay.apps.dev-containers.nla.gov.au/nla/ubi8-openjdk-17:latest +FROM nla-registry-quay-quay.apps.dev-containers.nla.gov.au/nla/ubi8-openjdk-21:latest ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} /app/app.jar ENTRYPOINT ["bash", "-c", "java ${JAVA_OPTS} -DfolioConfigMap=\"{ FOLIO_OKAPI_URL: '$FOLIO_OKAPI_URL', FOLIO_TENANT: '$FOLIO_TENANT', FOLIO_USERNAME: '$FOLIO_USERNAME', FOLIO_PASSWORD: '$FOLIO_PASSWORD' }\" -jar /app/app.jar"] diff --git a/Jenkinsfile b/Jenkinsfile index a5b6994..d36f839 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,6 @@ nlaBuild steps: this, applicationName: "folio-pickslip-viewer", - jdk: 'JDK 17', + jdk: 'JDK 21', deployToDev: false, devHostname: "spade", deployToNexus: true, diff --git a/pom.xml b/pom.xml index 63e5b29..ce36702 100644 --- a/pom.xml +++ b/pom.xml @@ -6,16 +6,16 @@ org.springframework.boot spring-boot-starter-parent - 3.3.1 + 3.4.1 au.gov.nla folio-pickslip-viewer - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT folio-pickslip-viewer FOLIO pickslip / request queue viewer - 17 + 21 ${java.version} ${java.version} @@ -62,10 +62,6 @@ org.springframework.boot spring-boot-starter-validation - - org.springframework.boot - spring-boot-starter-web - org.springframework.boot @@ -83,10 +79,6 @@ org.springframework.boot spring-boot-starter-oauth2-authorization-server - org.webjars @@ -122,7 +114,7 @@ au.gov.nla folio-api - 1.0.21-RELEASE + 1.0.23-RELEASE diff --git a/src/main/java/au/gov/nla/pickslip/controller/HomeController.java b/src/main/java/au/gov/nla/pickslip/controller/HomeController.java index ce5747b..e6449a9 100644 --- a/src/main/java/au/gov/nla/pickslip/controller/HomeController.java +++ b/src/main/java/au/gov/nla/pickslip/controller/HomeController.java @@ -13,6 +13,8 @@ import java.io.IOException; import java.security.Principal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -51,15 +53,19 @@ public class HomeController { @Autowired RequestEditService requestEditService; + private static final DateTimeFormatter CS_DOWNLOAD_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"); + @GetMapping("/export/{id}") public void export(@PathVariable String id, HttpServletResponse response) throws IOException { ServletOutputStream sos = response.getOutputStream(); - response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=print.pdf"); PickslipQueues.Pickslip pickslip = pickslipQueues.getPickslipByRequestId(id); + String filename = "cs-" + pickslip.item().barcode() + "-" + CS_DOWNLOAD_DATE_FORMATTER.format( + LocalDateTime.now()) + ".pdf"; + response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename); - pdfResponderService.generate(sos, Collections.singletonList(pickslip)); + pdfResponderService.generate(sos, Collections.singletonList(pickslip), filename); response.flushBuffer(); } @@ -104,8 +110,10 @@ public void bulkExport( HttpServletResponse response) throws IOException { + String filename = "csbulk-" + CS_DOWNLOAD_DATE_FORMATTER.format(LocalDateTime.now()) + ".pdf"; + ServletOutputStream sos = response.getOutputStream(); - response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=print.pdf"); + response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename); var uptoPickslip = this.pickslipQueues.getPickslipByRequestId(upToId); var stackPickslips = @@ -147,7 +155,7 @@ public void bulkExport( .callNumber()))) .toList(); - pdfResponderService.generate(sos, sorted); + pdfResponderService.generate(sos, sorted, filename); response.flushBuffer(); } @@ -204,7 +212,7 @@ private List filterStackLocations(String[] stackCodes) } } } - return (stackList != null && stackList.size() > 0) ? stackList : stackLocations.getStacks(); + return (stackList != null && !stackList.isEmpty()) ? stackList : stackLocations.getStacks(); } @GetMapping("/request/{requestId}/edit") diff --git a/src/main/java/au/gov/nla/pickslip/service/PdfResponderService.java b/src/main/java/au/gov/nla/pickslip/service/PdfResponderService.java index d4051c0..163fb20 100644 --- a/src/main/java/au/gov/nla/pickslip/service/PdfResponderService.java +++ b/src/main/java/au/gov/nla/pickslip/service/PdfResponderService.java @@ -33,7 +33,7 @@ public class PdfResponderService { @Autowired UnicodeFontMap unicodeFontMap; - private Logger log = LoggerFactory.getLogger(this.getClass()); + private final Logger log = LoggerFactory.getLogger(this.getClass()); private ITextRenderer renderer; @@ -68,7 +68,7 @@ public static String generateCode128BarcodeImage(String barcodeText, int width, Code128Writer barcodeWriter = new Code128Writer(); - Map hints = new EnumMap(EncodeHintType.class); + Map hints = new EnumMap<>(EncodeHintType.class); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); hints.put(EncodeHintType.MARGIN, 4); @@ -80,7 +80,7 @@ public static String generateCode128BarcodeImage(String barcodeText, int width, return Base64.getEncoder().encodeToString(bos.toByteArray()); } - public synchronized void generate(OutputStream os, List pickslipList) { + public synchronized void generate(OutputStream os, List pickslipList, String filename) { Context ctx = new Context(LocaleContextHolder.getLocale()); @@ -114,6 +114,7 @@ public synchronized void generate(OutputStream os, List ctx.setVariable("instance", instances.get(pickslip.instance().id())); ctx.setVariable("pickslip", pickslip); + ctx.setVariable("printFilename", filename); ctx.setVariable("unicodeFontMap", unicodeFontMap); String htmlContent = this.templateEngine.process("pdf/print_pdf", ctx); diff --git a/src/main/resources/templates/pdf/print_pdf.html b/src/main/resources/templates/pdf/print_pdf.html index bcd31f8..bd0fe1e 100644 --- a/src/main/resources/templates/pdf/print_pdf.html +++ b/src/main/resources/templates/pdf/print_pdf.html @@ -106,7 +106,8 @@
- + +
Access conditions:
Terms of use:
Terms of use:
Ref: