From 9c974db33f69b4d04bf91b89cabad24ba90140b5 Mon Sep 17 00:00:00 2001 From: qvalentin Date: Fri, 22 Apr 2022 09:44:28 +0200 Subject: [PATCH] start adding Link repo --- 3-Domain/src/main/java/link/Link.java | 38 +++++++++++++++++ .../java/link/LinkPersistenceAdapter.java | 10 +++++ .../src/main/java/link/LinkRepository.java | 41 +++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 3-Domain/src/main/java/link/LinkPersistenceAdapter.java create mode 100644 3-Domain/src/main/java/link/LinkRepository.java diff --git a/3-Domain/src/main/java/link/Link.java b/3-Domain/src/main/java/link/Link.java index 29582ec..b5e8ff6 100644 --- a/3-Domain/src/main/java/link/Link.java +++ b/3-Domain/src/main/java/link/Link.java @@ -21,4 +21,42 @@ public class Link { this.categoryIds = categoryIds; this.tags = tags; } + + public LinkId getId() { + return id; + } + + public Username getCreator() { + return creator; + } + + public LinkUrl getUrl() { + return url; + } + + public Set getCategoryIds() { + return categoryIds; + } + + public Set getTags() { + return tags; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Link link = (Link) o; + + if (!id.equals(link.id)) return false; + return url.equals(link.url); + } + + @Override + public int hashCode() { + int result = id.hashCode(); + result = 31 * result + url.hashCode(); + return result; + } } diff --git a/3-Domain/src/main/java/link/LinkPersistenceAdapter.java b/3-Domain/src/main/java/link/LinkPersistenceAdapter.java new file mode 100644 index 0000000..a945e7b --- /dev/null +++ b/3-Domain/src/main/java/link/LinkPersistenceAdapter.java @@ -0,0 +1,10 @@ +package link; + +import java.util.Set; + +public interface LinkPersistenceAdapter { + + Set getAll(); + Boolean add(Link link); + +} diff --git a/3-Domain/src/main/java/link/LinkRepository.java b/3-Domain/src/main/java/link/LinkRepository.java new file mode 100644 index 0000000..57b7a1a --- /dev/null +++ b/3-Domain/src/main/java/link/LinkRepository.java @@ -0,0 +1,41 @@ +package link; + +import exeptions.LinkAlreadyExists; + +import java.util.Optional; +import java.util.Set; + +public class LinkRepository { + + final private LinkPersistenceAdapter linkPersistenceAdapter; + final private Set links; + + public LinkRepository(LinkPersistenceAdapter linkPersistenceAdapter) { + this.linkPersistenceAdapter = linkPersistenceAdapter; + this.links = linkPersistenceAdapter.getAll(); + } + + public Optional getById(LinkId id) { + return links.stream().filter(link -> link.getId().equals(id)).findFirst(); + } + + public Optional getByUrl(LinkUrl url) { + return links.stream().filter(link -> link.getUrl().equals(url)).findFirst(); + } + + public void add(Link link) { + checkDuplicates(link); + + + } + + private void checkDuplicates(Link newLink) { + if (this.getById(newLink.getId()).isPresent()) { + throw new LinkAlreadyExists("A link with the id " + newLink.getId() + " already exitsts"); + } + + if (this.getByUrl(newLink.getUrl()).isPresent()) { + throw new LinkAlreadyExists("A link with the url " + newLink.getUrl() + " already exitsts"); + } + } +}