mirror of https://github.com/halo-dev/halo
Complete option default value and type feature
parent
f893294076
commit
4819a9824f
|
@ -18,7 +18,6 @@ public class SheetVisitEventListener extends AbstractVisitEventListener {
|
||||||
|
|
||||||
@Async
|
@Async
|
||||||
@EventListener
|
@EventListener
|
||||||
|
|
||||||
public void onSheetVisitEvent(SheetVisitEvent event) throws InterruptedException {
|
public void onSheetVisitEvent(SheetVisitEvent event) throws InterruptedException {
|
||||||
handleVisitEvent(event);
|
handleVisitEvent(event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package run.halo.app.model.params;
|
package run.halo.app.model.params;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import run.halo.app.model.enums.AttachmentType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attachment query params.
|
* Attachment query params.
|
||||||
|
@ -18,5 +19,5 @@ public class AttachmentQuery {
|
||||||
|
|
||||||
private String mediaType;
|
private String mediaType;
|
||||||
|
|
||||||
private String attachmentType;
|
private AttachmentType attachmentType;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,35 +2,40 @@ package run.halo.app.model.properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AliYun properties.
|
* AliYun properties.
|
||||||
|
*
|
||||||
* @author MyFaith
|
* @author MyFaith
|
||||||
* @date 2019-04-04 00:00:56
|
* @date 2019-04-04 00:00:56
|
||||||
*/
|
*/
|
||||||
public enum AliYunProperties implements PropertyEnum {
|
public enum AliYunProperties implements PropertyEnum {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aliyun oss endpoint.
|
* Aliyun oss endpoint.
|
||||||
*/
|
*/
|
||||||
OSS_ENDPOINT("oss_aliyun_endpoint", String.class),
|
OSS_ENDPOINT("oss_aliyun_endpoint", String.class, ""),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aliyun oss bucket name.
|
* Aliyun oss bucket name.
|
||||||
*/
|
*/
|
||||||
OSS_BUCKET_NAME("oss_aliyun_bucket_name", String.class),
|
OSS_BUCKET_NAME("oss_aliyun_bucket_name", String.class, ""),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aliyun oss access key.
|
* Aliyun oss access key.
|
||||||
*/
|
*/
|
||||||
OSS_ACCESS_KEY("oss_aliyun_access_key", String.class),
|
OSS_ACCESS_KEY("oss_aliyun_access_key", String.class, ""),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aliyun oss access secret.
|
* Aliyun oss access secret.
|
||||||
*/
|
*/
|
||||||
OSS_ACCESS_SECRET("oss_aliyun_access_secret", String.class);
|
OSS_ACCESS_SECRET("oss_aliyun_access_secret", String.class, "");
|
||||||
|
|
||||||
private String value;
|
private final String value;
|
||||||
private Class<?> type;
|
|
||||||
|
|
||||||
AliYunProperties(String value, Class<?> type) {
|
private final Class<?> type;
|
||||||
|
|
||||||
|
private final String defaultValue;
|
||||||
|
|
||||||
|
AliYunProperties(String value, Class<?> type, String defaultValue) {
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
if (!PropertyEnum.isSupportedType(type)) {
|
if (!PropertyEnum.isSupportedType(type)) {
|
||||||
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
||||||
}
|
}
|
||||||
|
@ -44,6 +49,11 @@ public enum AliYunProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package run.halo.app.model.properties;
|
package run.halo.app.model.properties;
|
||||||
|
|
||||||
import run.halo.app.model.enums.AttachmentType;
|
|
||||||
import run.halo.app.model.enums.AttachmentType;
|
import run.halo.app.model.enums.AttachmentType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -11,15 +10,18 @@ import run.halo.app.model.enums.AttachmentType;
|
||||||
*/
|
*/
|
||||||
public enum AttachmentProperties implements PropertyEnum {
|
public enum AttachmentProperties implements PropertyEnum {
|
||||||
|
|
||||||
ATTACHMENT_TYPE("attachment_type", AttachmentType.class);
|
ATTACHMENT_TYPE("attachment_type", AttachmentType.class, AttachmentType.LOCAL.name());
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
AttachmentProperties(String value, Class<?> type) {
|
private final String defaultValue;
|
||||||
|
|
||||||
|
AttachmentProperties(String value, Class<?> type, String defaultValue) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -27,7 +29,15 @@ public enum AttachmentProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
}}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -9,38 +9,41 @@ public enum BlogProperties implements PropertyEnum {
|
||||||
/**
|
/**
|
||||||
* Blog locale.
|
* Blog locale.
|
||||||
*/
|
*/
|
||||||
BLOG_LOCALE("blog_locale", String.class),
|
BLOG_LOCALE("blog_locale", String.class, ""),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Blog title.
|
* Blog title.
|
||||||
*/
|
*/
|
||||||
BLOG_TITLE("blog_title", String.class),
|
BLOG_TITLE("blog_title", String.class, ""),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Blog logo.
|
* Blog logo.
|
||||||
*/
|
*/
|
||||||
BLOG_LOGO("blog_logo", String.class),
|
BLOG_LOGO("blog_logo", String.class, ""),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Blog url.
|
* Blog url.
|
||||||
*/
|
*/
|
||||||
BLOG_URL("blog_url", String.class),
|
BLOG_URL("blog_url", String.class, ""),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Blog favicon.
|
* Blog favicon.
|
||||||
*/
|
*/
|
||||||
BLOG_FAVICON("blog_favicon", String.class),
|
BLOG_FAVICON("blog_favicon", String.class, ""),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Blog footer info.
|
* Blog footer info.
|
||||||
*/
|
*/
|
||||||
BLOG_FOOTER_INFO("blog_footer_info", String.class);
|
BLOG_FOOTER_INFO("blog_footer_info", String.class, "");
|
||||||
|
|
||||||
private String value;
|
private final String value;
|
||||||
|
|
||||||
private Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
BlogProperties(String value, Class<?> type) {
|
private final String defaultValue;
|
||||||
|
|
||||||
|
BlogProperties(String value, Class<?> type, String defaultValue) {
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
if (!PropertyEnum.isSupportedType(type)) {
|
if (!PropertyEnum.isSupportedType(type)) {
|
||||||
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
||||||
}
|
}
|
||||||
|
@ -64,4 +67,9 @@ public enum BlogProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,31 +8,34 @@ package run.halo.app.model.properties;
|
||||||
*/
|
*/
|
||||||
public enum CommentProperties implements PropertyEnum {
|
public enum CommentProperties implements PropertyEnum {
|
||||||
|
|
||||||
GAVATAR_DEFAULT("comment_gavatar_default", String.class),
|
GAVATAR_DEFAULT("comment_gavatar_default", String.class, ""),
|
||||||
|
|
||||||
NEW_NEED_CHECK("comment_new_need_check", Boolean.class),
|
NEW_NEED_CHECK("comment_new_need_check", Boolean.class, ""),
|
||||||
|
|
||||||
NEW_NOTICE("comment_new_notice", Boolean.class),
|
NEW_NOTICE("comment_new_notice", Boolean.class, ""),
|
||||||
|
|
||||||
PASS_NOTICE("comment_pass_notice", Boolean.class),
|
PASS_NOTICE("comment_pass_notice", Boolean.class, ""),
|
||||||
|
|
||||||
REPLY_NOTICE("comment_reply_notice", Boolean.class),
|
REPLY_NOTICE("comment_reply_notice", Boolean.class, ""),
|
||||||
|
|
||||||
API_ENABLED("comment_api_enabled", Boolean.class),
|
API_ENABLED("comment_api_enabled", Boolean.class, ""),
|
||||||
|
|
||||||
PAGE_SIZE("comment_page_size", Integer.class),
|
PAGE_SIZE("comment_page_size", Integer.class, ""),
|
||||||
|
|
||||||
CONTENT_PLACEHOLDER("comment_content_placeholder", String.class),
|
CONTENT_PLACEHOLDER("comment_content_placeholder", String.class, ""),
|
||||||
|
|
||||||
CUSTOM_STYLE("comment_custom_style", String.class);
|
CUSTOM_STYLE("comment_custom_style", String.class, "");
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
|
private final String defaultValue;
|
||||||
|
|
||||||
CommentProperties(String value, Class<?> type) {
|
CommentProperties(String value, Class<?> type, String defaultValue) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,6 +43,11 @@ public enum CommentProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
|
|
|
@ -8,25 +8,28 @@ package run.halo.app.model.properties;
|
||||||
*/
|
*/
|
||||||
public enum EmailProperties implements PropertyEnum {
|
public enum EmailProperties implements PropertyEnum {
|
||||||
|
|
||||||
HOST("email_host", String.class),
|
HOST("email_host", String.class, ""),
|
||||||
|
|
||||||
PROTOCOL("email_protocol", String.class),
|
PROTOCOL("email_protocol", String.class, ""),
|
||||||
|
|
||||||
SSL_PORT("email_ssl_port", Integer.class),
|
SSL_PORT("email_ssl_port", Integer.class, ""),
|
||||||
|
|
||||||
USERNAME("email_username", String.class),
|
USERNAME("email_username", String.class, ""),
|
||||||
|
|
||||||
PASSWORD("email_password", String.class),
|
PASSWORD("email_password", String.class, ""),
|
||||||
|
|
||||||
FROM_NAME("email_from_name", String.class),
|
FROM_NAME("email_from_name", String.class, ""),
|
||||||
|
|
||||||
ENABLED("email_enabled", Boolean.class);
|
ENABLED("email_enabled", Boolean.class, "");
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
EmailProperties(String value, Class<?> type) {
|
private final String defaultValue;
|
||||||
|
|
||||||
|
EmailProperties(String value, Class<?> type, String defaultValue) {
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
if (!PropertyEnum.isSupportedType(type)) {
|
if (!PropertyEnum.isSupportedType(type)) {
|
||||||
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
||||||
}
|
}
|
||||||
|
@ -40,7 +43,13 @@ public enum EmailProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -8,20 +8,22 @@ package run.halo.app.model.properties;
|
||||||
*/
|
*/
|
||||||
public enum OtherProperties implements PropertyEnum {
|
public enum OtherProperties implements PropertyEnum {
|
||||||
|
|
||||||
API_ENABLED("api_enabled", Boolean.class),
|
API_ENABLED("api_enabled", Boolean.class, ""),
|
||||||
|
|
||||||
API_TOKEN("api_token", String.class),
|
API_TOKEN("api_token", String.class, ""),
|
||||||
|
|
||||||
STATISTICS_CODE("statistics_code", String.class),
|
STATISTICS_CODE("statistics_code", String.class, "");
|
||||||
;
|
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
OtherProperties(String value, Class<?> type) {
|
private final String defaultValue;
|
||||||
|
|
||||||
|
OtherProperties(String value, Class<?> type, String defaultValue) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -29,6 +31,11 @@ public enum OtherProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
|
|
|
@ -1,33 +1,41 @@
|
||||||
package run.halo.app.model.properties;
|
package run.halo.app.model.properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Post properties.
|
||||||
|
*
|
||||||
* @author johnniang
|
* @author johnniang
|
||||||
* @date 4/1/19
|
* @date 4/1/19
|
||||||
*/
|
*/
|
||||||
public enum PostProperties implements PropertyEnum {
|
public enum PostProperties implements PropertyEnum {
|
||||||
|
|
||||||
SUMMARY_LENGTH("post_summary_length", Integer.class),
|
SUMMARY_LENGTH("post_summary_length", Integer.class, ""),
|
||||||
|
|
||||||
RSS_PAGE_SIZE("rss_page_size", Integer.class),
|
RSS_PAGE_SIZE("rss_page_size", Integer.class, "20"),
|
||||||
|
|
||||||
INDEX_PAGE_SIZE("post_index_page_size", Integer.class),
|
INDEX_PAGE_SIZE("post_index_page_size", Integer.class, "10");
|
||||||
;
|
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
PostProperties(String value, Class<?> type) {
|
private final String defaultValue;
|
||||||
|
|
||||||
|
PostProperties(String value, Class<?> type, String defaultValue) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<?> getType() {
|
public Class<?> getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
|
|
|
@ -8,20 +8,23 @@ package run.halo.app.model.properties;
|
||||||
*/
|
*/
|
||||||
public enum PrimaryProperties implements PropertyEnum {
|
public enum PrimaryProperties implements PropertyEnum {
|
||||||
|
|
||||||
IS_INSTALLED("is_installed", Boolean.class),
|
IS_INSTALLED("is_installed", Boolean.class, ""),
|
||||||
|
|
||||||
THEME("theme", String.class),
|
THEME("theme", String.class, ""),
|
||||||
|
|
||||||
BIRTHDAY("birthday", Long.class),
|
BIRTHDAY("birthday", Long.class, ""),
|
||||||
;
|
;
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
PrimaryProperties(String value, Class<?> type) {
|
private final String defaultValue;
|
||||||
|
|
||||||
|
PrimaryProperties(String value, Class<?> type, String defaultValue) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -29,7 +32,13 @@ public enum PrimaryProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,10 +1,17 @@
|
||||||
package run.halo.app.model.properties;
|
package run.halo.app.model.properties;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.lang.NonNull;
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import run.halo.app.model.enums.ValueEnum;
|
import run.halo.app.model.enums.ValueEnum;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Property enum.
|
* Property enum.
|
||||||
*
|
*
|
||||||
|
@ -16,18 +23,15 @@ public interface PropertyEnum extends ValueEnum<String> {
|
||||||
/**
|
/**
|
||||||
* Converts to value with corresponding type
|
* Converts to value with corresponding type
|
||||||
*
|
*
|
||||||
* @param value string value must not be null
|
* @param value string value must not be blank
|
||||||
* @param type property value type must not be null
|
* @param type property value type must not be null
|
||||||
* @param <T> property value type
|
* @param <T> property value type
|
||||||
* @return property value
|
* @return property value
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
static <T> T convertTo(@NonNull String value, @NonNull Class<T> type) {
|
static <T> T convertTo(@NonNull String value, @NonNull Class<T> type) {
|
||||||
Assert.hasText(value, "Property value must not be blank");
|
Assert.hasText(value, "Value must not be null");
|
||||||
|
Assert.notNull(type, "Type must not be null");
|
||||||
if (!isSupportedType(type)) {
|
|
||||||
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type.isAssignableFrom(String.class)) {
|
if (type.isAssignableFrom(String.class)) {
|
||||||
return (T) value;
|
return (T) value;
|
||||||
|
@ -65,6 +69,36 @@ public interface PropertyEnum extends ValueEnum<String> {
|
||||||
throw new UnsupportedOperationException("Unsupported convention for blog property type:" + type.getName() + " provided");
|
throw new UnsupportedOperationException("Unsupported convention for blog property type:" + type.getName() + " provided");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts to value with corresponding type
|
||||||
|
*
|
||||||
|
* @param value value
|
||||||
|
* @param propertyEnum property enum must not be null
|
||||||
|
* @return property value
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
static Object convertTo(@Nullable String value, @NonNull PropertyEnum propertyEnum) {
|
||||||
|
Assert.notNull(propertyEnum, "Property enum must not be null");
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(value)) {
|
||||||
|
// Set default value
|
||||||
|
value = propertyEnum.defaultValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (propertyEnum.getType().isAssignableFrom(Enum.class)) {
|
||||||
|
Class<Enum> type = (Class<Enum>) propertyEnum.getType();
|
||||||
|
Enum result = convertToEnum(value, type);
|
||||||
|
return result != null ? result : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return convertTo(value, propertyEnum.getType());
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Return value
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts to enum.
|
* Converts to enum.
|
||||||
*
|
*
|
||||||
|
@ -107,10 +141,45 @@ public interface PropertyEnum extends ValueEnum<String> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Map<String, PropertyEnum> getValuePropertyEnumMap() {
|
||||||
|
// Get all properties
|
||||||
|
List<Class<? extends PropertyEnum>> propertyEnumClasses = new LinkedList<>();
|
||||||
|
propertyEnumClasses.add(AliYunProperties.class);
|
||||||
|
propertyEnumClasses.add(AttachmentProperties.class);
|
||||||
|
propertyEnumClasses.add(BlogProperties.class);
|
||||||
|
propertyEnumClasses.add(CommentProperties.class);
|
||||||
|
propertyEnumClasses.add(EmailProperties.class);
|
||||||
|
propertyEnumClasses.add(OtherProperties.class);
|
||||||
|
propertyEnumClasses.add(PostProperties.class);
|
||||||
|
propertyEnumClasses.add(PrimaryProperties.class);
|
||||||
|
propertyEnumClasses.add(QnYunProperties.class);
|
||||||
|
propertyEnumClasses.add(SeoProperties.class);
|
||||||
|
propertyEnumClasses.add(UpYunProperties.class);
|
||||||
|
|
||||||
|
Map<String, PropertyEnum> result = new HashMap<>();
|
||||||
|
|
||||||
|
propertyEnumClasses.forEach(propertyEnumClass -> {
|
||||||
|
PropertyEnum[] propertyEnums = propertyEnumClass.getEnumConstants();
|
||||||
|
|
||||||
|
for (PropertyEnum propertyEnum : propertyEnums) {
|
||||||
|
result.put(propertyEnum.getValue(), propertyEnum);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get property type.
|
* Get property type.
|
||||||
*
|
*
|
||||||
* @return property type
|
* @return property type
|
||||||
*/
|
*/
|
||||||
Class<?> getType();
|
Class<?> getType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default value.
|
||||||
|
*
|
||||||
|
* @return default value
|
||||||
|
*/
|
||||||
|
String defaultValue();
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,23 +8,26 @@ package run.halo.app.model.properties;
|
||||||
*/
|
*/
|
||||||
public enum QnYunProperties implements PropertyEnum {
|
public enum QnYunProperties implements PropertyEnum {
|
||||||
|
|
||||||
ZONE("oss_qiniu_zone", String.class),
|
ZONE("oss_qiniu_zone", String.class, ""),
|
||||||
|
|
||||||
ACCESS_KEY("oss_qiniu_access_key", String.class),
|
ACCESS_KEY("oss_qiniu_access_key", String.class, ""),
|
||||||
|
|
||||||
SECRET_KEY("oss_qiniu_secret_key", String.class),
|
SECRET_KEY("oss_qiniu_secret_key", String.class, ""),
|
||||||
|
|
||||||
DOMAIN("oss_qiniu_domain", String.class),
|
DOMAIN("oss_qiniu_domain", String.class, ""),
|
||||||
|
|
||||||
BUCKET("oss_qiniu_bucket", String.class),
|
BUCKET("oss_qiniu_bucket", String.class, ""),
|
||||||
|
|
||||||
SMALL_URL("oss_qiniu_small_url", String.class);
|
SMALL_URL("oss_qiniu_small_url", String.class, "");
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
|
private final String defaultValue;
|
||||||
|
|
||||||
QnYunProperties(String value, Class<?> type) {
|
QnYunProperties(String value, Class<?> type, String defaultValue) {
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
if (!PropertyEnum.isSupportedType(type)) {
|
if (!PropertyEnum.isSupportedType(type)) {
|
||||||
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
||||||
}
|
}
|
||||||
|
@ -43,4 +46,9 @@ public enum QnYunProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,27 +8,30 @@ package run.halo.app.model.properties;
|
||||||
*/
|
*/
|
||||||
public enum SeoProperties implements PropertyEnum {
|
public enum SeoProperties implements PropertyEnum {
|
||||||
|
|
||||||
KEYWORDS("seo_keywords", String.class),
|
KEYWORDS("seo_keywords", String.class, ""),
|
||||||
|
|
||||||
DESCRIPTION("seo_description", String.class),
|
DESCRIPTION("seo_description", String.class, ""),
|
||||||
|
|
||||||
BAIDU_TOKEN("seo_baidu_token", String.class),
|
BAIDU_TOKEN("seo_baidu_token", String.class, ""),
|
||||||
|
|
||||||
VERIFICATION_BAIDU("seo_verification_baidu", String.class),
|
VERIFICATION_BAIDU("seo_verification_baidu", String.class, ""),
|
||||||
|
|
||||||
VERIFICATION_GOOGLE("seo_verification_google", String.class),
|
VERIFICATION_GOOGLE("seo_verification_google", String.class, ""),
|
||||||
|
|
||||||
VERIFICATION_BING("seo_verification_bing", String.class),
|
VERIFICATION_BING("seo_verification_bing", String.class, ""),
|
||||||
|
|
||||||
VERIFICATION_QIHU("seo_verification_qihu", String.class);
|
VERIFICATION_QIHU("seo_verification_qihu", String.class, "");
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
|
private final String defaultValue;
|
||||||
|
|
||||||
SeoProperties(String value, Class<?> type) {
|
SeoProperties(String value, Class<?> type, String defaultValue) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -36,6 +39,11 @@ public enum SeoProperties implements PropertyEnum {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
|
|
|
@ -8,23 +8,26 @@ package run.halo.app.model.properties;
|
||||||
*/
|
*/
|
||||||
public enum UpYunProperties implements PropertyEnum {
|
public enum UpYunProperties implements PropertyEnum {
|
||||||
|
|
||||||
OSS_SOURCE("oss_upyun_source", String.class),
|
OSS_SOURCE("oss_upyun_source", String.class, ""),
|
||||||
|
|
||||||
OSS_PASSWORD("oss_upyun_password", String.class),
|
OSS_PASSWORD("oss_upyun_password", String.class, ""),
|
||||||
|
|
||||||
OSS_BUCKET("oss_upyun_bucket", String.class),
|
OSS_BUCKET("oss_upyun_bucket", String.class, ""),
|
||||||
|
|
||||||
OSS_DOMAIN("oss_upyun_domain", String.class),
|
OSS_DOMAIN("oss_upyun_domain", String.class, ""),
|
||||||
|
|
||||||
OSS_OPERATOR("oss_upyun_operator", String.class),
|
OSS_OPERATOR("oss_upyun_operator", String.class, ""),
|
||||||
|
|
||||||
OSS_SMALL_URL("oss_upyun_small_url", String.class);
|
OSS_SMALL_URL("oss_upyun_small_url", String.class, "");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
private Class<?> type;
|
private Class<?> type;
|
||||||
|
|
||||||
UpYunProperties(String value, Class<?> type) {
|
private final String defaultValue;
|
||||||
|
|
||||||
|
UpYunProperties(String value, Class<?> type, String defaultValue) {
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
if (!PropertyEnum.isSupportedType(type)) {
|
if (!PropertyEnum.isSupportedType(type)) {
|
||||||
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
throw new IllegalArgumentException("Unsupported blog property type: " + type);
|
||||||
}
|
}
|
||||||
|
@ -33,12 +36,16 @@ public enum UpYunProperties implements PropertyEnum {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<?> getType() {
|
public Class<?> getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String defaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return value;
|
return value;
|
||||||
|
|
|
@ -15,7 +15,6 @@ import run.halo.app.model.entity.Attachment;
|
||||||
import run.halo.app.model.enums.AttachmentType;
|
import run.halo.app.model.enums.AttachmentType;
|
||||||
import run.halo.app.model.params.AttachmentQuery;
|
import run.halo.app.model.params.AttachmentQuery;
|
||||||
import run.halo.app.model.properties.AttachmentProperties;
|
import run.halo.app.model.properties.AttachmentProperties;
|
||||||
import run.halo.app.model.properties.PropertyEnum;
|
|
||||||
import run.halo.app.model.support.UploadResult;
|
import run.halo.app.model.support.UploadResult;
|
||||||
import run.halo.app.repository.AttachmentRepository;
|
import run.halo.app.repository.AttachmentRepository;
|
||||||
import run.halo.app.service.AttachmentService;
|
import run.halo.app.service.AttachmentService;
|
||||||
|
@ -74,8 +73,8 @@ public class AttachmentServiceImpl extends AbstractCrudService<Attachment, Integ
|
||||||
predicates.add(criteriaBuilder.equal(root.get("mediaType"), attachmentQuery.getMediaType()));
|
predicates.add(criteriaBuilder.equal(root.get("mediaType"), attachmentQuery.getMediaType()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(attachmentQuery.getAttachmentType() != null){
|
if (attachmentQuery.getAttachmentType() != null) {
|
||||||
predicates.add(criteriaBuilder.equal(root.get("type"), PropertyEnum.convertToEnum(attachmentQuery.getAttachmentType(),AttachmentType.class)));
|
predicates.add(criteriaBuilder.equal(root.get("type"), attachmentQuery.getAttachmentType()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attachmentQuery.getKeyword() != null) {
|
if (attachmentQuery.getKeyword() != null) {
|
||||||
|
|
|
@ -22,10 +22,7 @@ import run.halo.app.service.base.AbstractCrudService;
|
||||||
import run.halo.app.utils.HaloUtils;
|
import run.halo.app.utils.HaloUtils;
|
||||||
import run.halo.app.utils.ServiceUtils;
|
import run.halo.app.utils.ServiceUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -44,6 +41,8 @@ public class OptionServiceImpl extends AbstractCrudService<Option, Integer> impl
|
||||||
|
|
||||||
private final StringCacheStore cacheStore;
|
private final StringCacheStore cacheStore;
|
||||||
|
|
||||||
|
private final Map<String, PropertyEnum> propertyEnumMap;
|
||||||
|
|
||||||
public OptionServiceImpl(OptionRepository optionRepository,
|
public OptionServiceImpl(OptionRepository optionRepository,
|
||||||
ApplicationContext applicationContext,
|
ApplicationContext applicationContext,
|
||||||
StringCacheStore cacheStore) {
|
StringCacheStore cacheStore) {
|
||||||
|
@ -51,6 +50,8 @@ public class OptionServiceImpl extends AbstractCrudService<Option, Integer> impl
|
||||||
this.optionRepository = optionRepository;
|
this.optionRepository = optionRepository;
|
||||||
this.applicationContext = applicationContext;
|
this.applicationContext = applicationContext;
|
||||||
this.cacheStore = cacheStore;
|
this.cacheStore = cacheStore;
|
||||||
|
|
||||||
|
propertyEnumMap = Collections.unmodifiableMap(PropertyEnum.getValuePropertyEnumMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -125,7 +126,37 @@ public class OptionServiceImpl extends AbstractCrudService<Option, Integer> impl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> listOptions() {
|
public Map<String, Object> listOptions() {
|
||||||
return ServiceUtils.convertToMap(listAll(), Option::getKey, Option::getValue);
|
List<Option> options = listAll();
|
||||||
|
|
||||||
|
Set<String> keys = ServiceUtils.fetchProperty(options, Option::getKey);
|
||||||
|
|
||||||
|
Map<String, Object> result = ServiceUtils.convertToMap(options, Option::getKey, option -> {
|
||||||
|
String key = option.getKey();
|
||||||
|
|
||||||
|
PropertyEnum propertyEnum = propertyEnumMap.get(key);
|
||||||
|
|
||||||
|
if (propertyEnum == null) {
|
||||||
|
return option.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
return PropertyEnum.convertTo(option.getValue(), propertyEnum);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add default property
|
||||||
|
propertyEnumMap.keySet()
|
||||||
|
.stream()
|
||||||
|
.filter(key -> !keys.contains(key))
|
||||||
|
.forEach(key -> {
|
||||||
|
PropertyEnum propertyEnum = propertyEnumMap.get(key);
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(propertyEnum.defaultValue())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
result.put(key, PropertyEnum.convertTo(propertyEnum.defaultValue(), propertyEnum));
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package run.halo.app.model.properties;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author johnniang
|
||||||
|
* @date 19-4-25
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class PropertyEnumTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getValuePropertyMapTest() {
|
||||||
|
Map<String, PropertyEnum> result = PropertyEnum.getValuePropertyEnumMap();
|
||||||
|
|
||||||
|
log.debug(result.toString());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue