This commit is contained in:
parent
d1fdad7cf9
commit
3ef31c9c3c
23 changed files with 228 additions and 27 deletions
|
@ -7,7 +7,7 @@ public class CategoryUseCase {
|
|||
private final CategoryRepository categoryRepository;
|
||||
private final CategoryIdGenerator categoryIdGenerator;
|
||||
|
||||
CategoryUseCase(final CategoryRepository categoryRepository, final CategoryIdGenerator idGenerator) {
|
||||
public CategoryUseCase(final CategoryRepository categoryRepository, final CategoryIdGenerator idGenerator) {
|
||||
this.categoryRepository = categoryRepository;
|
||||
this.categoryIdGenerator = idGenerator;
|
||||
}
|
||||
|
|
11
2-Application/src/main/java/link/LinkDto.java
Normal file
11
2-Application/src/main/java/link/LinkDto.java
Normal file
|
@ -0,0 +1,11 @@
|
|||
package link;
|
||||
|
||||
import category.Category;
|
||||
import tag.Tag;
|
||||
import user.Username;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public record LinkDto(Username creator, LinkUrl url, Set<Category> categories, Set<Tag> tags) {
|
||||
|
||||
}
|
|
@ -2,6 +2,7 @@ package link;
|
|||
|
||||
import category.CategoryName;
|
||||
import category.CategoryRepository;
|
||||
import exeptions.CategroyDoesNotExist;
|
||||
import exeptions.URLIsNotReachable;
|
||||
import tag.TaggingUseCase;
|
||||
import user.Username;
|
||||
|
@ -43,4 +44,20 @@ public class LinkUseCase {
|
|||
linkRepository.add(link);
|
||||
}
|
||||
|
||||
public Set<LinkDto> getLinks() {
|
||||
return linkRepository
|
||||
.getAll()
|
||||
.stream()
|
||||
.map(link -> new LinkDto(link.getCreator(),
|
||||
link.getUrl(),
|
||||
link
|
||||
.getCategoryIds()
|
||||
.stream()
|
||||
.map(categoryRepository::getById)
|
||||
.map(optional -> optional.orElseThrow(() -> new CategroyDoesNotExist(
|
||||
"A Category for a certain id does not exits. You must create it first.")))
|
||||
.collect(Collectors.toSet()),
|
||||
link.getTags()))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,21 @@
|
|||
package tag;
|
||||
|
||||
import link.LinkUrl;
|
||||
import link.RandomLinkIdGenerator;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class TaggingUseCase {
|
||||
|
||||
TagMatcherRepository tagMatcherRepository;
|
||||
|
||||
public TaggingUseCase(TagMatcherRepository tagMatcherRepository) {
|
||||
public TaggingUseCase(TagMatcherRepository tagMatcherRepository, RandomLinkIdGenerator randomLinkIdGenerator) {
|
||||
this.tagMatcherRepository = tagMatcherRepository;
|
||||
}
|
||||
|
||||
public Set<Tag> getTagsFor(LinkUrl url) {
|
||||
Set<Tag> result = Set.of();
|
||||
Set<Tag> result = new HashSet<>();
|
||||
tagMatcherRepository.getTagMatchers().forEach(tagMatcher -> tagMatcher.ifMatches(url).addTo(result));
|
||||
return result;
|
||||
}
|
||||
|
|
Reference in a new issue