Add OptionalTag
This commit is contained in:
parent
d091772002
commit
325adfb0f2
|
@ -4,11 +4,8 @@ import tag.TagName;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
TagName test = new TagName("ds");
|
TagName test = new TagName("ds");
|
||||||
System.out.println(test);
|
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;
|
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 link.LinkUrl;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface TagMatcher {
|
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;
|
package tag.matcherImplementations;
|
||||||
|
|
||||||
import link.LinkUrl;
|
import link.LinkUrl;
|
||||||
|
import tag.OptionalTag;
|
||||||
import tag.Tag;
|
import tag.Tag;
|
||||||
import tag.TagMatcher;
|
import tag.TagMatcher;
|
||||||
import tag.TagName;
|
import tag.TagName;
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@ -20,13 +20,13 @@ public class CustomTagMatcher implements TagMatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Tag> matches(LinkUrl linkUrl) {
|
public OptionalTag ifMatches(LinkUrl linkUrl) {
|
||||||
Matcher matcher = regex.matcher(linkUrl.toString());
|
Matcher matcher = regex.matcher(linkUrl.toString());
|
||||||
|
|
||||||
if (matcher.find()) {
|
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;
|
package tag.matcherImplementations;
|
||||||
|
|
||||||
import link.LinkUrl;
|
import link.LinkUrl;
|
||||||
|
import tag.OptionalTag;
|
||||||
import tag.Tag;
|
import tag.Tag;
|
||||||
import tag.TagMatcher;
|
import tag.TagMatcher;
|
||||||
import tag.TagName;
|
import tag.TagName;
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
public class GitHubTagMatcher implements TagMatcher {
|
public class GitHubTagMatcher implements TagMatcher {
|
||||||
|
|
||||||
public TagName getName() {
|
public TagName getName() {
|
||||||
|
@ -14,14 +13,14 @@ public class GitHubTagMatcher implements TagMatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAdditionInfo() {
|
public String getAdditionInfo() {
|
||||||
return null;
|
return "";//TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Tag> matches(LinkUrl linkUrl) {
|
public OptionalTag ifMatches(LinkUrl linkUrl) {
|
||||||
if (linkUrl.getUrl().getHost().equals("github.com")) {
|
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