start adding Link repo
This commit is contained in:
parent
c1852b8bac
commit
9c974db33f
|
@ -21,4 +21,42 @@ public class Link {
|
||||||
this.categoryIds = categoryIds;
|
this.categoryIds = categoryIds;
|
||||||
this.tags = tags;
|
this.tags = tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LinkId getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Username getCreator() {
|
||||||
|
return creator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LinkUrl getUrl() {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<CategoryId> getCategoryIds() {
|
||||||
|
return categoryIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<Tag> 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
10
3-Domain/src/main/java/link/LinkPersistenceAdapter.java
Normal file
10
3-Domain/src/main/java/link/LinkPersistenceAdapter.java
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
package link;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public interface LinkPersistenceAdapter {
|
||||||
|
|
||||||
|
Set<Link> getAll();
|
||||||
|
Boolean add(Link link);
|
||||||
|
|
||||||
|
}
|
41
3-Domain/src/main/java/link/LinkRepository.java
Normal file
41
3-Domain/src/main/java/link/LinkRepository.java
Normal file
|
@ -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<Link> links;
|
||||||
|
|
||||||
|
public LinkRepository(LinkPersistenceAdapter linkPersistenceAdapter) {
|
||||||
|
this.linkPersistenceAdapter = linkPersistenceAdapter;
|
||||||
|
this.links = linkPersistenceAdapter.getAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Link> getById(LinkId id) {
|
||||||
|
return links.stream().filter(link -> link.getId().equals(id)).findFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Link> 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue