35 lines
1.2 KiB
Java
35 lines
1.2 KiB
Java
package myblog.blog.seo.application;
|
|
|
|
import myblog.blog.article.application.port.incomming.ArticleUseCase;
|
|
import myblog.blog.category.appliacation.port.incomming.CategoryUseCase;
|
|
import myblog.blog.seo.application.port.incomming.SiteMapUseCase;
|
|
|
|
import myblog.blog.article.domain.Article;
|
|
import myblog.blog.category.domain.Category;
|
|
import myblog.blog.seo.domain.SiteMap;
|
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.stereotype.Service;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.jdom2.output.*;
|
|
import java.util.*;
|
|
|
|
@Service
|
|
@Transactional
|
|
@RequiredArgsConstructor
|
|
public class SiteMapService implements SiteMapUseCase {
|
|
private final ArticleUseCase articleUseCase;
|
|
private final CategoryUseCase categoryUseCase;
|
|
|
|
@Override
|
|
@Cacheable(value = "seoCaching", key = "1")
|
|
public String getSiteMap(){
|
|
var articles = articleUseCase.getTotalArticle();
|
|
var allCategories = categoryUseCase.getAllCategories();
|
|
var siteMap = SiteMap.from(articles, allCategories);
|
|
var xmlOutputter = XMLOutPutterBuildHelper.getXmlOutputter();
|
|
return xmlOutputter.outputString(siteMap.getSiteMapDoc());
|
|
}
|
|
}
|