Category System Edit form

Jens Pelzetter 2020-11-13 10:17:07 +01:00
parent df9d854b4a
commit 851f905302
5 changed files with 36 additions and 11 deletions

View File

@ -48,4 +48,8 @@ public class Message {
return messageType; return messageType;
} }
public String getMessageTypeClass() {
return messageType.toString().toLowerCase();
}
} }

View File

@ -22,18 +22,16 @@ import org.libreccm.categorization.Domain;
import org.libreccm.categorization.DomainOwnership; import org.libreccm.categorization.DomainOwnership;
import org.libreccm.ui.Message; import org.libreccm.ui.Message;
import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
@ -68,8 +66,11 @@ public class CategorySystemDetailsModel {
private final List<Message> messages; private final List<Message> messages;
private Set<String> invalidFields;
public CategorySystemDetailsModel() { public CategorySystemDetailsModel() {
messages = new ArrayList<>(); messages = new ArrayList<>();
invalidFields = new HashSet<>();
} }
public long getCategorySystemId() { public long getCategorySystemId() {
@ -96,8 +97,8 @@ public class CategorySystemDetailsModel {
return domainKey; return domainKey;
} }
protected void setDomainKey(final String uuid) { protected void setDomainKey(final String domainKey) {
this.uuid = uuid; this.domainKey = domainKey;
} }
public String getUri() { public String getUri() {
@ -156,6 +157,18 @@ public class CategorySystemDetailsModel {
messages.add(message); messages.add(message);
} }
public Set<String> getInvalidFields() {
return Collections.unmodifiableSet(invalidFields);
}
protected void addInvalidField(final String invalidField) {
invalidFields.add(invalidField);
}
protected void setInvalidFields(final Set<String> invalidFields) {
this.invalidFields = new HashSet<>(invalidFields);
}
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
protected void setCategorySystem(final Domain domain) { protected void setCategorySystem(final Domain domain) {
Objects.requireNonNull(domain); Objects.requireNonNull(domain);

View File

@ -89,8 +89,6 @@ public class CategorySystemFormController {
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
public String createCategorySystem() { public String createCategorySystem() {
final Domain domain = domainManager.createDomain(domainKey, domainKey);
if (!isValidUri()) { if (!isValidUri()) {
categorySystemDetailsModel.setDomainKey(domainKey); categorySystemDetailsModel.setDomainKey(domainKey);
categorySystemDetailsModel.setUri(uri); categorySystemDetailsModel.setUri(uri);
@ -102,11 +100,14 @@ public class CategorySystemFormController {
adminMessages.get("categorysystems.form.errors.uri_invalid"), adminMessages.get("categorysystems.form.errors.uri_invalid"),
MessageType.PRIMARY) MessageType.PRIMARY)
); );
categorySystemDetailsModel.addInvalidField("uri");
return "org/libreccm/ui/admin/categories/categorysystem-form.xhtml";
} }
final Domain domain = domainManager.createDomain(domainKey, domainKey);
domain.setUri(uri); domain.setUri(uri);
domain.setVersion(version); domain.setVersion(version);
if (released == null) { if (released == null || released.isEmpty()) {
domain.setReleased(null); domain.setReleased(null);
} else { } else {
domain.setReleased(convertReleased()); domain.setReleased(convertReleased());
@ -158,13 +159,14 @@ public class CategorySystemFormController {
"categorysystems.form.errors.uri_invalid"), "categorysystems.form.errors.uri_invalid"),
MessageType.PRIMARY) MessageType.PRIMARY)
); );
categorySystemDetailsModel.addInvalidField("uri");
return "org/libreccm/ui/admin/categories/categorysystem-form.xhtml"; return "org/libreccm/ui/admin/categories/categorysystem-form.xhtml";
} }
final Domain domain = result.get(); final Domain domain = result.get();
domain.setDomainKey(domainKey); domain.setDomainKey(domainKey);
domain.setUri(uri); domain.setUri(uri);
domain.setVersion(version); domain.setVersion(version);
if (released == null) { if (released == null || released.isEmpty()) {
domain.setReleased(null); domain.setReleased(null);
} else { } else {
domain.setReleased(convertReleased()); domain.setReleased(convertReleased());

View File

@ -36,6 +36,12 @@
<div class="container"> <div class="container">
<h1>#{CategorySystemDetailsModel.new ? AdminMessages['categorysystems.new.label'] : AdminMessages.getMessage('categorysystems.edit.label', [CategorySystemDetailsModel.domainKey])}</h1> <h1>#{CategorySystemDetailsModel.new ? AdminMessages['categorysystems.new.label'] : AdminMessages.getMessage('categorysystems.edit.label', [CategorySystemDetailsModel.domainKey])}</h1>
<c:forEach items="#{CategorySystemDetailsModel.messages}" var="message">
<div class="alert alert-#{message.messageTypeClass}" role="alert">
#{message.message}
</div>
</c:forEach>
<form action="#{CategorySystemDetailsModel.new ? mvc.uri('CategorySystemFormController#createCategorySystem') : mvc.uri('CategorySystemFormController#updateCategorySystem', {'categorySystemIdentifier': CategorySystemDetailsModel.domainKey })}" <form action="#{CategorySystemDetailsModel.new ? mvc.uri('CategorySystemFormController#createCategorySystem') : mvc.uri('CategorySystemFormController#updateCategorySystem', {'categorySystemIdentifier': CategorySystemDetailsModel.domainKey })}"
method="post"> method="post">
<div class="form-group"> <div class="form-group">

View File

@ -1,4 +1,4 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:h="http://xmlns.jcp.org/jsf/html"