This commit is contained in:
parent
e634fbd1aa
commit
1861bdfe74
4 changed files with 72 additions and 3 deletions
8
2-Application/src/main/java/link/LinkIdGenerator.java
Normal file
8
2-Application/src/main/java/link/LinkIdGenerator.java
Normal file
|
@ -0,0 +1,8 @@
|
|||
package link;
|
||||
|
||||
import category.CategoryId;
|
||||
|
||||
public interface LinkIdGenerator {
|
||||
|
||||
LinkId generateId();
|
||||
}
|
44
2-Application/src/main/java/link/LinkUseCase.java
Normal file
44
2-Application/src/main/java/link/LinkUseCase.java
Normal file
|
@ -0,0 +1,44 @@
|
|||
package link;
|
||||
|
||||
import category.CategoryName;
|
||||
import category.CategoryRepository;
|
||||
import tag.TaggingUseCase;
|
||||
import user.Username;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class LinkUseCase {
|
||||
|
||||
private final LinkRepository linkRepository;
|
||||
private final CategoryRepository categoryRepository;
|
||||
private final TaggingUseCase taggingUseCase;
|
||||
private final LinkIdGenerator linkIdGenerator;
|
||||
|
||||
public LinkUseCase(LinkRepository linkRepository,
|
||||
CategoryRepository categoryRepository,
|
||||
TaggingUseCase taggingUseCase,
|
||||
LinkIdGenerator linkIdGenerator) {
|
||||
this.linkRepository = linkRepository;
|
||||
this.categoryRepository = categoryRepository;
|
||||
this.taggingUseCase = taggingUseCase;
|
||||
this.linkIdGenerator = linkIdGenerator;
|
||||
}
|
||||
|
||||
public void addLink(LinkUrl url, Set<CategoryName> categoryNames, Username creator) {
|
||||
|
||||
OnlineCheck.of(url);
|
||||
|
||||
var categoryIds = categoryNames.stream().map(categoryRepository::getIdByName).collect(Collectors.toSet());
|
||||
|
||||
var tags = taggingUseCase.getTagsFor(url);
|
||||
|
||||
var id = linkIdGenerator.generateId();
|
||||
|
||||
var link = new Link(id, creator, url, categoryIds, tags);
|
||||
|
||||
linkRepository.add(link);
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue