diff --git a/src/main/java/cc/ryanc/halo/model/entity/Option.java b/src/main/java/cc/ryanc/halo/model/entity/Option.java index 29f2d550f..800de1788 100644 --- a/src/main/java/cc/ryanc/halo/model/entity/Option.java +++ b/src/main/java/cc/ryanc/halo/model/entity/Option.java @@ -1,13 +1,14 @@ package cc.ryanc.halo.model.entity; +import cc.ryanc.halo.model.enums.OptionSource; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.ToString; import org.hibernate.annotations.SQLDelete; import org.hibernate.annotations.Where; import javax.persistence.*; -import lombok.NoArgsConstructor; /** * Setting entity. @@ -43,8 +44,8 @@ public class Option extends BaseEntity { /** * source,default is system */ - @Column(name = "option_source", columnDefinition = "varchar(127) default 'system'") - private String optionSource; + @Column(name = "option_source", columnDefinition = "int default 0") + private OptionSource source; public Option(String optionKey, String optionValue) { this.optionKey = optionKey; @@ -55,6 +56,9 @@ public class Option extends BaseEntity { public void prePersist() { super.prePersist(); id = null; - optionSource = "system"; + + if (source == null) { + source = OptionSource.SYSTEM; + } } } diff --git a/src/main/java/cc/ryanc/halo/model/enums/OptionSource.java b/src/main/java/cc/ryanc/halo/model/enums/OptionSource.java new file mode 100644 index 000000000..81314eeb1 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/enums/OptionSource.java @@ -0,0 +1,23 @@ +package cc.ryanc.halo.model.enums; + +/** + * Option source. + * + * @author johnniang + * @date 4/1/19 + */ +public enum OptionSource implements ValueEnum { + + SYSTEM(0), + THEME(1); + + private final int value; + + OptionSource(int value) { + this.value = value; + } + + @Override + public Integer getValue() { + return null; + }} diff --git a/src/main/java/cc/ryanc/halo/model/enums/converter/OptionSourceConverter.java b/src/main/java/cc/ryanc/halo/model/enums/converter/OptionSourceConverter.java new file mode 100644 index 000000000..47061121f --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/enums/converter/OptionSourceConverter.java @@ -0,0 +1,19 @@ +package cc.ryanc.halo.model.enums.converter; + +import cc.ryanc.halo.model.enums.OptionSource; + +import javax.persistence.Converter; + +/** + * OptionSource converter. + * + * @author johnniang + * @date 4/1/19 + */ +@Converter(autoApply = true) +public class OptionSourceConverter extends AbstractConverter { + + public OptionSourceConverter() { + super(OptionSource.class); + } +} diff --git a/src/main/java/cc/ryanc/halo/service/OptionService.java b/src/main/java/cc/ryanc/halo/service/OptionService.java index e76174b01..7d419e63a 100755 --- a/src/main/java/cc/ryanc/halo/service/OptionService.java +++ b/src/main/java/cc/ryanc/halo/service/OptionService.java @@ -3,6 +3,7 @@ package cc.ryanc.halo.service; import cc.ryanc.halo.exception.MissingPropertyException; import cc.ryanc.halo.model.dto.OptionOutputDTO; import cc.ryanc.halo.model.entity.Option; +import cc.ryanc.halo.model.enums.OptionSource; import cc.ryanc.halo.model.enums.PropertyEnum; import cc.ryanc.halo.model.enums.ValueEnum; import cc.ryanc.halo.model.params.OptionParam; @@ -36,7 +37,7 @@ public interface OptionService extends CrudService { * @param value value * @param source source */ - void save(@NonNull String key, String value, String source); + void save(@NonNull String key, String value, @NonNull OptionSource source); /** * Save multiple options @@ -44,7 +45,7 @@ public interface OptionService extends CrudService { * @param options options * @param source source */ - void save(@NonNull Map options, String source); + void save(@NonNull Map options, @NonNull OptionSource source); /** * SAve multiple options @@ -52,7 +53,7 @@ public interface OptionService extends CrudService { * @param optionParams option params * @param source source */ - void save(List optionParams, String source); + void save(List optionParams, @NonNull OptionSource source); /** * Saves blog properties. @@ -60,7 +61,7 @@ public interface OptionService extends CrudService { * @param properties blog properties * @param source source */ - void saveProperties(@NonNull Map properties, String source); + void saveProperties(@NonNull Map properties, @NonNull OptionSource source); /** * Get all options diff --git a/src/main/java/cc/ryanc/halo/service/impl/OptionServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/OptionServiceImpl.java index 705a00e2a..6b1227161 100644 --- a/src/main/java/cc/ryanc/halo/service/impl/OptionServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/OptionServiceImpl.java @@ -3,10 +3,7 @@ package cc.ryanc.halo.service.impl; import cc.ryanc.halo.exception.MissingPropertyException; import cc.ryanc.halo.model.dto.OptionOutputDTO; import cc.ryanc.halo.model.entity.Option; -import cc.ryanc.halo.model.enums.BlogProperties; -import cc.ryanc.halo.model.enums.PropertyEnum; -import cc.ryanc.halo.model.enums.QnYunProperties; -import cc.ryanc.halo.model.enums.ValueEnum; +import cc.ryanc.halo.model.enums.*; import cc.ryanc.halo.model.params.OptionParam; import cc.ryanc.halo.repository.OptionRepository; import cc.ryanc.halo.service.OptionService; @@ -50,7 +47,7 @@ public class OptionServiceImpl extends AbstractCrudService impl * @param source source */ @Override - public void save(String key, String value, String source) { + public void save(String key, String value, OptionSource source) { Assert.hasText(key, "Option key must not be blank"); if (StringUtils.isBlank(value)) { @@ -68,7 +65,7 @@ public class OptionServiceImpl extends AbstractCrudService impl Option anOption = new Option(); anOption.setOptionKey(key); anOption.setOptionValue(value); - anOption.setOptionSource(source); + anOption.setSource(source); return anOption; }); @@ -83,7 +80,7 @@ public class OptionServiceImpl extends AbstractCrudService impl * @param source source */ @Override - public void save(Map options, String source) { + public void save(Map options, OptionSource source) { if (CollectionUtils.isEmpty(options)) { return; } @@ -92,7 +89,7 @@ public class OptionServiceImpl extends AbstractCrudService impl } @Override - public void save(List optionParams, String source) { + public void save(List optionParams, OptionSource source) { if (CollectionUtils.isEmpty(optionParams)) { return; } @@ -102,7 +99,7 @@ public class OptionServiceImpl extends AbstractCrudService impl } @Override - public void saveProperties(Map properties, String source) { + public void saveProperties(Map properties, OptionSource source) { if (CollectionUtils.isEmpty(properties)) { return; } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/api/OptionController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/api/OptionController.java index fd702d183..8ed06b2d3 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/api/OptionController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/api/OptionController.java @@ -1,6 +1,7 @@ package cc.ryanc.halo.web.controller.admin.api; import cc.ryanc.halo.model.dto.OptionOutputDTO; +import cc.ryanc.halo.model.enums.OptionSource; import cc.ryanc.halo.model.params.OptionParam; import cc.ryanc.halo.service.OptionService; import io.swagger.annotations.ApiOperation; @@ -33,7 +34,7 @@ public class OptionController { @PostMapping("saving") public void saveOptions(@Valid @RequestBody List optionParams) { - optionService.save(optionParams, "system"); + optionService.save(optionParams, OptionSource.SYSTEM); } @GetMapping("map_view") @@ -45,6 +46,6 @@ public class OptionController { @PostMapping("map_view/saving") @ApiOperation("Saves options by option map") public void saveOptionsWithMapView(@RequestBody Map optionMap) { - optionService.save(optionMap, "system"); + optionService.save(optionMap, OptionSource.SYSTEM); } } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java index 40c4874cb..18a8c86d1 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java @@ -1,6 +1,7 @@ package cc.ryanc.halo.web.controller.admin.api; import cc.ryanc.halo.model.enums.BlogProperties; +import cc.ryanc.halo.model.enums.OptionSource; import cc.ryanc.halo.model.support.Theme; import cc.ryanc.halo.service.OptionService; import cc.ryanc.halo.service.ThemeService; @@ -61,7 +62,7 @@ public class ThemeController { public void active(@RequestParam(name = "themeName", defaultValue = "anatole") String themeName) throws TemplateModelException { Map properties = new HashMap<>(1); properties.put(BlogProperties.THEME, themeName); - optionService.saveProperties(properties, "system"); + optionService.saveProperties(properties, OptionSource.SYSTEM); BaseContentController.THEME = themeName; configuration.setSharedVariable("themeName", themeName); configuration.setSharedVariable("options", optionService.listOptions()); diff --git a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java index 47f26d962..9f3e4ede7 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java @@ -4,6 +4,7 @@ import cc.ryanc.halo.exception.BadRequestException; import cc.ryanc.halo.model.entity.*; import cc.ryanc.halo.model.enums.AttachmentType; import cc.ryanc.halo.model.enums.BlogProperties; +import cc.ryanc.halo.model.enums.OptionSource; import cc.ryanc.halo.model.params.InstallParam; import cc.ryanc.halo.model.support.BaseResponse; import cc.ryanc.halo.service.*; @@ -175,7 +176,7 @@ public class InstallController { properties.put(BlogProperties.ATTACHMENT_TYPE, AttachmentType.LOCAL.getValue().toString()); // Create properties - optionService.saveProperties(properties, "system"); + optionService.saveProperties(properties, OptionSource.SYSTEM); } // /**