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: | |