Add OptionalTag
This commit is contained in:
parent
d091772002
commit
325adfb0f2
|
@ -4,11 +4,8 @@ import tag.TagName;
|
|||
|
||||
public class Main {
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
TagName test = new TagName("ds");
|
||||
System.out.println(test);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
23
3-Domain/src/main/java/tag/OptionalTag.java
Normal file
23
3-Domain/src/main/java/tag/OptionalTag.java
Normal file
|
@ -0,0 +1,23 @@
|
|||
package tag;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
public record OptionalTag(Optional<Tag> tag) {
|
||||
|
||||
public Optional<Tag> getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public static OptionalTag of(Tag tag) {
|
||||
return new OptionalTag(Optional.of(tag));
|
||||
}
|
||||
|
||||
public static OptionalTag empty() {
|
||||
return new OptionalTag(Optional.empty());
|
||||
}
|
||||
|
||||
void addTo(Collection<Tag> collection) {
|
||||
if (tag.isPresent()) collection.add(tag.get());
|
||||
}
|
||||
}
|
|
@ -1,5 +1,22 @@
|
|||
package tag;
|
||||
|
||||
public record Tag(TagName name, String additionalData) {
|
||||
import java.util.Optional;
|
||||
|
||||
public class Tag {
|
||||
|
||||
private TagName name;
|
||||
private Optional<String> additionalData;
|
||||
|
||||
public Tag(TagName name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Tag(TagName name, Optional<String> additionalData) {
|
||||
this.name = name;
|
||||
this.additionalData = additionalData;
|
||||
}
|
||||
|
||||
public Tag addAdditionalData(String additionalData) {
|
||||
return new Tag(this.name, Optional.of(additionalData));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,11 @@ package tag;
|
|||
|
||||
import link.LinkUrl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface TagMatcher {
|
||||
|
||||
Optional<Tag> matches(LinkUrl linkUrl);
|
||||
OptionalTag ifMatches(LinkUrl linkUrl);
|
||||
|
||||
}
|
||||
|
|
18
3-Domain/src/main/java/tag/TagMatcherRepository.java
Normal file
18
3-Domain/src/main/java/tag/TagMatcherRepository.java
Normal file
|
@ -0,0 +1,18 @@
|
|||
package tag;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class TagMatcherRepository {
|
||||
|
||||
Set<TagMatcher> tagMatchers = Set.of();
|
||||
|
||||
public TagMatcherRepository(final TagPersistenceAdapter tagPersistenceAdapter, final Set<TagMatcher> staticTagMatchers) {
|
||||
tagMatchers.addAll(staticTagMatchers);
|
||||
tagMatchers.addAll(tagPersistenceAdapter.getCustomTagMatchers());
|
||||
}
|
||||
|
||||
public Set<TagMatcher> getTagMatchers() {
|
||||
return new HashSet<>(tagMatchers);
|
||||
}
|
||||
}
|
9
3-Domain/src/main/java/tag/TagPersistenceAdapter.java
Normal file
9
3-Domain/src/main/java/tag/TagPersistenceAdapter.java
Normal file
|
@ -0,0 +1,9 @@
|
|||
package tag;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public interface TagPersistenceAdapter {
|
||||
|
||||
Set<TagMatcher> getCustomTagMatchers();
|
||||
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package tag.matcherImplementations;
|
||||
|
||||
import link.LinkUrl;
|
||||
import tag.OptionalTag;
|
||||
import tag.Tag;
|
||||
import tag.TagMatcher;
|
||||
import tag.TagName;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
@ -20,13 +20,13 @@ public class CustomTagMatcher implements TagMatcher {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Optional<Tag> matches(LinkUrl linkUrl) {
|
||||
public OptionalTag ifMatches(LinkUrl linkUrl) {
|
||||
Matcher matcher = regex.matcher(linkUrl.toString());
|
||||
|
||||
if (matcher.find()) {
|
||||
return Optional.of(new Tag(this.tagName, ""));
|
||||
return OptionalTag.of(new Tag(this.tagName));
|
||||
}
|
||||
return Optional.empty();
|
||||
return OptionalTag.empty();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
package tag.matcherImplementations;
|
||||
|
||||
import link.LinkUrl;
|
||||
import tag.OptionalTag;
|
||||
import tag.Tag;
|
||||
import tag.TagMatcher;
|
||||
import tag.TagName;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class GitHubTagMatcher implements TagMatcher {
|
||||
|
||||
public TagName getName() {
|
||||
|
@ -14,14 +13,14 @@ public class GitHubTagMatcher implements TagMatcher {
|
|||
}
|
||||
|
||||
public String getAdditionInfo() {
|
||||
return null;
|
||||
return "";//TODO
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Tag> matches(LinkUrl linkUrl) {
|
||||
public OptionalTag ifMatches(LinkUrl linkUrl) {
|
||||
if (linkUrl.getUrl().getHost().equals("github.com")) {
|
||||
return Optional.of(new Tag(getName(), getAdditionInfo()));
|
||||
return OptionalTag.of(new Tag(getName()).addAdditionalData(getAdditionInfo()));
|
||||
}
|
||||
return Optional.empty();
|
||||
return OptionalTag.empty();
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue