Coverage Summary for Class: Project (org.kitodo.data.database.beans)
Class |
Method, %
|
Line, %
|
Project |
57,8%
(37/64)
|
66,3%
(69/104)
|
Project$HibernateProxy$dsoeY2LZ |
Project$HibernateProxy$pyRA48Xt |
Total |
57,8%
(37/64)
|
66,3%
(69/104)
|
/*
* (c) Kitodo. Key to digital objects e. V. <contact@kitodo.org>
*
* This file is part of the Kitodo project.
*
* It is licensed under GNU General Public License version 3 or later.
*
* For the full copyright and license information, please read the
* GPL3-License.txt file that was distributed with this source code.
*/
package org.kitodo.data.database.beans;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ForeignKey;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.kitodo.data.database.persistence.ProjectDAO;
@Entity
@Table(name = "project")
public class Project extends BaseIndexedBean implements Comparable<Project> {
@Column(name = "title", nullable = false, unique = true)
private String title;
@Column(name = "dmsImportRootPath")
private String dmsImportRootPath;
@Column(name = "metsRightsOwner")
private String metsRightsOwner = "";
@Column(name = "metsRightsOwnerLogo")
private String metsRightsOwnerLogo = "";
@Column(name = "metsRightsOwnerSite")
private String metsRightsOwnerSite = "";
@Column(name = "metsRightsOwnerMail")
private String metsRightsOwnerMail = "";
@Column(name = "metsDigiprovReference")
private String metsDigiprovReference = "";
@Column(name = "metsDigiprovPresentation")
private String metsDigiprovPresentation = "";
@Column(name = "metsPointerPath")
private String metsPointerPath = "";
@Column(name = "metsPurl")
private String metsPurl = "";
@Column(name = "metsContentId")
private String metsContentIDs = "";
@Column(name = "startDate")
private Date startDate;
@Column(name = "endDate")
private Date endDate;
@Column(name = "numberOfPages")
private Integer numberOfPages;
@Column(name = "numberOfVolumes")
private Integer numberOfVolumes;
@Column(name = "active")
private Boolean active = true;
@ManyToMany(mappedBy = "projects", cascade = CascadeType.PERSIST)
private List<User> users;
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Process> processes;
@ManyToMany(mappedBy = "projects", cascade = CascadeType.PERSIST)
private List<Template> templates;
@ManyToOne
@JoinColumn(name = "default_importconfiguration_id",
foreignKey = @ForeignKey(name = "FK_project_default_importconfiguration_id"))
private ImportConfiguration defaultImportConfiguration;
@ManyToOne
@JoinColumn(name = "default_child_process_importconfiguration_id",
foreignKey = @ForeignKey(name = "FK_project_default_child_process_importconfiguration_id"))
private ImportConfiguration defaultChildProcessImportConfiguration;
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Folder> folders;
@ManyToOne
@JoinColumn(name = "client_id", foreignKey = @ForeignKey(name = "FK_project_client_id"))
private Client client;
/**
* Folder to use as source for generation of derived resources.
*/
@ManyToOne
@JoinColumn(name = "generatorSource_folder_id", foreignKey = @ForeignKey(name = "FK_project_generatorSource_folder_id"))
private Folder generatorSource;
/**
* Folder with media to use for the viewer.
*/
@ManyToOne
@JoinColumn(name = "mediaView_folder_id", foreignKey = @ForeignKey(name = "FK_project_mediaView_folder_id"))
private Folder mediaView;
/**
* Folder with media to use for the preview.
*/
@ManyToOne
@JoinColumn(name = "preview_folder_id", foreignKey = @ForeignKey(name = "FK_project_preview_folder_id"))
private Folder preview;
/**
* Folder with media to use for the video preview.
*/
@ManyToOne
@JoinColumn(name = "preview_audio_folder_id", foreignKey = @ForeignKey(name = "FK_project_preview_audio_folder_id"))
private Folder audioPreview;
/**
* Folder with media to use for the video viewer.
*/
@ManyToOne
@JoinColumn(name = "mediaView_audio_folder_id", foreignKey = @ForeignKey(name = "FK_project_mediaView_audio_folder_id"))
private Folder audioMediaView;
/**
* Folder with media to use for the video preview.
*/
@ManyToOne
@JoinColumn(name = "preview_video_folder_id", foreignKey = @ForeignKey(name = "FK_project_preview_video_folder_id"))
private Folder videoPreview;
/**
* Folder with media to use for the video viewer.
*/
@ManyToOne
@JoinColumn(name = "mediaView_video_folder_id", foreignKey = @ForeignKey(name = "FK_project_mediaView_video_folder_id"))
private Folder videoMediaView;
/**
* Constructor.
*/
public Project() {
this.processes = new ArrayList<>();
this.users = new ArrayList<>();
this.folders = new ArrayList<>();
this.dmsImportRootPath = "";
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
/**
* Returns the list of users of this project.
*
* @return the folders
*/
public List<User> getUsers() {
initialize(new ProjectDAO(), this.users);
if (Objects.isNull(this.users)) {
this.users = new ArrayList<>();
}
return this.users;
}
public void setUsers(List<User> users) {
this.users = users;
}
/**
* Returns the list of processes of this project.
*
* @return the folders
*/
public List<Process> getProcesses() {
initialize(new ProjectDAO(), this.processes);
if (Objects.isNull(this.processes)) {
this.processes = new ArrayList<>();
}
return this.processes;
}
public void setProcesses(List<Process> processes) {
this.processes = processes;
}
/**
* Get templates.
*
* @return value of templates
*/
public List<Template> getTemplates() {
initialize(new ProjectDAO(), this.templates);
if (Objects.isNull(this.templates)) {
this.templates = new ArrayList<>();
}
return this.templates;
}
/**
* Set templates.
*
* @param templates
* as list of templates
*/
public void setTemplates(List<Template> templates) {
this.templates = templates;
}
public String getDmsImportRootPath() {
return this.dmsImportRootPath;
}
public void setDmsImportRootPath(String dmsImportRootPath) {
this.dmsImportRootPath = dmsImportRootPath;
}
/**
* Returns the list of folders of this project.
*
* @return the folders
*/
public List<Folder> getFolders() {
initialize(new ProjectDAO(), this.folders);
if (Objects.isNull(this.folders)) {
this.folders = new ArrayList<>();
}
return this.folders;
}
/**
* Sets the list of folders of this project.
*
* @param folders
* list of folders to set
*/
public void setFolders(List<Folder> folders) {
this.folders = folders;
}
public String getMetsRightsOwner() {
return this.metsRightsOwner;
}
public void setMetsRightsOwner(String metsRightsOwner) {
this.metsRightsOwner = metsRightsOwner;
}
public String getMetsRightsOwnerLogo() {
return this.metsRightsOwnerLogo;
}
public void setMetsRightsOwnerLogo(String metsRightsOwnerLogo) {
this.metsRightsOwnerLogo = metsRightsOwnerLogo;
}
public String getMetsRightsOwnerSite() {
return this.metsRightsOwnerSite;
}
public void setMetsRightsOwnerSite(String metsRightsOwnerSite) {
this.metsRightsOwnerSite = metsRightsOwnerSite;
}
public String getMetsRightsOwnerMail() {
return this.metsRightsOwnerMail;
}
public void setMetsRightsOwnerMail(String metsRigthsOwnerMail) {
this.metsRightsOwnerMail = metsRigthsOwnerMail;
}
public String getMetsDigiprovReference() {
return this.metsDigiprovReference;
}
public void setMetsDigiprovReference(String metsDigiprovReference) {
this.metsDigiprovReference = metsDigiprovReference;
}
public String getMetsDigiprovPresentation() {
return this.metsDigiprovPresentation;
}
public void setMetsDigiprovPresentation(String metsDigiprovPresentation) {
this.metsDigiprovPresentation = metsDigiprovPresentation;
}
public String getMetsPointerPath() {
return this.metsPointerPath;
}
public void setMetsPointerPath(String metsPointerPath) {
this.metsPointerPath = metsPointerPath;
}
public void setMetsPurl(String metsPurl) {
this.metsPurl = metsPurl;
}
public String getMetsPurl() {
return this.metsPurl;
}
public void setMetsContentIDs(String contentIDs) {
this.metsContentIDs = contentIDs;
}
public String getMetsContentIDs() {
return this.metsContentIDs;
}
/**
* Get number of volumes.
*
* @return number of volumes for this project
*/
public Integer getNumberOfVolumes() {
if (this.numberOfVolumes == null) {
this.numberOfVolumes = 0;
}
return this.numberOfVolumes;
}
/**
* Set number of volumes.
*
* @param numberOfVolumes
* for this project
*/
public void setNumberOfVolumes(Integer numberOfVolumes) {
this.numberOfVolumes = numberOfVolumes;
}
/**
* Get number of pages.
*
* @return number of pages
*/
public Integer getNumberOfPages() {
if (this.numberOfPages == null) {
this.numberOfPages = 0;
}
return this.numberOfPages;
}
/**
* Set number of pages.
*
* @param numberOfPages
* the number of pages to set
*/
public void setNumberOfPages(Integer numberOfPages) {
this.numberOfPages = numberOfPages;
}
/**
* Get start date.
*
* @return the start date
*/
public Date getStartDate() {
if (this.startDate == null) {
this.startDate = new Date();
}
return this.startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
/**
* Get end date.
*
* @return the end date
*/
public Date getEndDate() {
if (this.endDate == null) {
this.endDate = new Date();
}
return this.endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
/**
* Set if project is active.
*
* @param active
* whether project is active
*/
public void setActive(boolean active) {
this.active = active;
}
/**
* Get if project is active.
*
* @return whether project is active
*/
public boolean isActive() {
return this.active;
}
/**
* Gets client.
*
* @return The client.
*/
public Client getClient() {
return client;
}
/**
* Sets client.
*
* @param client
* The client.
*/
public void setClient(Client client) {
this.client = client;
}
/**
* Returns the folder to use as source for generation of derived resources
* of this project.
*
* @return the source folder for generation
*/
public Folder getGeneratorSource() {
return generatorSource;
}
/**
* Sets the folder to use as source for generation of derived resources of
* this project.
*
* @param generatorSource
* source folder for generation to set
*/
public void setGeneratorSource(Folder generatorSource) {
this.generatorSource = generatorSource;
}
/**
* Returns the folder to use for the media view.
*
* @return media view folder
*/
public Folder getMediaView() {
return mediaView;
}
/**
* Sets the folder to use for the media view.
*
* @param mediaView
* media view folder
*/
public void setMediaView(Folder mediaView) {
this.mediaView = mediaView;
}
/**
* Returns the folder to use for preview.
*
* @return preview folder
*/
public Folder getPreview() {
return preview;
}
/**
* Sets the folder to use for preview.
*
* @param preview
* preview folder
*/
public void setPreview(Folder preview) {
this.preview = preview;
}
/**
* Returns the folder to use for audio preview.
*
* @return audio preview folder
*/
public Folder getAudioPreview() {
return audioPreview;
}
/**
* Sets the folder to use for audio preview.
*
* @param audioPreview
* audio preview folder
*/
public void setAudioPreview(Folder audioPreview) {
this.audioPreview = audioPreview;
}
/**
* Returns the folder to use for the audio media view.
*
* @return the audio media view folder
*/
public Folder getAudioMediaView() {
return audioMediaView;
}
/**
* Sets the folder to use for the audio media view.
*
* @param audioMediaView
* audio media view folder
*/
public void setAudioMediaView(Folder audioMediaView) {
this.audioMediaView = audioMediaView;
}
/**
* Returns the folder to use for video preview.
*
* @return video preview folder
*/
public Folder getVideoPreview() {
return videoPreview;
}
/**
* Sets the folder to use for video preview.
*
* @param videoPreview
* video preview folder
*/
public void setVideoPreview(Folder videoPreview) {
this.videoPreview = videoPreview;
}
/**
* Returns the folder to use for the video media view.
*
* @return the video media view folder
*/
public Folder getVideoMediaView() {
return videoMediaView;
}
/**
* Sets the folder to use for the video media view.
*
* @param videoMediaView
* video media view folder
*/
public void setVideoMediaView(Folder videoMediaView) {
this.videoMediaView = videoMediaView;
}
/**
* Get defaultImportConfiguration.
*
* @return value of defaultImportConfiguration
*/
public ImportConfiguration getDefaultImportConfiguration() {
return defaultImportConfiguration;
}
/**
* Set defaultImportConfiguration.
*
* @param defaultImportConfiguration as org.kitodo.data.database.beans.ImportConfiguration
*/
public void setDefaultImportConfiguration(ImportConfiguration defaultImportConfiguration) {
this.defaultImportConfiguration = defaultImportConfiguration;
}
/**
* Get defaultChildProcessImportConfiguration.
*
* @return value of defaultChildProcessImportConfiguration
*/
public ImportConfiguration getDefaultChildProcessImportConfiguration() {
return defaultChildProcessImportConfiguration;
}
/**
* Set defaultChildProcessImportConfiguration.
*
* @param defaultChildProcessImportConfiguration as org.kitodo.data.database.beans.ImportConfiguration
*/
public void setDefaultChildProcessImportConfiguration(ImportConfiguration defaultChildProcessImportConfiguration) {
this.defaultChildProcessImportConfiguration = defaultChildProcessImportConfiguration;
}
@Override
public int compareTo(Project project) {
return this.getTitle().compareTo(project.getTitle());
}
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object instanceof Project) {
Project project = (Project) object;
return Objects.equals(this.getId(), project.getId());
}
return false;
}
@Override
public int hashCode() {
return this.title == null ? 0 : this.title.hashCode();
}
}