This commit is contained in:
Keiichi Watanabe 2016-08-08 15:55:45 +09:00
parent f987fa3d70
commit 046b638600
2 changed files with 85 additions and 11 deletions

View file

@ -248,6 +248,24 @@ public class AdminSearchlistAction extends FessAdminAction {
if (!fessConfig.validateIndexRequiredFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
}
if (!fessConfig.validateIndexArrayFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
}
if (!fessConfig.validateIndexDateFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
}
if (!fessConfig.validateIndexIntegerFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
}
if (!fessConfig.validateIndexLongFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
}
if (!fessConfig.validateIndexFloatFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
}
if (!fessConfig.validateIndexDoubleFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
}
verifyToken(() -> asEditHtml());
getDoc(form).ifPresent(
entity -> {
@ -279,6 +297,24 @@ public class AdminSearchlistAction extends FessAdminAction {
if (!fessConfig.validateIndexRequiredFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.docId), () -> asEditHtml());
}
if (!fessConfig.validateIndexArrayFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.docId), () -> asEditHtml());
}
if (!fessConfig.validateIndexDateFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.docId), () -> asEditHtml());
}
if (!fessConfig.validateIndexIntegerFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.docId), () -> asEditHtml());
}
if (!fessConfig.validateIndexLongFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.docId), () -> asEditHtml());
}
if (!fessConfig.validateIndexFloatFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.docId), () -> asEditHtml());
}
if (!fessConfig.validateIndexDoubleFields(form.doc)) {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.docId), () -> asEditHtml());
}
verifyToken(() -> asEditHtml());
getDoc(form).ifPresent(
entity -> {

View file

@ -48,6 +48,11 @@ import org.lastaflute.job.LaJob;
import org.lastaflute.job.subsidiary.ConcurrentExec;
import org.lastaflute.web.util.LaRequestUtil;
import org.lastaflute.web.validation.RequiredValidator;
import org.lastaflute.web.validation.theme.typed.DoubleTypeValidator;
import org.lastaflute.web.validation.theme.typed.FloatTypeValidator;
import org.lastaflute.web.validation.theme.typed.IntegerTypeValidator;
import org.lastaflute.web.validation.theme.typed.LocalDateTimeTypeValidator;
import org.lastaflute.web.validation.theme.typed.LongTypeValidator;
public interface FessProp {
@ -1064,6 +1069,12 @@ public interface FessProp {
return fieldSet;
}
public default boolean validateIndexArrayFields(final Map<String, Object> source) {
return stream(getIndexAdminArrayFields().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim())
.allMatch(s -> source.get(s) instanceof String[] || source.get(s) instanceof List));
}
String getIndexAdminDateFields();
public default Set<String> getIndexAdminDateFieldSet() {
@ -1078,6 +1089,13 @@ public interface FessProp {
return fieldSet;
}
public default boolean validateIndexDateFields(final Map<String, Object> source) {
final LocalDateTimeTypeValidator dateValidator = new LocalDateTimeTypeValidator();
return stream(getIndexAdminDateFields().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim())
.allMatch(s -> dateValidator.isValid((String) source.get(s), null)));
}
String getIndexAdminIntegerFields();
public default Set<String> getIndexAdminIntegerFieldSet() {
@ -1092,6 +1110,13 @@ public interface FessProp {
return fieldSet;
}
public default boolean validateIndexIntegerFields(final Map<String, Object> source) {
final IntegerTypeValidator integerValidator = new IntegerTypeValidator();
return stream(getIndexAdminIntegerFields().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim())
.allMatch(s -> integerValidator.isValid((String) source.get(s), null)));
}
String getIndexAdminLongFields();
public default Set<String> getIndexAdminLongFieldSet() {
@ -1106,6 +1131,13 @@ public interface FessProp {
return fieldSet;
}
public default boolean validateIndexLongFields(final Map<String, Object> source) {
final LongTypeValidator longValidator = new LongTypeValidator();
return stream(getIndexAdminLongFields().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim())
.allMatch(s -> longValidator.isValid((String) source.get(s), null)));
}
String getIndexAdminFloatFields();
public default Set<String> getIndexAdminFloatFieldSet() {
@ -1120,6 +1152,13 @@ public interface FessProp {
return fieldSet;
}
public default boolean validateIndexFloatFields(final Map<String, Object> source) {
final FloatTypeValidator floatValidator = new FloatTypeValidator();
return stream(getIndexAdminFloatFields().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim())
.allMatch(s -> floatValidator.isValid((String) source.get(s), null)));
}
String getIndexAdminDoubleFields();
public default Set<String> getIndexAdminDoubleFieldSet() {
@ -1134,6 +1173,13 @@ public interface FessProp {
return fieldSet;
}
public default boolean validateIndexDoubleFields(final Map<String, Object> source) {
final DoubleTypeValidator doubleValidator = new DoubleTypeValidator();
return stream(getIndexAdminDoubleFields().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim())
.allMatch(s -> doubleValidator.isValid((String) source.get(s), null)));
}
public default Map<String, Object> convertToEditableDoc(final Map<String, Object> source) {
final Set<String> arrayFieldSet = getIndexAdminArrayFieldSet();
@ -1174,6 +1220,7 @@ public interface FessProp {
public default Map<String, Object> convertToStorableDoc(final Map<String, Object> source) {
final RequiredValidator requiredValidator = new RequiredValidator();
final Set<String> arrayFieldSet = getIndexAdminArrayFieldSet();
final Set<String> dateFieldSet = getIndexAdminDateFieldSet();
final Set<String> integerFieldSet = getIndexAdminIntegerFieldSet();
@ -1184,7 +1231,7 @@ public interface FessProp {
return source
.entrySet()
.stream()
.filter(e -> isNonEmptyValue(e.getValue()))
.filter(e -> requiredValidator.isValid(e.getValue(), null))
.map(e -> {
final String key = e.getKey();
Object value = e.getValue();
@ -1207,7 +1254,7 @@ public interface FessProp {
return new Pair<String, Object>(key, value);
}).collect(Collectors.toMap(Pair::getFirst, Pair::getSecond));
}
String getIndexAdminRequiredFields();
public default boolean validateIndexRequiredFields(final Map<String, Object> source) {
@ -1217,13 +1264,4 @@ public interface FessProp {
.allMatch(s -> requiredValidator.isValid(source.get(s), null)));
}
public static boolean isNonEmptyValue(final Object value) {
if (value == null) {
return false;
}
if (value instanceof String && StringUtil.isEmpty((String) value)) {
return false;
}
return true;
}
}