add models for kontor-javalin
This commit is contained in:
@@ -10,6 +10,16 @@ dependencies {
|
|||||||
implementation libs.javalin // Pulling in Javalin
|
implementation libs.javalin // Pulling in Javalin
|
||||||
implementation libs.jackson // For JSON serialization of persons
|
implementation libs.jackson // For JSON serialization of persons
|
||||||
implementation libs.slf4j // To see some Javalin logging
|
implementation libs.slf4j // To see some Javalin logging
|
||||||
|
compileOnly libs.lombok
|
||||||
|
annotationProcessor libs.lombok
|
||||||
|
|
||||||
|
implementation libs.postgresql
|
||||||
|
implementation libs.hibernate
|
||||||
|
implementation libs.hibernate.validator
|
||||||
|
implementation libs.validation.api
|
||||||
|
annotationProcessor libs.hibernate.jpamodelgen
|
||||||
|
testImplementation(platform(libs.junit.bom))
|
||||||
|
testImplementation "org.junit.jupiter:junit-jupiter"
|
||||||
}
|
}
|
||||||
|
|
||||||
task fatJar(type: Jar) {
|
task fatJar(type: Jar) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
[versions]
|
[versions]
|
||||||
gradle = "8.6"
|
gradle = "8.6"
|
||||||
junit = "5.8.2"
|
#junit = "5.8.2"
|
||||||
|
junit = "5.10.3"
|
||||||
#slf4j = "1.7.36"
|
#slf4j = "1.7.36"
|
||||||
slf4j = "2.0.16"
|
slf4j = "2.0.16"
|
||||||
hsqldb = "2.7.1"
|
hsqldb = "2.7.1"
|
||||||
@@ -8,11 +9,23 @@ sqlite = "3.25.2"
|
|||||||
jackson = "2.16.1"
|
jackson = "2.16.1"
|
||||||
#javalin = "4.6.4"
|
#javalin = "4.6.4"
|
||||||
javalin = "6.7.0"
|
javalin = "6.7.0"
|
||||||
|
lombok = "1.18.34"
|
||||||
|
postgresql = "42.7.3"
|
||||||
|
hibernate = "7.0.5.Final"
|
||||||
|
validation = "2.0.1.Final"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
junit = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" }
|
junit = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" }
|
||||||
|
junit-bom = { module = "org.junit:junit-bom", version.ref = "junit" }
|
||||||
slf4j = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" }
|
slf4j = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" }
|
||||||
hsqldb = { module = "org.hsqldb:hsqldb", version.ref = "hsqldb" }
|
hsqldb = { module = "org.hsqldb:hsqldb", version.ref = "hsqldb" }
|
||||||
jackson = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
|
jackson = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
|
||||||
sqlite-jdbc = { module = "org.xerial:sqlite-jdbc", version.ref = "sqlite" }
|
sqlite-jdbc = { module = "org.xerial:sqlite-jdbc", version.ref = "sqlite" }
|
||||||
javalin = { module = "io.javalin:javalin", version.ref = "javalin" }
|
javalin = { module = "io.javalin:javalin", version.ref = "javalin" }
|
||||||
|
javalin-bundle = { module = "io.javalin:javalin-bundle", version.ref = "javalin" }
|
||||||
|
lombok = { module = "org.projectlombok:lombok", version.ref = "lombok" }
|
||||||
|
postgresql = { module = "org.postgresql:postgresql", version.ref = "postgresql" }
|
||||||
|
hibernate = { module = "org.hibernate.orm:hibernate-core", version.ref = "hibernate" }
|
||||||
|
hibernate-jpamodelgen = { module = "org.hibernate.orm:hibernate-jpamodelgen", version.ref = "hibernate" }
|
||||||
|
hibernate-validator = { module = "org.hibernate:hibernate-validator", version.ref = "hibernate" }
|
||||||
|
validation-api = { module = "javax.validation:validation-api", version.ref = "validation" }
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import jakarta.persistence.CascadeType;
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.OneToMany;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class Artist {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(unique = true, nullable = false)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
private String weblink;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "artist", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
List<ComicWork> comicWorks = new LinkedList<>();
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "artist", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
List<IssueWork> issueWorks = new LinkedList<>();
|
||||||
|
}
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.checkerframework.checker.units.qual.Volume;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
|
import jakarta.persistence.CascadeType;
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.OneToMany;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class Comic {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(unique = true, nullable = false)
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "publisher_id")
|
||||||
|
@JsonIgnoreProperties({ "comics" })
|
||||||
|
private Publisher publisher;
|
||||||
|
|
||||||
|
private Boolean currentOrder = false;
|
||||||
|
|
||||||
|
private Boolean completed = false;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
private String weblink;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "comic", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
List<ComicWork> comicWorks;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "comic", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
private List<Issue> issues = new LinkedList<>();
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "comic", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
private List<StoryArc> storyArcs = new LinkedList<>();
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "comic", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
private List<TradePaperback> tradePaperbacks = new LinkedList<>();
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "comic", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
private List<Volume> volumes = new LinkedList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuffer sb = new StringBuffer("Comic{");
|
||||||
|
sb.append("title='").append(title).append('\'');
|
||||||
|
sb.append(", publisher=").append(publisher);
|
||||||
|
sb.append(", currentOrder=").append(currentOrder);
|
||||||
|
sb.append(", completed=").append(completed);
|
||||||
|
sb.append('}');
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPublisherName() {
|
||||||
|
return this.publisher.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
public class ComicWork {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "comic_id")
|
||||||
|
private Comic comic;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "artist_id")
|
||||||
|
private Artist artist;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "workType_id")
|
||||||
|
private Worktype workType;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuilder sb = new StringBuilder("ComicWork{");
|
||||||
|
sb.append("comic=").append(comic);
|
||||||
|
sb.append(", artist=").append(artist);
|
||||||
|
sb.append(", workType=").append(workType);
|
||||||
|
sb.append('}');
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.time.YearMonth;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.checkerframework.checker.units.qual.Volume;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
|
import jakarta.persistence.CascadeType;
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.OneToMany;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import org.hibernate.annotations.Type;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class Issue {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "comic_id")
|
||||||
|
@JsonIgnoreProperties({ "issues" })
|
||||||
|
private Comic comic;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "volume_id")
|
||||||
|
@JsonIgnoreProperties({ "issues" })
|
||||||
|
private Volume volume;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "storyArc_id")
|
||||||
|
@JsonIgnoreProperties({ "issues" })
|
||||||
|
private StoryArc storyArc;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private String issueNumber;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
@Type(YearMonthDateType.class)
|
||||||
|
@Column(name = "published_on", columnDefinition = "date", nullable = true)
|
||||||
|
private YearMonth publishedOn;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private Boolean isRead;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private Boolean inStock;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "issue", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
List<IssueWork> issueWorks;
|
||||||
|
|
||||||
|
public String getComicTitle() {
|
||||||
|
return comic.getTitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVolumeName() {
|
||||||
|
if (volume != null) {
|
||||||
|
return volume.getName();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullTitle() {
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
stringBuilder.append(this.getComic().getTitle());
|
||||||
|
stringBuilder.append(" #");
|
||||||
|
stringBuilder.append(this.getIssueNumber());
|
||||||
|
if (this.title !=null && !this.title.isEmpty()) {
|
||||||
|
stringBuilder.append(": ");
|
||||||
|
stringBuilder.append(this.title);
|
||||||
|
}
|
||||||
|
return stringBuilder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
result.append("Issue{");
|
||||||
|
result.append("comic=");
|
||||||
|
result.append(comic);
|
||||||
|
result.append(", volume=");
|
||||||
|
result.append(volume);
|
||||||
|
result.append(", storyArc=");
|
||||||
|
result.append(storyArc);
|
||||||
|
result.append(", issueNumber='");
|
||||||
|
result.append(issueNumber);
|
||||||
|
result.append(", title='");
|
||||||
|
result.append(title);
|
||||||
|
result.append(", publishedOn=");
|
||||||
|
result.append(publishedOn);
|
||||||
|
result.append(", isRead=");
|
||||||
|
result.append(isRead);
|
||||||
|
result.append(", inStock=");
|
||||||
|
result.append(inStock);
|
||||||
|
result.append("}");
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
public class IssueWork {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "issue_id")
|
||||||
|
private Issue issue;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "artist_id")
|
||||||
|
private Artist artist;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "workType_id")
|
||||||
|
private Worktype workType;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuilder sb = new StringBuilder("IssueWork{");
|
||||||
|
sb.append("issue=").append(issue);
|
||||||
|
sb.append(", artist=").append(artist);
|
||||||
|
sb.append(", workType=").append(workType);
|
||||||
|
sb.append('}');
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonBackReference;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
|
import jakarta.persistence.CascadeType;
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.OneToMany;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class Publisher {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(unique = true, nullable = false)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String weblink;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@JsonBackReference
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "parent_publisher_id")
|
||||||
|
@JsonIgnoreProperties({ "comics" })
|
||||||
|
private Publisher parentCompany;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parentCompany", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||||
|
private List<Publisher> imprints = new LinkedList<>();
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "publisher", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||||
|
private List<Comic> comics = new LinkedList<>();
|
||||||
|
|
||||||
|
public String getParentCompanyName() {
|
||||||
|
if (parentCompany != null) {
|
||||||
|
return parentCompany.name;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuffer sb = new StringBuffer("Publisher{");
|
||||||
|
sb.append("name='").append(name).append('\'');
|
||||||
|
sb.append('}');
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
|
import jakarta.persistence.CascadeType;
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.OneToMany;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class StoryArc {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "comic_id")
|
||||||
|
@JsonIgnoreProperties({ "storyArcs" })
|
||||||
|
private Comic comic;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "volume_id")
|
||||||
|
@JsonIgnoreProperties({ "storyArcs" })
|
||||||
|
private Volume volume;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "storyArc", cascade = CascadeType.REMOVE, orphanRemoval = true)
|
||||||
|
private List<Issue> issues = new LinkedList<>();
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class TradePaperback {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "comic_id")
|
||||||
|
private Comic comic;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private Integer issueStart;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private Integer issueEnd;}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
|
import jakarta.persistence.CascadeType;
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.OneToMany;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class Volume {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "comic_id")
|
||||||
|
@JsonIgnoreProperties({ "volumes" })
|
||||||
|
private Comic comic;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "volume", cascade = CascadeType.REMOVE, orphanRemoval = true)
|
||||||
|
private List<StoryArc> storyArcs = new LinkedList<>();
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "volume", cascade = CascadeType.REMOVE, orphanRemoval = true)
|
||||||
|
private List<Issue> issues = new LinkedList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder result = new StringBuilder("Volume{");
|
||||||
|
result.append("name=");
|
||||||
|
result.append(name);
|
||||||
|
result.append("comic=Comic{title=");
|
||||||
|
result.append(comic.getTitle());
|
||||||
|
result.append("}}");
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
package de.thpeetz.kontor.models.comics;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import jakarta.persistence.CascadeType;
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.OneToMany;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.Version;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
public class Worktype {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private int version;
|
||||||
|
|
||||||
|
@Column(name = "created_date")
|
||||||
|
private Date createdDate;
|
||||||
|
|
||||||
|
@Column(name = "last_modified_date")
|
||||||
|
private Date lastModifiedDate;
|
||||||
|
|
||||||
|
@Column(unique = true, nullable = false)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "workType", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
List<ComicWork> comicWorks = new LinkedList<>();
|
||||||
|
|
||||||
|
@Column(nullable = true)
|
||||||
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "workType", cascade = CascadeType.REFRESH, orphanRemoval = true)
|
||||||
|
List<IssueWork> issueWorks = new LinkedList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuffer sb = new StringBuffer("Worktype{");
|
||||||
|
sb.append("name='").append(name).append('\'');
|
||||||
|
sb.append('}');
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,7 +14,6 @@ import jakarta.validation.constraints.NotEmpty;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import jakarta.validation.constraints.NotNull;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import jakarta.validation.constraints.NotEmpty;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a work type in the application.
|
* Represents a work type in the application.
|
||||||
|
|||||||
Reference in New Issue
Block a user