CategorySystem edit form
parent
edc1de573c
commit
a995c66ab3
|
|
@ -152,6 +152,10 @@
|
|||
<groupId>commons-lang</groupId>
|
||||
<artifactId>commons-lang</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-validator</groupId>
|
||||
<artifactId>commons-validator</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>oro</groupId>
|
||||
|
|
|
|||
|
|
@ -22,8 +22,14 @@ import org.libreccm.categorization.Domain;
|
|||
import org.libreccm.categorization.DomainOwnership;
|
||||
import org.libreccm.ui.Message;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
|
@ -49,6 +55,10 @@ public class CategorySystemDetailsModel {
|
|||
|
||||
private String uri;
|
||||
|
||||
private String version;
|
||||
|
||||
private String released;
|
||||
|
||||
private Map<String, String> title;
|
||||
|
||||
private Map<String, String> description;
|
||||
|
|
@ -65,6 +75,10 @@ public class CategorySystemDetailsModel {
|
|||
return categorySystemId;
|
||||
}
|
||||
|
||||
protected void setCategorySystemId(final long categorySystemId) {
|
||||
this.categorySystemId = categorySystemId;
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return String.format("ID-%d", categorySystemId);
|
||||
}
|
||||
|
|
@ -73,14 +87,55 @@ public class CategorySystemDetailsModel {
|
|||
return uuid;
|
||||
}
|
||||
|
||||
protected void setUuid(final String uuid) {
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public String getDomainKey() {
|
||||
return domainKey;
|
||||
}
|
||||
|
||||
protected void setDomainKey(final String uuid) {
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public String getUri() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
protected void setUri(final String uri) {
|
||||
this.uri = uri;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
protected void setVersion(final String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getReleased() {
|
||||
return released;
|
||||
}
|
||||
|
||||
protected void setReleased(final String released) {
|
||||
this.released = released;
|
||||
}
|
||||
|
||||
protected void setReleased(final Date released) {
|
||||
if (released == null) {
|
||||
this.released = "";
|
||||
} else {
|
||||
this.released = DateTimeFormatter.ISO_DATE.format(
|
||||
LocalDateTime.ofInstant(
|
||||
Instant.ofEpochMilli(released.getTime()),
|
||||
ZoneOffset.UTC
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, String> getTitle() {
|
||||
return Collections.unmodifiableMap(title);
|
||||
}
|
||||
|
|
@ -113,6 +168,17 @@ public class CategorySystemDetailsModel {
|
|||
uuid = domain.getUuid();
|
||||
domainKey = domain.getDomainKey();
|
||||
uri = domain.getUri();
|
||||
version = domain.getVersion();
|
||||
if (domain.getReleased() == null) {
|
||||
released = "";
|
||||
} else {
|
||||
released = DateTimeFormatter.ISO_DATE_TIME.format(
|
||||
LocalDateTime.ofInstant(
|
||||
Instant.ofEpochMilli(domain.getReleased().getTime()),
|
||||
ZoneOffset.UTC
|
||||
)
|
||||
);
|
||||
}
|
||||
title = domain
|
||||
.getTitle()
|
||||
.getValues()
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package org.libreccm.ui.admin.categories;
|
||||
|
||||
import org.apache.commons.validator.routines.UrlValidator;
|
||||
import org.libreccm.api.Identifier;
|
||||
import org.libreccm.api.IdentifierParser;
|
||||
import org.libreccm.categorization.Domain;
|
||||
|
|
@ -30,7 +31,18 @@ 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;
|
||||
|
|
@ -72,6 +84,12 @@ public class CategorySystemFormController {
|
|||
@FormParam("uri")
|
||||
private String uri;
|
||||
|
||||
@FormParam("version")
|
||||
private String version;
|
||||
|
||||
@FormParam("released")
|
||||
private String released;
|
||||
|
||||
@POST
|
||||
@Path("/new")
|
||||
@AuthorizationRequired
|
||||
|
|
@ -81,7 +99,26 @@ public class CategorySystemFormController {
|
|||
|
||||
final Domain domain = domainManager.createDomain(domainKey, domainKey);
|
||||
|
||||
if (!isValidUri(uri)) {
|
||||
categorySystemDetailsModel.setDomainKey(domainKey);
|
||||
categorySystemDetailsModel.setUri(uri);
|
||||
categorySystemDetailsModel.setVersion(version);
|
||||
categorySystemDetailsModel.setReleased(released);
|
||||
|
||||
categorySystemDetailsModel.addMessage(
|
||||
new Message(
|
||||
adminMessages.get("categorysystems.form.errors.uri_invalid"),
|
||||
MessageType.PRIMARY)
|
||||
);
|
||||
}
|
||||
|
||||
domain.setUri(uri);
|
||||
domain.setVersion(version);
|
||||
if (released == null) {
|
||||
domain.setReleased(null);
|
||||
} else {
|
||||
domain.setReleased(convertReleased());
|
||||
}
|
||||
domainRepository.save(domain);
|
||||
|
||||
return "redirect:/categorymanager/categorysystems";
|
||||
|
|
@ -117,13 +154,34 @@ public class CategorySystemFormController {
|
|||
}
|
||||
|
||||
if (result.isPresent()) {
|
||||
if (!isValidUri(uri)) {
|
||||
categorySystemDetailsModel.setDomainKey(domainKey);
|
||||
categorySystemDetailsModel.setUri(uri);
|
||||
categorySystemDetailsModel.setVersion(version);
|
||||
categorySystemDetailsModel.setReleased(released);
|
||||
|
||||
categorySystemDetailsModel.addMessage(
|
||||
new Message(
|
||||
adminMessages.get(
|
||||
"categorysystems.form.errors.uri_invalid"),
|
||||
MessageType.PRIMARY)
|
||||
);
|
||||
}
|
||||
final Domain domain = result.get();
|
||||
domain.setDomainKey(domainKey);
|
||||
domain.setUri(uri);
|
||||
domain.setVersion(version);
|
||||
if (released == null) {
|
||||
domain.setReleased(null);
|
||||
} else {
|
||||
domain.setReleased(convertReleased());
|
||||
}
|
||||
domainRepository.save(domain);
|
||||
|
||||
categorySystemDetailsModel.setCategorySystem(domain);
|
||||
return "org/libreccm/ui/admin/categories/categorysystem-details.xhtml";
|
||||
return String.format(
|
||||
"redirect:/categorymanager/categorysystems/ID-%d/details",
|
||||
domain.getObjectId()
|
||||
);
|
||||
} else {
|
||||
categorySystemDetailsModel.addMessage(
|
||||
new Message(
|
||||
|
|
@ -138,4 +196,18 @@ 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 boolean isValidUri(final String uriStr) {
|
||||
final UrlValidator urlValidator = new UrlValidator();
|
||||
return urlValidator.isValid(uri);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,6 +57,22 @@
|
|||
#{CategorySystemDetailsModel.uri}
|
||||
</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>
|
||||
#{AdminMessages['categorysystems.details.version']}
|
||||
</dt>
|
||||
<dd>
|
||||
#{CategorySystemDetailsModel.version}
|
||||
</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>
|
||||
#{AdminMessages['categorysystems.details.released']}
|
||||
</dt>
|
||||
<dd>
|
||||
#{CategorySystemDetailsModel.released}
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
<div class="mb-4">
|
||||
<a class="btn btn-primary"
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
<div class="container">
|
||||
<h1>#{CategorySystemDetailsModel.new ? AdminMessages['categorysystems.new.label'] : AdminMessages.getMessage('categorysystems.edit.label', [CategorySystemDetailsModel.domainKey])}</h1>
|
||||
|
||||
<form action="#{CategorySystemDetailsModel.new ? mvc.uri('CategorySystemFormController#createCategorySystem') : mvc.uri('CategorySystemFormController#updateCategorySystem', {'categorySystemIdentifier': CategoryDetailsModel.domainKey })}"
|
||||
<form action="#{CategorySystemDetailsModel.new ? mvc.uri('CategorySystemFormController#createCategorySystem') : mvc.uri('CategorySystemFormController#updateCategorySystem', {'categorySystemIdentifier': CategorySystemDetailsModel.domainKey })}"
|
||||
method="post">
|
||||
<div class="form-group">
|
||||
<label for="domainKey">
|
||||
|
|
@ -45,6 +45,7 @@
|
|||
<input aria-describedby="domainKey-help"
|
||||
class="form-control"
|
||||
name="domainKey"
|
||||
required="true"
|
||||
type="text"
|
||||
value="#{CategorySystemDetailsModel.domainKey}" />
|
||||
<small class="form-text text-muted"
|
||||
|
|
@ -58,7 +59,7 @@
|
|||
</label>
|
||||
<input aria-describedby="uri-help"
|
||||
class="form-control"
|
||||
name="domainKey"
|
||||
name="uri"
|
||||
type="text"
|
||||
value="#{CategorySystemDetailsModel.uri}"
|
||||
/>
|
||||
|
|
@ -67,13 +68,43 @@
|
|||
#{AdminMessages['categorysystems.form.uri.help']}
|
||||
</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="version">
|
||||
#{AdminMessages['categorysystems.form.version.label']}
|
||||
</label>
|
||||
<input aria-describedby="version-help"
|
||||
class="form-control"
|
||||
name="version"
|
||||
type="text"
|
||||
value="#{CategorySystemDetailsModel.version}"
|
||||
/>
|
||||
<small class="form-text text-muted"
|
||||
id="version-help">
|
||||
#{AdminMessages['categorysystems.form.version.help']}
|
||||
</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="released">
|
||||
#{AdminMessages['categorysystems.form.released.label']}
|
||||
</label>
|
||||
<input aria-describedby="released-help"
|
||||
class="form-control"
|
||||
name="released"
|
||||
type="date"
|
||||
value="#{CategorySystemDetailsModel.released}"
|
||||
/>
|
||||
<small class="form-text text-muted"
|
||||
id="version-help">
|
||||
#{AdminMessages['categorysystems.form.relased.help']}
|
||||
</small>
|
||||
</div>
|
||||
<a class="btn btn-warning"
|
||||
href="#{mvc.uri('CategorySystemsController#getCategorySystems')}">
|
||||
#{AdminMessages['categorysystems.form.buttons.cancel']}
|
||||
</a>
|
||||
<button class="btn btn-success" type="submit">
|
||||
<c:choose>
|
||||
<c:when test="#{UserDetailsModel.newUser}">
|
||||
<c:when test="#{CategorySystemDetailsModel.new}">
|
||||
#{AdminMessages['categorysystems.form.buttons.create']}
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
|
|
|
|||
|
|
@ -262,7 +262,7 @@ categorysystems.details.title=Categorysystem {0} Details
|
|||
categorysystems.details.id=ID
|
||||
categorysystems.details.uuid=UUID
|
||||
categorysystems.details.domainKey=Domain Key
|
||||
categorysystems.details.uri=URI Stub
|
||||
categorysystems.details.uri=URI
|
||||
categorysystems.details.title.heading=Localized Title
|
||||
categorysystems.details.title.table.headings.locale=Language
|
||||
categorysystems.details.title.table.headings.value=Localized Title
|
||||
|
|
@ -287,3 +287,10 @@ categorysystems.details.owners.context=Context
|
|||
categorysystems.details.owners.heading=Used by
|
||||
categorysystems.details.owners.none=Not in use by any application
|
||||
categorysystems.details.edit=Edit
|
||||
categorysystems.form.version.label=Version
|
||||
categorysystems.form.version.help=Version of the category system
|
||||
categorysystems.form.relased.help=Date of release
|
||||
categorysystems.form.released.label=Released
|
||||
categorysystems.details.version=Version
|
||||
categorysystems.details.released=Released
|
||||
categorysystems.form.errors.uri_invalid=URI is invalid
|
||||
|
|
|
|||
|
|
@ -262,7 +262,7 @@ categorysystems.details.title=Kategoriensystem {0} Details
|
|||
categorysystems.details.id=ID
|
||||
categorysystems.details.uuid=UUID
|
||||
categorysystems.details.domainKey=Domain Key
|
||||
categorysystems.details.uri=URI Stub
|
||||
categorysystems.details.uri=URI
|
||||
categorysystems.details.title.heading=Lokalisierter Titel
|
||||
categorysystems.details.title.table.headings.locale=Sprache
|
||||
categorysystems.details.title.table.headings.value=Lokalisierter Titel
|
||||
|
|
@ -287,3 +287,10 @@ categorysystems.details.owners.context=Context
|
|||
categorysystems.details.owners.heading=Verwendet von
|
||||
categorysystems.details.owners.none=Wird von keiner Anwendung verwendet
|
||||
categorysystems.details.edit=Bearbeiten
|
||||
categorysystems.form.version.label=Version
|
||||
categorysystems.form.version.help=Version des Kategoriensystems
|
||||
categorysystems.form.relased.help=Datum der Freigabe
|
||||
categorysystems.form.released.label=Released
|
||||
categorysystems.details.version=Version
|
||||
categorysystems.details.released=Freigegeben
|
||||
categorysystems.form.errors.uri_invalid=URI ist nicht valide
|
||||
|
|
|
|||
5
pom.xml
5
pom.xml
|
|
@ -693,6 +693,11 @@
|
|||
<artifactId>commons-primitives</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-validator</groupId>
|
||||
<artifactId>commons-validator</artifactId>
|
||||
<version>1.7</version>
|
||||
</dependency>
|
||||
<!-- Apache Commons libraries end -->
|
||||
|
||||
<!--<dependency>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
<skin>
|
||||
<groupId>org.apache.maven.skins</groupId>
|
||||
<artifactId>maven-fluido-skin</artifactId>
|
||||
<version>1.5</version>
|
||||
<version>1.9</version>
|
||||
</skin>
|
||||
|
||||
</project>
|
||||
|
|
|
|||
Loading…
Reference in New Issue