From 72a2a0647bf956967495760b1a212f789619610e Mon Sep 17 00:00:00 2001 From: johnniang Date: Fri, 26 Apr 2019 10:13:27 +0800 Subject: [PATCH] Refactor tag dto conversion --- .../controller/admin/api/TagController.java | 23 ++++++++-------- .../java/run/halo/app/service/TagService.java | 14 ++++++++-- .../app/service/impl/CategoryServiceImpl.java | 3 +-- .../halo/app/service/impl/TagServiceImpl.java | 26 +++++++++++++------ 4 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/main/java/run/halo/app/controller/admin/api/TagController.java b/src/main/java/run/halo/app/controller/admin/api/TagController.java index 276ad71e0..18571483d 100644 --- a/src/main/java/run/halo/app/controller/admin/api/TagController.java +++ b/src/main/java/run/halo/app/controller/admin/api/TagController.java @@ -1,6 +1,7 @@ package run.halo.app.controller.admin.api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Sort; import org.springframework.data.web.SortDefault; @@ -36,7 +37,9 @@ public class TagController { } @GetMapping + @ApiOperation("Lists tag") public List listTags(@SortDefault(sort = "updateTime", direction = Sort.Direction.DESC) Sort sort, + @ApiParam("Return more information(post count) if it is set") @RequestParam(name = "more", required = false, defaultValue = "false") Boolean more) { if (more) { return postTagService.listTagWithCountDtos(sort); @@ -45,6 +48,7 @@ public class TagController { } @PostMapping + @ApiOperation("Creates tag") public TagDTO createTag(@Valid @RequestBody TagParam tagParam) { // Convert to tag Tag tag = tagParam.convertTo(); @@ -52,7 +56,7 @@ public class TagController { log.debug("Tag to be created: [{}]", tag); // Create and convert - return new TagDTO().convertFrom(tagService.create(tag)); + return tagService.convertTo(tagService.create(tag)); } /** @@ -64,7 +68,7 @@ public class TagController { @GetMapping("{tagId:\\d+}") @ApiOperation("Get tag detail by id") public TagDTO getBy(@PathVariable("tagId") Integer tagId) { - return new TagDTO().convertFrom(tagService.getById(tagId)); + return tagService.convertTo(tagService.getById(tagId)); } @PutMapping("{tagId:\\d+}") @@ -78,20 +82,17 @@ public class TagController { tagParam.update(tag); // Update tag - return new TagDTO().convertFrom(tagService.update(tag)); + return tagService.convertTo(tagService.update(tag)); } - /** - * Delete tag by id. - * - * @param tagId tag id - */ @DeleteMapping("{tagId:\\d+}") - @ApiOperation("Delete tag by id") - public void deletePermanently(@PathVariable("tagId") Integer tagId) { + @ApiOperation("Deletes tag") + public TagDTO deletePermanently(@PathVariable("tagId") Integer tagId) { // Remove the tag - tagService.removeById(tagId); + Tag deletedTag = tagService.removeById(tagId); // Remove the post tag relationship postTagService.removeByTagId(tagId); + + return tagService.convertTo(deletedTag); } } diff --git a/src/main/java/run/halo/app/service/TagService.java b/src/main/java/run/halo/app/service/TagService.java index 322d5d9c0..5fa503d6e 100644 --- a/src/main/java/run/halo/app/service/TagService.java +++ b/src/main/java/run/halo/app/service/TagService.java @@ -1,6 +1,7 @@ package run.halo.app.service; import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; import run.halo.app.model.dto.TagDTO; import run.halo.app.model.entity.Tag; import run.halo.app.service.base.CrudService; @@ -25,11 +26,20 @@ public interface TagService extends CrudService { Tag getBySlugNameOfNonNull(@NonNull String slugName); /** - * Converts to tag output dtos. + * Converts to tag dto. + * + * @param tag tag must not be null + * @return tag dto + */ + @NonNull + TagDTO convertTo(@NonNull Tag tag); + + /** + * Converts to tag dtos. * * @param tags tag list * @return a list of tag output dto */ @NonNull - List convertTo(List tags); + List convertTo(@Nullable List tags); } diff --git a/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java b/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java index 54e093f1a..5c82a6b93 100644 --- a/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/CategoryServiceImpl.java @@ -177,8 +177,7 @@ public class CategoryServiceImpl extends AbstractCrudService return Collections.emptyList(); } - return categories - .stream() + return categories.stream() .map(this::convertTo) .collect(Collectors.toList()); } diff --git a/src/main/java/run/halo/app/service/impl/TagServiceImpl.java b/src/main/java/run/halo/app/service/impl/TagServiceImpl.java index e8d706081..ae53bec83 100644 --- a/src/main/java/run/halo/app/service/impl/TagServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/TagServiceImpl.java @@ -1,5 +1,9 @@ package run.halo.app.service.impl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; import run.halo.app.exception.AlreadyExistsException; import run.halo.app.exception.NotFoundException; import run.halo.app.model.dto.TagDTO; @@ -7,9 +11,6 @@ import run.halo.app.model.entity.Tag; import run.halo.app.repository.TagRepository; import run.halo.app.service.TagService; import run.halo.app.service.base.AbstractCrudService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import java.util.Collections; import java.util.List; @@ -59,12 +60,21 @@ public class TagServiceImpl extends AbstractCrudService implements return tagRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("The tag does not exist").setErrorData(slugName)); } + @Override + public TagDTO convertTo(Tag tag) { + Assert.notNull(tag, "Tag must not be null"); + + return new TagDTO().convertFrom(tag); + } + @Override public List convertTo(List tags) { - return CollectionUtils.isEmpty(tags) ? - Collections.emptyList() : - tags.stream() - .map(tag -> (TagDTO) new TagDTO().convertFrom(tag)) - .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(tags)) { + return Collections.emptyList(); + } + + return tags.stream() + .map(this::convertTo) + .collect(Collectors.toList()); } }