Skip to content

Commit

Permalink
Complete markdown import service.
Browse files Browse the repository at this point in the history
  • Loading branch information
ruibaby committed May 26, 2019
1 parent 7c9f8b0 commit ee299d6
Show file tree
Hide file tree
Showing 8 changed files with 109 additions and 3 deletions.
8 changes: 8 additions & 0 deletions src/main/java/run/halo/app/repository/CategoryRepository.java
Expand Up @@ -36,4 +36,12 @@ public interface CategoryRepository extends BaseRepository<Category, Integer> {
* @return Optional of Category
*/
Optional<Category> getBySlugName(@NonNull String slugName);

/**
* Get category by name.
*
* @param name name
* @return Optional of Category
*/
Optional<Category> getByName(@NonNull String name);
}
7 changes: 7 additions & 0 deletions src/main/java/run/halo/app/repository/TagRepository.java
Expand Up @@ -29,4 +29,11 @@ public interface TagRepository extends BaseRepository<Tag, Integer> {
* @return Tag
*/
Optional<Tag> getBySlugName(@NonNull String slugName);

/**
* Get tag by name
* @param name name
* @return Tag
*/
Optional<Tag> getByName(@NonNull String name);
}
8 changes: 8 additions & 0 deletions src/main/java/run/halo/app/service/CategoryService.java
Expand Up @@ -36,6 +36,14 @@ public interface CategoryService extends CrudService<Category, Integer> {
@NonNull
Category getBySlugName(@NonNull String slugName);

/**
* Get Category by name.
*
* @param name name
* @return Category
*/
Category getByName(@NonNull String name);

/**
* Removes category and post categories.
*
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/run/halo/app/service/PostService.java
Expand Up @@ -104,7 +104,7 @@ public interface PostService extends BasePostService<Post> {
* @return imported post
*/
@NonNull
Post importMarkdown(@NonNull String markdown);
PostDetailVO importMarkdown(@NonNull String markdown);

/**
* Export post to markdown file by post id.
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/run/halo/app/service/TagService.java
Expand Up @@ -25,6 +25,14 @@ public interface TagService extends CrudService<Tag, Integer> {
@NonNull
Tag getBySlugNameOfNonNull(@NonNull String slugName);

/**
* Get tag by tag name.
*
* @param name name
* @return Tag
*/
Tag getByName(@NonNull String name);

/**
* Converts to tag dto.
*
Expand Down
Expand Up @@ -154,6 +154,11 @@ public Category getBySlugName(String slugName) {
return categoryRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("The Category does not exist").setErrorData(slugName));
}

@Override
public Category getByName(String name) {
return categoryRepository.getByName(name).orElse(null);
}

@Override
public void removeCategoryAndPostCategoryBy(Integer categoryId) {
// Remove category
Expand Down
68 changes: 66 additions & 2 deletions src/main/java/run/halo/app/service/impl/PostServiceImpl.java
@@ -1,5 +1,6 @@
package run.halo.app.service.impl;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -29,6 +30,7 @@
import run.halo.app.utils.DateUtils;
import run.halo.app.utils.MarkdownUtils;
import run.halo.app.utils.ServiceUtils;
import run.halo.app.utils.SlugUtils;

import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
Expand Down Expand Up @@ -275,7 +277,7 @@ public List<ArchiveMonthVO> listMonthArchives() {
}

@Override
public Post importMarkdown(String markdown) {
public PostDetailVO importMarkdown(String markdown) {
Assert.notNull(markdown, "Markdown document must not be null");

// Render markdown to html document.
Expand All @@ -284,7 +286,69 @@ public Post importMarkdown(String markdown) {
// Gets frontMatter
Map<String, List<String>> frontMatter = MarkdownUtils.getFrontMatter(markdown);

return null;
Post post = new Post();

List<String> elementValue;

Set<Integer> tagIds = new HashSet<>();

Set<Integer> categoryIds = new HashSet<>();
if (frontMatter.size() > 0) {
for (String key : frontMatter.keySet()) {
elementValue = frontMatter.get(key);
for (String ele : elementValue) {
switch (key) {
case "title":
post.setTitle(ele);
break;
case "date":
post.setCreateTime(DateUtil.parse(ele));
break;
case "updated":
post.setUpdateTime(DateUtil.parse(ele));
break;
case "permalink":
post.setUrl(ele);
break;
case "thumbnail":
post.setThumbnail(ele);
break;
case "status":
post.setStatus(PostStatus.valueOf(ele));
break;
case "comments":
post.setDisallowComment(Boolean.parseBoolean(ele));
break;
case "tags":
Tag tag = tagService.getByName(ele);
if (null == tag) {
tag = new Tag();
tag.setName(ele);
tag.setSlugName(SlugUtils.slugify(ele));
tag = tagService.create(tag);
}
tagIds.add(tag.getId());
case "categories":
Category category = categoryService.getByName(ele);
if (null == category) {
category = new Category();
category.setName(ele);
category.setSlugName(SlugUtils.slugify(ele));
category.setDescription(ele);
category = categoryService.create(category);
}
categoryIds.add(category.getId());
default:
break;
}
}
}
}

post.setOriginalContent(markdown);
post.setFormatContent(content);

return createBy(post, tagIds, categoryIds, false);
}

@Override
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/run/halo/app/service/impl/TagServiceImpl.java
Expand Up @@ -60,6 +60,12 @@ public Tag getBySlugNameOfNonNull(String slugName) {
return tagRepository.getBySlugName(slugName).orElseThrow(() -> new NotFoundException("The tag does not exist").setErrorData(slugName));
}


@Override
public Tag getByName(String name) {
return tagRepository.getByName(name).orElse(null);
}

@Override
public TagDTO convertTo(Tag tag) {
Assert.notNull(tag, "Tag must not be null");
Expand Down

0 comments on commit ee299d6

Please sign in to comment.