Add Tag, TagMatcher Interface and Implementations
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
cf50f1bb86
commit
916db1decb
5
3-Domain/src/main/java/tag/Tag.java
Normal file
5
3-Domain/src/main/java/tag/Tag.java
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
package tag;
|
||||||
|
|
||||||
|
public record Tag(TagName name, String additionalData) {
|
||||||
|
|
||||||
|
}
|
10
3-Domain/src/main/java/tag/TagMatcher.java
Normal file
10
3-Domain/src/main/java/tag/TagMatcher.java
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
package tag;
|
||||||
|
|
||||||
|
import link.LinkUrl;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface TagMatcher {
|
||||||
|
|
||||||
|
Optional<Tag> matches(LinkUrl linkUrl);
|
||||||
|
}
|
5
3-Domain/src/main/java/tag/TagName.java
Normal file
5
3-Domain/src/main/java/tag/TagName.java
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
package tag;
|
||||||
|
|
||||||
|
public record TagName(String name) {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package tag.matcherImplementations;
|
||||||
|
|
||||||
|
import link.LinkUrl;
|
||||||
|
import tag.Tag;
|
||||||
|
import tag.TagMatcher;
|
||||||
|
import tag.TagName;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class CustomTagMatcher implements TagMatcher {
|
||||||
|
|
||||||
|
private final Pattern regex;
|
||||||
|
private final TagName tagName;
|
||||||
|
|
||||||
|
public CustomTagMatcher(TagName name, String regexString) {
|
||||||
|
this.regex = Pattern.compile(regexString); // TODO this could throw??
|
||||||
|
this.tagName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Tag> matches(LinkUrl linkUrl) {
|
||||||
|
Matcher matcher = regex.matcher(linkUrl.toString());
|
||||||
|
|
||||||
|
if (matcher.find()) {
|
||||||
|
return Optional.of(new Tag(this.tagName, ""));
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package tag.matcherImplementations;
|
||||||
|
|
||||||
|
import link.LinkUrl;
|
||||||
|
import tag.Tag;
|
||||||
|
import tag.TagMatcher;
|
||||||
|
import tag.TagName;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class GitHubTagMatcher implements TagMatcher {
|
||||||
|
|
||||||
|
public TagName getName() {
|
||||||
|
return new TagName("github");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdditionInfo() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Tag> matches(LinkUrl linkUrl) {
|
||||||
|
if (linkUrl.getUrl().getHost().equals("github.com")) {
|
||||||
|
return Optional.of(new Tag(getName(), getAdditionInfo()));
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue