Use java.time.LocalDate instead of java.util.Date for Domain#released

Jens Pelzetter 2020-11-13 07:46:24 +01:00
parent 176f2e52cc
commit df9d854b4a
7 changed files with 46 additions and 58 deletions

View File

@ -35,6 +35,8 @@ import org.libreccm.categorization.DomainManager;
import org.libreccm.categorization.DomainRepository;
import org.libreccm.cdi.utils.CdiUtil;
import java.time.LocalDate;
import static com.arsdigita.ui.admin.AdminUiConstants.*;
/**
@ -187,7 +189,8 @@ class DomainForm extends Form {
}
final String versionData = data.getString(VERSION);
final java.util.Date releasedData = (java.util.Date) data.get(
RELEASED);
RELEASED
);
final String rootCategoryNameData = data.getString(
ROOT_CATEGORY_NAME);
@ -207,7 +210,7 @@ class DomainForm extends Form {
domain.setDomainKey(domainKeyData);
domain.setUri(domainUriData);
domain.setVersion(versionData);
domain.setReleased(releasedData);
domain.setReleased(LocalDate.from(releasedData.toInstant()));
domainRepository.save(domain);
}

View File

@ -42,6 +42,9 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.libreccm.imexport.Exportable;
import java.text.DateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@ -196,9 +199,9 @@ public class Domain extends CcmObject implements Serializable, Exportable {
* A timestamp for the release date of the {@code Domain}.
*/
@Column(name = "RELEASED")
@Temporal(TemporalType.TIMESTAMP)
// @Temporal(TemporalType.TIMESTAMP)
@XmlElement(name = "released", namespace = CAT_XML_NS)
private Date released;
private LocalDate released;
/**
* The root category of the domain.
@ -267,20 +270,12 @@ public class Domain extends CcmObject implements Serializable, Exportable {
this.version = version;
}
public Date getReleased() {
if (released == null) {
return null;
} else {
return new Date(released.getTime());
}
public LocalDate getReleased() {
return released;
}
public void setReleased(final Date released) {
if (released == null) {
this.released = null;
} else {
this.released = new Date(released.getTime());
}
public void setReleased(final LocalDate released) {
this.released = released;
}
public Category getRoot() {
@ -399,18 +394,24 @@ public class Domain extends CcmObject implements Serializable, Exportable {
@Override
public String toString(final String data) {
final String releasedStr;
if (released == null) {
releasedStr = "";
} else {
releasedStr = DateTimeFormatter.ISO_DATE.format(released);
}
return String.format(
", domainKey = \"%s\", "
+ "uri = \"%s\", "
+ "title = \"%s\", "
+ "version = \"%s\", "
+ "released = %tF %<tT, "
+ "released = %s, "
+ "root = \"%s\"%s",
domainKey,
Objects.toString(uri),
Objects.toString(title),
version,
released,
releasedStr,
Objects.toString(root),
data
);

View File

@ -23,6 +23,7 @@ import org.libreccm.categorization.DomainOwnership;
import org.libreccm.ui.Message;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
@ -123,16 +124,11 @@ public class CategorySystemDetailsModel {
this.released = released;
}
protected void setReleased(final Date released) {
protected void setReleased(final LocalDate released) {
if (released == null) {
this.released = "";
} else {
this.released = DateTimeFormatter.ISO_DATE.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(released.getTime()),
ZoneOffset.UTC
)
);
this.released = DateTimeFormatter.ISO_DATE.format(released);
}
}
@ -172,12 +168,9 @@ public class CategorySystemDetailsModel {
if (domain.getReleased() == null) {
released = "";
} else {
released = DateTimeFormatter.ISO_DATE_TIME.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(domain.getReleased().getTime()),
ZoneOffset.UTC
)
);
released = DateTimeFormatter.ISO_DATE_TIME
.withZone(ZoneOffset.systemDefault())
.format(domain.getReleased());
}
title = domain
.getTitle()

View File

@ -31,18 +31,10 @@ import org.libreccm.ui.Message;
import org.libreccm.ui.MessageType;
import org.libreccm.ui.admin.AdminMessages;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;
import java.util.Arrays;
import java.util.Date;
import java.util.Optional;
import javax.enterprise.context.RequestScoped;
@ -99,7 +91,7 @@ public class CategorySystemFormController {
final Domain domain = domainManager.createDomain(domainKey, domainKey);
if (!isValidUri(uri)) {
if (!isValidUri()) {
categorySystemDetailsModel.setDomainKey(domainKey);
categorySystemDetailsModel.setUri(uri);
categorySystemDetailsModel.setVersion(version);
@ -154,7 +146,7 @@ public class CategorySystemFormController {
}
if (result.isPresent()) {
if (!isValidUri(uri)) {
if (!isValidUri()) {
categorySystemDetailsModel.setDomainKey(domainKey);
categorySystemDetailsModel.setUri(uri);
categorySystemDetailsModel.setVersion(version);
@ -166,6 +158,7 @@ public class CategorySystemFormController {
"categorysystems.form.errors.uri_invalid"),
MessageType.PRIMARY)
);
return "org/libreccm/ui/admin/categories/categorysystem-form.xhtml";
}
final Domain domain = result.get();
domain.setDomainKey(domainKey);
@ -196,16 +189,14 @@ public class CategorySystemFormController {
}
}
private Date convertReleased() {
final String param = String.format("%sT00:00:00", released);
return Date.from(
LocalDateTime
.parse(param, DateTimeFormatter.ISO_DATE_TIME)
.toInstant(ZoneOffset.UTC)
private LocalDate convertReleased() {
return LocalDate.parse(
released,
DateTimeFormatter.ISO_DATE.withZone(ZoneOffset.systemDefault())
);
}
private boolean isValidUri(final String uriStr) {
private boolean isValidUri() {
final UrlValidator urlValidator = new UrlValidator();
return urlValidator.isValid(uri);
}

View File

@ -66,7 +66,7 @@ public class CategorySystemsTableModel {
if (domain.getReleased() != null) {
row.setReleased(
DateTimeFormatter.ISO_DATE_TIME.format(
domain.getReleased().toInstant()
domain.getReleased()
)
);
}

View File

@ -54,7 +54,7 @@
create table CCM_CORE.CATEGORY_DOMAINS (
DOMAIN_KEY varchar(255) not null,
RELEASED timestamp,
RELEASED date,
URI varchar(1024),
VERSION varchar(255),
OBJECT_ID bigint not null,

View File

@ -48,7 +48,7 @@
create table CCM_CORE.CATEGORY_DOMAINS (
DOMAIN_KEY varchar(255) not null,
RELEASED timestamp,
RELEASED date,
URI varchar(1024),
VERSION varchar(255),
OBJECT_ID int8 not null,