Add OptionalTag

This commit is contained in:
qvalentin 2022-04-01 17:05:25 +02:00
parent d091772002
commit 325adfb0f2
Signed by: qvalentin
GPG Key ID: C979FA1EAFCABF1C
8 changed files with 81 additions and 16 deletions

View File

@ -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);
}
}

View 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());
}
}

View File

@ -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));
}
}

View File

@ -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);
}

View 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);
}
}

View File

@ -0,0 +1,9 @@
package tag;
import java.util.Set;
public interface TagPersistenceAdapter {
Set<TagMatcher> getCustomTagMatchers();
}

View File

@ -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();
}
}

View File

@ -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();
}
}