diff --git a/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismRequest.java b/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismRequest.java index 3356526223..1aece5bd51 100644 --- a/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismRequest.java +++ b/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismRequest.java @@ -11,46 +11,61 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToOne; import jakarta.persistence.Table; -import java.util.*; + +import java.util.Objects; @Entity @Table(name = "plagiarism_request") class PlagiarismRequest { + // ---------------------------------------------------------------------------------- + // Basic JPA-mappings + // ---------------------------------------------------------------------------------- @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + // ---------------------------------------------------------------------------------- + // JPA-mappings of foreign keys in this table (plagiarism_request) referencing other + // tables. + // ---------------------------------------------------------------------------------- @OneToOne(optional = false) - @JoinColumn(name = "document_reference_id") + @JoinColumn(name = "document_file_reference_id", referencedColumnName = "id") private FileReference document; @ManyToOne + @JoinColumn(name = "receiver_user_id", referencedColumnName = "id") private User receiver; + // ---------------------------------------------------------------------------------- + // Properties (Getters and Setters) + // ---------------------------------------------------------------------------------- public Long getId() { return this.id; } - public FileReference getDocument() { - return this.document; - } - - public User getReceiver() { - return this.receiver; - } - public void setId(Long id) { this.id = id; } + public FileReference getDocument() { + return this.document; + } + public void setDocument(FileReference fileDescription) { this.document = fileDescription; } + public User getReceiver() { + return this.receiver; + } + public void setReceiver(User receiver) { this.receiver = receiver; } + // ---------------------------------------------------------------------------------- + // Methods Common To All Objects + // ---------------------------------------------------------------------------------- @Override public boolean equals(final Object o) { if (o == this) return true; @@ -62,10 +77,6 @@ class PlagiarismRequest { && Objects.equals(this.getReceiver(), other.getReceiver()); } - protected boolean canEqual(final Object other) { - return other instanceof PlagiarismRequest; - } - @Override public int hashCode() { return Objects.hash(this.getId(), this.getDocument(), this.getReceiver()); @@ -73,6 +84,14 @@ class PlagiarismRequest { @Override public String toString() { - return "PlagiarismRequest(id=" + this.getId() + ", fileDescription=" + this.getDocument() + ", receiver=" + this.getReceiver() + ")"; + return "PlagiarismRequest(id=" + this.getId() + ", fileDescription=" + this.getDocument() + + ", receiver=" + this.getReceiver() + ")"; + } + + // ---------------------------------------------------------------------------------- + // Other method + // ---------------------------------------------------------------------------------- + protected boolean canEqual(final Object other) { + return other instanceof PlagiarismRequest; } } diff --git a/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmission.java b/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmission.java index 594dd691fc..87580259a7 100644 --- a/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmission.java +++ b/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmission.java @@ -17,139 +17,159 @@ import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToOne; import jakarta.persistence.Table; import java.time.Instant; -import java.util.*; +import java.util.Objects; @Entity @Table(name = "urkund_submission") public class UrkundSubmission extends DomainObject { - - public enum State { - SUBMISSION_FAILED, SUBMITTED, REJECTED, ACCEPTED, ANALYZED, ERROR; - - public boolean isFinal() { - return !(this == SUBMITTED || this == ACCEPTED); - } - } - + // ---------------------------------------------------------------------------------- + // Basic JPA-mappings + // ---------------------------------------------------------------------------------- @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @ManyToOne - private User receiver; + @Basic + @Column(name = "submitted_date", nullable = false) + private Instant submitted; @Basic - private String analysisAddress; - - @Column(nullable = false) + @Column(name = "state", nullable = false) @Enumerated(EnumType.STRING) private State state; - @Column(nullable = false) - private Instant submitted; - - @Column(nullable = false) + @Basic + @Column(name = "next_poll_date", nullable = false) private Instant nextPoll; - @Column(nullable = false) + @Basic + @Column(name = "polling_delay", nullable = false) @Enumerated(EnumType.STRING) private PollingDelay pollingDelay = PollingDelay.FIRST; - @OneToOne(optional = false) - @JoinColumn(name = "document_reference_id") - private FileReference document; - @Basic(optional = false) + @Column(name = "message") private String message; @Basic + @Column(name = "report_url") private String reportUrl; @Basic + @Column(name = "significance") private Float significance; + @Basic + @Column(name = "analysis_address") + private String analysisAddress; + + // ---------------------------------------------------------------------------------- + // JPA-mappings of foreign keys in this table (urkund_submission) referencing other + // tables. + // ---------------------------------------------------------------------------------- + @OneToOne(optional = false) + @JoinColumn(name = "document_file_reference_id", referencedColumnName = "id") + private FileReference document; + + @ManyToOne + @JoinColumn(name = "receiver_user_id", referencedColumnName = "id") + private User receiver; + + // ---------------------------------------------------------------------------------- + // Properties (Getters and Setters) + // ---------------------------------------------------------------------------------- @Override public Long getId() { return this.id; } - public String getAnalysisAddress() { - return this.analysisAddress; - } - - public State getState() { - return this.state; - } - - public Instant getSubmitted() { - return this.submitted; - } - - public FileReference getDocument() { - return this.document; - } - - public String getMessage() { - return this.message; - } - - public String getReportUrl() { - return this.reportUrl; - } - - public Float getSignificance() { - return this.significance; - } - - @Override - public String toString() { - return "UrkundSubmission(id=" + this.getId() + ", receiver=" + this.getReceiver() + ", analysisAddress=" + this.getAnalysisAddress() + ", state=" + this.getState() + ", submitted=" + this.getSubmitted() + ", nextPoll=" + this.getNextPoll() + ", pollingDelay=" + this.getPollingDelay() + ", fileDescription=" + this.getDocument() + ", message=" + this.getMessage() + ", reportUrl=" + this.getReportUrl() + ", significance=" + this.getSignificance() + ")"; - } - void setId(Long id) { this.id = id; } - void setReceiver(User receiver) { - this.receiver = receiver; - } - - void setAnalysisAddress(String analysisAddress) { - this.analysisAddress = analysisAddress; - } - - void setState(State state) { - this.state = state; + public Instant getSubmitted() { + return this.submitted; } void setSubmitted(Instant submitted) { this.submitted = submitted; } + public State getState() { + return this.state; + } + + void setState(State state) { + this.state = state; + } + + Instant getNextPoll() { + return this.nextPoll; + } + void setNextPoll(Instant nextPoll) { this.nextPoll = nextPoll; } + PollingDelay getPollingDelay() { + return this.pollingDelay; + } + void setPollingDelay(PollingDelay pollingDelay) { this.pollingDelay = pollingDelay; } - void setDocument(FileReference fileDescription) { - this.document = fileDescription; + public String getMessage() { + return this.message; } void setMessage(String message) { this.message = message; } + public String getReportUrl() { + return this.reportUrl; + } + void setReportUrl(String reportUrl) { this.reportUrl = reportUrl; } + public Float getSignificance() { + return this.significance; + } + void setSignificance(Float significance) { this.significance = significance; } + public String getAnalysisAddress() { + return this.analysisAddress; + } + + void setAnalysisAddress(String analysisAddress) { + this.analysisAddress = analysisAddress; + } + + public FileReference getDocument() { + return this.document; + } + + void setDocument(FileReference fileDescription) { + this.document = fileDescription; + } + + User getReceiver() { + return this.receiver; + } + + void setReceiver(User receiver) { + this.receiver = receiver; + } + + // ---------------------------------------------------------------------------------- + // Methods Common To All Objects + // ---------------------------------------------------------------------------------- @Override public boolean equals(final Object o) { if (o == this) return true; @@ -170,10 +190,6 @@ public class UrkundSubmission extends DomainObject { && Objects.equals(this.getSignificance(), other.getSignificance()); } - protected boolean canEqual(final Object other) { - return other instanceof UrkundSubmission; - } - @Override public int hashCode() { return Objects.hash( @@ -190,15 +206,31 @@ public class UrkundSubmission extends DomainObject { this.getSignificance()); } - User getReceiver() { - return this.receiver; + @Override + public String toString() { + return "UrkundSubmission(id=" + this.getId() + ", receiver=" + this.getReceiver() + + ", analysisAddress=" + this.getAnalysisAddress() + ", state=" + + this.getState() + ", submitted=" + this.getSubmitted() + + ", nextPoll=" + this.getNextPoll() + ", pollingDelay=" + this.getPollingDelay() + + ", fileDescription=" + this.getDocument() + ", message=" + this.getMessage() + + ", reportUrl=" + this.getReportUrl() + ", significance=" + this.getSignificance() + ")"; } - Instant getNextPoll() { - return this.nextPoll; + // ---------------------------------------------------------------------------------- + // Other Methods + // ---------------------------------------------------------------------------------- + protected boolean canEqual(final Object other) { + return other instanceof UrkundSubmission; } - PollingDelay getPollingDelay() { - return this.pollingDelay; + // ---------------------------------------------------------------------------------- + // Nested type + // ---------------------------------------------------------------------------------- + public enum State { + SUBMISSION_FAILED, SUBMITTED, REJECTED, ACCEPTED, ANALYZED, ERROR; + + public boolean isFinal() { + return !(this == SUBMITTED || this == ACCEPTED); + } } } diff --git a/core/src/main/resources/db/migration/V389__harmonize_table_attribute_name.sql b/core/src/main/resources/db/migration/V389__harmonize_table_attribute_name.sql index a4a7654105..2af85aa93a 100644 --- a/core/src/main/resources/db/migration/V389__harmonize_table_attribute_name.sql +++ b/core/src/main/resources/db/migration/V389__harmonize_table_attribute_name.sql @@ -2770,6 +2770,58 @@ alter table `decision` foreign key (reviewer_approval_id) references reviewer_approval (id) on delete cascade on update cascade; +/* + * Step 19: urkund_submission & plagiarium_request + */ + +-- table: urkund_submission + +alter table `urkund_submission` drop foreign key `urkund_submission_ibfk_2`; +alter table `urkund_submission` drop foreign key `FK_urkund_submission_document_reference`; + +alter table `urkund_submission` drop key `FK_urkund_submission_document_reference`; +alter table `urkund_submission` drop key `FK_urkund_submission_receiver`; + +alter table `urkund_submission` change `document_reference_id` `document_file_reference_id` bigint(20) not null; +alter table `urkund_submission` change `receiver_id` `receiver_user_id` bigint(20) not null after `document_file_reference_id`; +alter table `urkund_submission` change `submitted` `submitted_date` datetime not null; +alter table `urkund_submission` change `nextPoll` `next_poll_date` datetime not null; +alter table `urkund_submission` change `pollingDelay` `polling_delay` varchar(16) not null; +alter table `urkund_submission` change `reportUrl` `report_url` varchar(255) default null; +alter table `urkund_submission` change `analysisAddress` `analysis_address` varchar(255) default null; + +alter table `urkund_submission` + add constraint fk_urkund_submission_document_file_reference_id + foreign key (document_file_reference_id) references file_reference (id) + on delete cascade on update cascade; + +alter table `urkund_submission` + add constraint fk_urkund_submission_receiver_user_id + foreign key (receiver_user_id) references user (id) + on delete cascade on update cascade; + +-- table: plagiarism_request + +alter table `plagiarism_request` drop foreign key `plagiarism_request_ibfk_2`; +alter table `plagiarism_request` drop foreign key `FK_plagiarism_request_document_reference`; + +alter table `plagiarism_request` drop key `FK_plagiarism_request_document_reference`; +alter table `plagiarism_request` drop key `FK_plagiarism_request_receiver`; + +alter table `plagiarism_request` change `document_reference_id` `document_file_reference_id` bigint(20) not null; +alter table `plagiarism_request` change `receiver_id` `receiver_user_id` bigint(20) not null after `document_file_reference_id`; + +alter table `plagiarism_request` + add constraint fk_plagiarism_request_document_file_reference_id + foreign key (document_file_reference_id) references file_reference (id) + on delete cascade on update cascade; + +alter table `plagiarism_request` + add constraint fk_plagiarism_request_receiver_user_id + foreign key (receiver_user_id) references user (id) + on delete cascade on update cascade; + + /* Useful SQL >>> SQL query for FK-to: