
de.digitalcollections.model.identifiable.entity.Collection Maven / Gradle / Ivy
package de.digitalcollections.model.identifiable.entity;
import de.digitalcollections.model.content.ManagedContent;
import de.digitalcollections.model.content.PublicationStatus;
import de.digitalcollections.model.identifiable.INode;
import de.digitalcollections.model.identifiable.Node;
import de.digitalcollections.model.text.LocalizedStructuredContent;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import lombok.experimental.SuperBuilder;
/** A collection of {@link Entity}s. */
@SuperBuilder(buildMethodName = "prebuild")
public class Collection extends Entity implements INode, ManagedContent {
private List entities;
private Node node;
private LocalDate publicationEnd;
private LocalDate publicationStart;
private PublicationStatus publicationStatus;
private LocalizedStructuredContent text;
public Collection() {
super();
}
public void addEntity(Entity entity) {
if (getEntities() == null) {
setEntities(new ArrayList<>(0));
}
getEntities().add(entity);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Collection)) {
return false;
}
if (!super.equals(o)) {
return false;
}
Collection that = (Collection) o;
return Objects.equals(entities, that.entities)
&& Objects.equals(node, that.node)
&& Objects.equals(publicationEnd, that.publicationEnd)
&& Objects.equals(publicationStart, that.publicationStart)
&& Objects.equals(publicationStatus, that.publicationStatus)
&& Objects.equals(text, that.text);
}
@Override
public List getChildren() {
return node.getChildren();
}
public List getEntities() {
return entities;
}
public Node getNode() {
return node;
}
@Override
public Collection getParent() {
return node.getParent();
}
@Override
public LocalDate getPublicationEnd() {
return publicationEnd;
}
@Override
public LocalDate getPublicationStart() {
return publicationStart;
}
@Override
public PublicationStatus getPublicationStatus() {
return publicationStatus;
}
public LocalizedStructuredContent getText() {
return text;
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), entities, node, publicationEnd, publicationStart, text);
}
@Override
protected void init() {
super.init();
if (entities == null) entities = new ArrayList<>();
if (node == null) node = new Node<>();
}
@Override
public void setChildren(List children) {
node.setChildren(children);
}
public void setEntities(List entities) {
this.entities = entities;
}
@Override
public void setParent(Collection parent) {
node.setParent(parent);
}
@Override
public void setPublicationEnd(LocalDate publicationEnd) {
this.publicationEnd = publicationEnd;
}
@Override
public void setPublicationStart(LocalDate publicationStart) {
this.publicationStart = publicationStart;
}
@Override
public void setPublicationStatus(PublicationStatus publicationStatus) {
this.publicationStatus = publicationStatus;
}
public void setText(LocalizedStructuredContent text) {
this.text = text;
}
@Override
public String toString() {
return this.getClass().getSimpleName()
+ "{entities="
+ entities
+ ", node="
+ node
+ ", publicationEnd="
+ publicationEnd
+ ", publicationStart="
+ publicationStart
+ ", publicationState="
+ publicationStatus
+ ", text="
+ text
+ ", customAttributes="
+ customAttributes
+ ", refId="
+ refId
+ ", created="
+ created
+ ", description="
+ description
+ ", label="
+ label
+ ", lastModified="
+ lastModified
+ ", previewImage="
+ previewImage
+ ", previewImageRenderingHints="
+ previewImageRenderingHints
+ ", type="
+ type
+ ", uuid="
+ getUuid()
+ "}";
}
public abstract static class CollectionBuilder<
C extends Collection, B extends CollectionBuilder>
extends EntityBuilder {
@Override
public C build() {
C c = prebuild();
c.init();
setInternalReferences(c);
return c;
}
public B publicationEnd(String publicationEnd) {
this.publicationEnd = LocalDate.parse(publicationEnd);
return self();
}
public B publicationStart(String publicationStart) {
this.publicationStart = LocalDate.parse(publicationStart);
return self();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy