Skip to content

Commit 3177f37

Browse files
committed
Changed all date properties to actual j.u.Date, and provided *AsString getters for XML serialization.
1 parent a4dff30 commit 3177f37

File tree

14 files changed

+110
-57
lines changed

14 files changed

+110
-57
lines changed

dddsample/external/reporting-api/src/main/java/se/citerus/dddsample/reporting/api/CargoDetails.java

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,25 @@
55
import org.apache.commons.lang.builder.ToStringBuilder;
66
import org.apache.commons.lang.builder.ToStringStyle;
77

8+
import javax.xml.bind.annotation.XmlElement;
89
import javax.xml.bind.annotation.XmlRootElement;
10+
import javax.xml.bind.annotation.XmlTransient;
11+
import java.util.Date;
12+
13+
import static se.citerus.dddsample.reporting.api.DateFormats.US_FORMAT;
914

1015
@XmlRootElement
1116
public class CargoDetails {
1217

1318
private String trackingId;
1419
private String receivedIn;
1520
private String finalDestination;
16-
private String arrivalDeadline;
17-
private String eta;
21+
private Date arrivalDeadline;
22+
private Date eta;
1823
private String currentStatus;
1924
private String currentVoyage;
2025
private String currentLocation;
21-
private String lastUpdatedOn;
26+
private Date lastUpdatedOn;
2227

2328
public String getTrackingId() {
2429
return trackingId;
@@ -44,19 +49,33 @@ public void setFinalDestination(String finalDestination) {
4449
this.finalDestination = finalDestination;
4550
}
4651

47-
public String getArrivalDeadline() {
52+
@XmlElement(name = "arrivalDeadline")
53+
@SuppressWarnings("UnusedDeclaration")
54+
public String getArrivalDeadlineAsString() {
55+
return US_FORMAT.format(getArrivalDeadline());
56+
}
57+
58+
@XmlTransient
59+
public Date getArrivalDeadline() {
4860
return arrivalDeadline;
4961
}
5062

51-
public void setArrivalDeadline(String arrivalDeadline) {
63+
public void setArrivalDeadline(Date arrivalDeadline) {
5264
this.arrivalDeadline = arrivalDeadline;
5365
}
5466

55-
public String getEta() {
67+
@XmlElement(name = "eta")
68+
@SuppressWarnings("UnusedDeclaration")
69+
public String getEtaAsString() {
70+
return US_FORMAT.format(getEta());
71+
}
72+
73+
@XmlTransient
74+
public Date getEta() {
5675
return eta;
5776
}
5877

59-
public void setEta(String eta) {
78+
public void setEta(Date eta) {
6079
this.eta = eta;
6180
}
6281

@@ -84,11 +103,18 @@ public void setCurrentLocation(String currentLocation) {
84103
this.currentLocation = currentLocation;
85104
}
86105

87-
public String getLastUpdatedOn() {
106+
@XmlElement(name = "lastUpdatedOn")
107+
@SuppressWarnings("UnusedDeclaration")
108+
public String getLastUpdatedOnAsString() {
109+
return US_FORMAT.format(getLastUpdatedOn());
110+
}
111+
112+
@XmlTransient
113+
public Date getLastUpdatedOn() {
88114
return lastUpdatedOn;
89115
}
90116

91-
public void setLastUpdatedOn(String lastUpdatedOn) {
117+
public void setLastUpdatedOn(Date lastUpdatedOn) {
92118
this.lastUpdatedOn = lastUpdatedOn;
93119
}
94120

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package se.citerus.dddsample.reporting.api;
2+
3+
import java.text.DateFormat;
4+
import java.util.Locale;
5+
6+
class DateFormats {
7+
8+
static final DateFormat US_FORMAT = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US);
9+
10+
}

dddsample/external/reporting-api/src/main/java/se/citerus/dddsample/reporting/api/Handling.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,21 @@
55
import org.apache.commons.lang.builder.ToStringBuilder;
66
import org.apache.commons.lang.builder.ToStringStyle;
77

8+
import javax.xml.bind.annotation.XmlElement;
89
import javax.xml.bind.annotation.XmlRootElement;
10+
import javax.xml.bind.annotation.XmlTransient;
11+
import java.util.Date;
912

13+
import static se.citerus.dddsample.reporting.api.DateFormats.US_FORMAT;
14+
15+
@SuppressWarnings({"UnusedDeclaration"})
1016
@XmlRootElement
1117
public class Handling {
1218

1319
private String type;
1420
private String location;
1521
private String voyage;
16-
private String completedOn;
22+
private Date completedOn;
1723

1824
public String getType() {
1925
return type;
@@ -39,11 +45,17 @@ public void setVoyage(String voyage) {
3945
this.voyage = voyage;
4046
}
4147

42-
public String getCompletedOn() {
48+
@XmlElement(name = "completedOn")
49+
public String getCompletedOnAsString() {
50+
return US_FORMAT.format(getCompletedOn());
51+
}
52+
53+
@XmlTransient
54+
public Date getCompletedOn() {
4355
return completedOn;
4456
}
4557

46-
public void setCompletedOn(String completedOn) {
58+
public void setCompletedOn(Date completedOn) {
4759
this.completedOn = completedOn;
4860
}
4961

dddsample/external/reporting-api/src/main/java/se/citerus/dddsample/reporting/api/VoyageDetails.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
package se.citerus.dddsample.reporting.api;
22

3+
import javax.xml.bind.annotation.XmlElement;
34
import javax.xml.bind.annotation.XmlRootElement;
5+
import javax.xml.bind.annotation.XmlTransient;
6+
import java.util.Date;
47

8+
import static se.citerus.dddsample.reporting.api.DateFormats.US_FORMAT;
9+
10+
@SuppressWarnings("UnusedDeclaration")
511
@XmlRootElement
612
public class VoyageDetails {
713

814
private String voyageNumber;
915
private String nextStop;
10-
private String etaNextStop;
16+
private Date etaNextStop;
1117
private String currentStatus;
1218
private int delayedByMinutes;
13-
private String lastUpdatedOn;
19+
private Date lastUpdatedOn;
1420

1521
public String getVoyageNumber() {
1622
return voyageNumber;
@@ -28,11 +34,17 @@ public void setNextStop(String nextStop) {
2834
this.nextStop = nextStop;
2935
}
3036

31-
public String getEtaNextStop() {
37+
@XmlElement(name = "etaNextStop")
38+
public String getEtaNextStopAsString() {
39+
return US_FORMAT.format(getEtaNextStop());
40+
}
41+
42+
@XmlTransient
43+
public Date getEtaNextStop() {
3244
return etaNextStop;
3345
}
3446

35-
public void setEtaNextStop(String etaNextStop) {
47+
public void setEtaNextStop(Date etaNextStop) {
3648
this.etaNextStop = etaNextStop;
3749
}
3850

@@ -52,11 +64,17 @@ public void setDelayedByMinutes(int delayedByMinutes) {
5264
this.delayedByMinutes = delayedByMinutes;
5365
}
5466

55-
public String getLastUpdatedOn() {
67+
@XmlElement(name = "lastUpdatedOn")
68+
public String getLastUpdatedOnAsString() {
69+
return US_FORMAT.format(getLastUpdatedOn());
70+
}
71+
72+
@XmlTransient
73+
public Date getLastUpdatedOn() {
5674
return lastUpdatedOn;
5775
}
5876

59-
public void setLastUpdatedOn(String lastUpdatedOn) {
77+
public void setLastUpdatedOn(Date lastUpdatedOn) {
6078
this.lastUpdatedOn = lastUpdatedOn;
6179
}
6280

dddsample/external/reporting/src/main/java/com/reporting/ReportingServiceImpl.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@
1111
import se.citerus.dddsample.reporting.api.ReportSubmission;
1212

1313
import javax.ws.rs.core.Response;
14-
import java.text.ParseException;
15-
import java.util.Date;
1614

17-
import static com.reporting.Constants.US_DATETIME;
1815
import static javax.ws.rs.core.Response.ok;
1916
import static javax.ws.rs.core.Response.status;
2017

@@ -32,10 +29,9 @@ public Response getCargoReport(String trackingId, String format) {
3229
CargoReport cargoReport = reportDAO.loadCargoReport(trackingId);
3330
if (cargoReport == null) return status(404).build();
3431

35-
Date date = parseDate(cargoReport.getCargo().getLastUpdatedOn());
3632
return ok(cargoReport).
3733
type("application/" + format).
38-
lastModified(date).
34+
lastModified(cargoReport.getCargo().getLastUpdatedOn()).
3935
build();
4036
}
4137

@@ -46,7 +42,7 @@ public Response getVoyageReport(String voyageNumber, String format) {
4642

4743
return ok(voyageReport).
4844
type("application/" + format).
49-
lastModified(parseDate(voyageReport.getVoyage().getLastUpdatedOn())).
45+
lastModified(voyageReport.getVoyage().getLastUpdatedOn()).
5046
build();
5147
}
5248

@@ -64,14 +60,6 @@ public void submitHandling(String trackingId, Handling handling) {
6460
LOG.info("Stored handling of cargo " + trackingId + ": " + handling);
6561
}
6662

67-
private Date parseDate(String lastUpdatedOn) {
68-
try {
69-
return US_DATETIME.parse(lastUpdatedOn);
70-
} catch (ParseException e) {
71-
throw new RuntimeException(e);
72-
}
73-
}
74-
7563
@SuppressWarnings({"UnusedDeclaration"})
7664
ReportingServiceImpl() {
7765
// Needed by CGLIB

dddsample/external/reporting/src/main/java/com/reporting/db/CargoReportRowMapper.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.reporting.db;
22

3-
import static com.reporting.Constants.US_DATETIME;
43
import com.reporting.reports.CargoReport;
54
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
65
import se.citerus.dddsample.reporting.api.CargoDetails;
@@ -15,13 +14,13 @@ public CargoReport mapRow(ResultSet rs, int rowNum) throws SQLException {
1514
CargoReport cargoReport = new CargoReport();
1615
CargoDetails cargoDetails = new CargoDetails();
1716
cargoDetails.setTrackingId(rs.getString("cargo_tracking_id"));
18-
cargoDetails.setArrivalDeadline(US_DATETIME.format(rs.getTimestamp("arrival_deadline")));
17+
cargoDetails.setArrivalDeadline(rs.getTimestamp("arrival_deadline"));
1918
cargoDetails.setCurrentLocation(rs.getString("current_location"));
2019
cargoDetails.setCurrentStatus(rs.getString("current_status"));
2120
cargoDetails.setCurrentVoyage(rs.getString("current_voyage_number"));
22-
cargoDetails.setEta(US_DATETIME.format(rs.getTimestamp("eta")));
21+
cargoDetails.setEta(rs.getTimestamp("eta"));
2322
cargoDetails.setFinalDestination(rs.getString("destination"));
24-
cargoDetails.setLastUpdatedOn(US_DATETIME.format(rs.getTimestamp("last_updated_on")));
23+
cargoDetails.setLastUpdatedOn(rs.getTimestamp("last_updated_on"));
2524
cargoDetails.setReceivedIn(rs.getString("received_in"));
2625
cargoReport.setCargo(cargoDetails);
2726
return cargoReport;

dddsample/external/reporting/src/main/java/com/reporting/db/HandlingRowMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.reporting.db;
22

3-
import static com.reporting.Constants.US_DATETIME;
43
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
54
import se.citerus.dddsample.reporting.api.Handling;
65

@@ -12,7 +11,7 @@ public class HandlingRowMapper implements ParameterizedRowMapper<Handling> {
1211
@Override
1312
public Handling mapRow(ResultSet rs, int rowNum) throws SQLException {
1413
Handling handling = new Handling();
15-
handling.setCompletedOn(US_DATETIME.format(rs.getTimestamp("completed_on")));
14+
handling.setCompletedOn(rs.getDate("completed_on"));
1615
handling.setLocation(rs.getString("location"));
1716
handling.setType(rs.getString("type"));
1817
handling.setVoyage(rs.getString("voyage_number"));
Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.reporting;
1+
package com.reporting.db;
22

33
import org.apache.commons.io.IOUtils;
44
import org.springframework.beans.factory.InitializingBean;
@@ -7,22 +7,19 @@
77

88
import javax.sql.DataSource;
99

10-
public class Fixture implements InitializingBean {
10+
public class ScriptLoader implements InitializingBean {
1111

1212
private SimpleJdbcTemplate jdbc;
13-
private Resource schema;
14-
private Resource testdata;
13+
private Resource script;
1514

16-
public Fixture(DataSource dataSource, Resource schema, Resource testdata) {
15+
public ScriptLoader(DataSource dataSource, Resource script) {
1716
this.jdbc = new SimpleJdbcTemplate(dataSource);
18-
this.testdata = testdata;
19-
this.schema = schema;
17+
this.script = script;
2018
}
2119

2220
@Override
2321
public void afterPropertiesSet() throws Exception {
24-
jdbc.update(IOUtils.toString(schema.getInputStream()));
25-
jdbc.update(IOUtils.toString(testdata.getInputStream()));
22+
jdbc.update(IOUtils.toString(script.getInputStream()));
2623
}
2724

2825
}

dddsample/external/reporting/src/main/java/com/reporting/db/VoyageReportRowMapper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.reporting.db;
22

3-
import static com.reporting.Constants.US_DATETIME;
43
import com.reporting.reports.VoyageReport;
54
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
65
import se.citerus.dddsample.reporting.api.VoyageDetails;
@@ -16,8 +15,8 @@ public VoyageReport mapRow(ResultSet rs, int rowNum) throws SQLException {
1615
voyageDetails.setVoyageNumber(rs.getString("voyage_number"));
1716
voyageDetails.setCurrentStatus(rs.getString("current_status"));
1817
voyageDetails.setDelayedByMinutes(rs.getInt("delayed_by_min"));
19-
voyageDetails.setEtaNextStop(US_DATETIME.format(rs.getTimestamp("eta_next_stop")));
20-
voyageDetails.setLastUpdatedOn(US_DATETIME.format(rs.getTimestamp("last_updated_on")));
18+
voyageDetails.setEtaNextStop(rs.getTimestamp("eta_next_stop"));
19+
voyageDetails.setLastUpdatedOn(rs.getTimestamp("last_updated_on"));
2120
voyageDetails.setNextStop(rs.getString("next_stop"));
2221
voyageReport.setVoyage(voyageDetails);
2322
return voyageReport;

dddsample/external/reporting/src/main/java/com/reporting/pdf/PDFCargoReportProvider.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import com.lowagie.text.Document;
44
import com.lowagie.text.DocumentException;
5-
import static com.lowagie.text.FontFactory.HELVETICA_BOLD;
6-
import static com.lowagie.text.FontFactory.getFont;
75
import com.lowagie.text.Paragraph;
86
import com.lowagie.text.pdf.PdfPTable;
97
import com.reporting.reports.CargoReport;
@@ -13,6 +11,9 @@
1311
import javax.ws.rs.Produces;
1412
import javax.ws.rs.ext.Provider;
1513

14+
import static com.lowagie.text.FontFactory.HELVETICA_BOLD;
15+
import static com.lowagie.text.FontFactory.getFont;
16+
1617
@Produces("application/pdf")
1718
@Provider
1819
public class PDFCargoReportProvider extends PDFMessageBodyWriter<CargoReport> {
@@ -40,7 +41,7 @@ protected void buildDocument(CargoReport cargoReport, Document document) {
4041
table.addCell(handling.getType());
4142
table.addCell(handling.getLocation());
4243
table.addCell(handling.getVoyage());
43-
table.addCell(handling.getCompletedOn());
44+
table.addCell(handling.getCompletedOnAsString());
4445
}
4546
} catch (DocumentException e) {
4647
throw new RuntimeException(e);

0 commit comments

Comments
 (0)