task/3382: Harmonisera tabellnamn #6

Merged
ansv7779 merged 104 commits from task/3382 into develop 2024-11-12 13:33:44 +01:00
3 changed files with 199 additions and 98 deletions
Showing only changes of commit 2d1e04799d - Show all commits

View File

@ -1,5 +1,6 @@
package se.su.dsv.scipro.forum.dataobjects;
import jakarta.persistence.Basic;
import jakarta.persistence.GenerationType;
import se.su.dsv.scipro.file.FileReference;
import se.su.dsv.scipro.system.LazyDeletableDomainObject;
@ -15,54 +16,51 @@ import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.util.*;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
@Entity
@Table(name = "forum_post")
public class ForumPost extends LazyDeletableDomainObject {
// ----------------------------------------------------------------------------------
// Basic JPA-mappings
// ----------------------------------------------------------------------------------
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Lob
@Basic
@Column(name = "content", nullable = false)
@Lob
private String content;
// ----------------------------------------------------------------------------------
// JPA-mappings of foreign keys in this table (forum_post) referencing other
// tables.
// ----------------------------------------------------------------------------------
@ManyToOne
@JoinColumn(name = "user", nullable = true)
private User postedBy;
@ManyToOne
@JoinColumn(name = "thread", nullable = false)
@JoinColumn(name = "thread_id", nullable = false)
private ForumThread forumThread;
@ManyToOne
@JoinColumn(name = "user_id", nullable = true)
private User postedBy;
// ----------------------------------------------------------------------------------
// JPA-mappings of other tables referencing to this table "forum_post"
// ----------------------------------------------------------------------------------
@OneToMany(orphanRemoval = true)
@JoinTable(name = "forum_post_file_description",
joinColumns = {@JoinColumn(name = "forum_post_id")},
@JoinTable(name = "forum_post_file_reference",
joinColumns = {@JoinColumn(name = "forum_post_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "file_reference_id")})
private Set<FileReference> attachments = new HashSet<>();
public String getSubject() {
return forumThread.getSubject();
}
public Set<FileReference> getAttachments() {
return attachments;
}
public User getPostedBy() {
return postedBy;
}
public String getContent() {
return content;
}
public ForumThread getForumThread() {
return forumThread;
}
// ----------------------------------------------------------------------------------
// Properties (Getters and Setters)
// ----------------------------------------------------------------------------------
@Override
public Long getId() {
return this.id;
@ -72,27 +70,41 @@ public class ForumPost extends LazyDeletableDomainObject {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public void setPostedBy(User postedBy) {
this.postedBy = postedBy;
public ForumThread getForumThread() {
return forumThread;
}
public void setForumThread(ForumThread forumThread) {
this.forumThread = forumThread;
}
public User getPostedBy() {
return postedBy;
}
public void setPostedBy(User postedBy) {
this.postedBy = postedBy;
}
public Set<FileReference> getAttachments() {
return attachments;
}
public void setAttachments(Set<FileReference> attachments) {
this.attachments = attachments;
}
@Override
public String toString() {
return "ForumPost(id=" + this.getId() + ", content=" + this.getContent() + ", postedBy=" + this.getPostedBy() + ", forumThread=" + this.getForumThread() + ", attachments=" + this.getAttachments() + ")";
}
// ----------------------------------------------------------------------------------
// Methods Common To All Objects
// ----------------------------------------------------------------------------------
@Override
public boolean equals(final Object o) {
if (o == this) return true;
@ -106,10 +118,6 @@ public class ForumPost extends LazyDeletableDomainObject {
&& Objects.equals(this.getAttachments(), other.getAttachments());
}
protected boolean canEqual(final Object other) {
return other instanceof ForumPost;
}
@Override
public int hashCode() {
return Objects.hash(
@ -119,4 +127,22 @@ public class ForumPost extends LazyDeletableDomainObject {
this.getForumThread(),
this.getAttachments());
}
@Override
public String toString() {
return "ForumPost(id=" + this.getId() + ", content=" + this.getContent() +
", postedBy=" + this.getPostedBy() + ", forumThread=" + this.getForumThread() +
", attachments=" + this.getAttachments() + ")";
}
// ----------------------------------------------------------------------------------
// Other methods
// ----------------------------------------------------------------------------------
protected boolean canEqual(final Object other) {
return other instanceof ForumPost;
}
public String getSubject() {
return forumThread.getSubject();
}
}

View File

@ -1,9 +1,21 @@
package se.su.dsv.scipro.forum.dataobjects;
import jakarta.persistence.Basic;
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.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.OneToMany;
import jakarta.persistence.PostLoad;
import jakarta.persistence.Table;
import se.su.dsv.scipro.system.LazyDeletableDomainObject;
import se.su.dsv.scipro.system.User;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@ -13,17 +25,88 @@ import java.util.Objects;
@Inheritance(strategy = InheritanceType.JOINED)
public class ForumThread extends LazyDeletableDomainObject {
// ----------------------------------------------------------------------------------
// Basic JPA-mappings
// ----------------------------------------------------------------------------------
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "forumThread", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<ForumPost> posts = new ArrayList<>();
@Basic
@Column(name = "subject", nullable = false)
private String subject;
// ----------------------------------------------------------------------------------
// JPA-mappings of other tables referencing to this table "thread"
// ----------------------------------------------------------------------------------
@OneToMany(mappedBy = "forumThread", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<ForumPost> posts = new ArrayList<>();
// ----------------------------------------------------------------------------------
// JPA-lifecycle method
// ----------------------------------------------------------------------------------
@PostLoad
void lazyDeletion() {
posts.removeIf(LazyDeletableDomainObject::isDeleted);
}
// ----------------------------------------------------------------------------------
// Properties (Getters and Setters)
// ----------------------------------------------------------------------------------
@Override
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public List<ForumPost> getPosts() {
return this.posts;
}
public void setPosts(List<ForumPost> posts) {
this.posts = posts;
}
// ----------------------------------------------------------------------------------
// Methods Common To All Objects
// ----------------------------------------------------------------------------------
@Override
public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof ForumThread)) return false;
final ForumThread other = (ForumThread) o;
return other.canEqual(this)
&& Objects.equals(this.getId(), other.getId());
}
@Override
public int hashCode() {
return Objects.hashCode(this.getId());
}
@Override
public String toString() {
return "ForumThread(id=" + this.getId() + ", subject=" + this.getSubject() + ")";
}
// ----------------------------------------------------------------------------------
// Other methods
// ----------------------------------------------------------------------------------
protected boolean canEqual(final Object other) {
return other instanceof ForumThread;
}
public void addPost(ForumPost post) {
posts.add(post);
}
@ -32,15 +115,6 @@ public class ForumThread extends LazyDeletableDomainObject {
return posts.size();
}
@PostLoad
void lazyDeletion() {
posts.removeIf(LazyDeletableDomainObject::isDeleted);
}
public String getSubject() {
return subject;
}
public User getCreatedBy(){
return getPosts().get(0).getPostedBy();
}
@ -53,48 +127,4 @@ public class ForumThread extends LazyDeletableDomainObject {
}
return false;
}
@Override
public Long getId() {
return this.id;
}
public List<ForumPost> getPosts() {
return this.posts;
}
public void setId(Long id) {
this.id = id;
}
public void setPosts(List<ForumPost> posts) {
this.posts = posts;
}
public void setSubject(String subject) {
this.subject = subject;
}
@Override
public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof ForumThread)) return false;
final ForumThread other = (ForumThread) o;
return other.canEqual(this)
&& Objects.equals(this.getId(), other.getId());
}
protected boolean canEqual(final Object other) {
return other instanceof ForumThread;
}
@Override
public int hashCode() {
return Objects.hashCode(this.getId());
}
@Override
public String toString() {
return "ForumThread(id=" + this.getId() + ", subject=" + this.getSubject() + ")";
}
}

View File

@ -2922,11 +2922,56 @@ alter table `project_group_project`
on delete cascade on update cascade;
/*
* Step 22: ???
* Step 22: thread, forum_post and forum_post_file_description
*/
-- table: thread
alter table `thread` change `deleted` `deleted` tinyint(1) not null after `subject`;
-- table: forum_post
alter table `forum_post` drop foreign key `forum_posts_thread`;
alter table `forum_post` drop foreign key `FKEDDC4F35924F477B`;
alter table `forum_post` drop key `deleted_index`;
alter table `forum_post` drop key `FKEDDC4F355E9380A1`;
alter table `forum_post` drop key `FKEDDC4F35924F477B`;
alter table `forum_post` change `content` `content` longtext not null after `version`;
alter table `forum_post` change `thread` `thread_id` bigint(20) not null after `deleted`;
alter table `forum_post` change `user` `user_id` bigint(20) default null after `thread_id`;
create index idx_forum_post_deleted on forum_post (deleted);
alter table `forum_post`
add constraint fk_forum_post_thread_id
foreign key (thread_id) references thread (id)
on delete cascade on update cascade;
alter table `forum_post`
add constraint fk_forum_post_user_id
foreign key (user_id) references user (id)
on delete cascade on update cascade;
-- table: forum_post_file_description
alter table `forum_post_file_description` drop foreign key `FK_forum_post_file`;
alter table `forum_post_file_description` drop key `I_forum_post_file_post`;
alter table `forum_post_file_description` drop key `FK_forum_post_file`;
rename table `forum_post_file_description` to `forum_post_file_reference`;
alter table `forum_post_file_reference`
add constraint fk_forum_post_file_reference_forum_post_id
foreign key (forum_post_id) references forum_post (id)
on delete cascade on update cascade;
alter table `forum_post_file_reference`
add constraint fk_forum_post_file_reference_file_reference_id
foreign key (file_reference_id) references file_reference (id)
on delete cascade on update cascade;
/* Useful SQL