argos/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/DataManagementPlanNewVersio...

193 lines
5.5 KiB
Java
Raw Normal View History

2018-06-27 12:29:21 +02:00
package eu.eudat.models.data.dmp;
2018-02-07 10:56:30 +01:00
2018-03-21 11:57:56 +01:00
import eu.eudat.data.entities.DMP;
2018-02-07 10:56:30 +01:00
import eu.eudat.models.DataModel;
2018-06-27 12:29:21 +02:00
import eu.eudat.models.data.dataset.Dataset;
import eu.eudat.models.data.project.Project;
import eu.eudat.models.data.userinfo.UserInfo;
import eu.eudat.logic.utilities.builders.XmlBuilder;
2018-02-07 10:56:30 +01:00
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.*;
2018-02-16 08:45:18 +01:00
import java.util.stream.Collectors;
2018-02-07 10:56:30 +01:00
/**
* Created by ikalyvas on 2/5/2018.
*/
2018-02-16 08:45:18 +01:00
public class DataManagementPlanNewVersionModel implements DataModel<DMP, DataManagementPlanNewVersionModel> {
2018-02-07 10:56:30 +01:00
private UUID id;
private String label;
2018-02-08 09:42:02 +01:00
private UUID groupId;
2018-02-07 10:56:30 +01:00
private int version;
private int status;
private String description;
private List<AssociatedProfile> profiles;
2018-06-27 12:29:21 +02:00
private eu.eudat.models.data.project.Project project;
2018-02-07 10:56:30 +01:00
private List<Organisation> organisations;
private List<Researcher> researchers;
private List<UserInfo> associatedUsers;
2018-06-27 12:29:21 +02:00
private eu.eudat.models.data.userinfo.UserInfo creator;
2018-02-07 10:56:30 +01:00
private Date created;
private List<Dataset> datasets;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
2018-02-08 09:42:02 +01:00
public UUID getGroupId() {
return groupId;
2018-02-07 10:56:30 +01:00
}
2018-02-08 09:42:02 +01:00
public void setGroupId(UUID groupId) {
this.groupId = groupId;
2018-02-07 10:56:30 +01:00
}
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<AssociatedProfile> getProfiles() {
return profiles;
}
public void setProfiles(List<AssociatedProfile> profiles) {
this.profiles = profiles;
}
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
public List<Organisation> getOrganisations() {
return organisations;
}
public void setOrganisations(List<Organisation> organisations) {
this.organisations = organisations;
}
public List<Researcher> getResearchers() {
return researchers;
}
public void setResearchers(List<Researcher> researchers) {
this.researchers = researchers;
}
public List<UserInfo> getAssociatedUsers() {
return associatedUsers;
}
public void setAssociatedUsers(List<UserInfo> associatedUsers) {
this.associatedUsers = associatedUsers;
}
public UserInfo getCreator() {
return creator;
}
public void setCreator(UserInfo creator) {
this.creator = creator;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public List<Dataset> getDatasets() {
return datasets;
}
public void setDatasets(List<Dataset> datasets) {
this.datasets = datasets;
}
@Override
2018-02-16 08:45:18 +01:00
public DataManagementPlanNewVersionModel fromDataModel(DMP entity) {
return null;
2018-02-07 10:56:30 +01:00
}
@Override
public DMP toDataModel() throws Exception {
DMP entity = new DMP();
entity.setId(this.id);
2018-02-16 08:45:18 +01:00
entity.setUsers(new HashSet<>(this.associatedUsers.stream().map(item -> item.toDataModel()).collect(Collectors.toList())));
2018-02-07 10:56:30 +01:00
entity.setDescription(this.description);
entity.setStatus((short) this.status);
2018-02-08 09:42:02 +01:00
entity.setGroupId(this.groupId == null ? UUID.randomUUID() : this.groupId);
2018-02-07 10:56:30 +01:00
entity.setCreated(new Date());
entity.setLabel(this.label);
entity.setModified(new Date());
2018-03-21 11:57:56 +01:00
List<eu.eudat.data.entities.Dataset> datasets = new LinkedList<>();
2018-02-08 09:42:02 +01:00
if (this.datasets != null) {
for (Dataset dataset : this.datasets) {
2018-03-21 11:57:56 +01:00
eu.eudat.data.entities.Dataset entityDataset = new eu.eudat.data.entities.Dataset();
2018-02-07 10:56:30 +01:00
entityDataset.setId(dataset.getId());
datasets.add(entityDataset);
}
entity.setDataset(new HashSet<>(datasets));
}
if (this.organisations != null && !this.organisations.isEmpty())
2018-02-16 08:45:18 +01:00
entity.setOrganisations(new HashSet<>(this.organisations.stream().map(item -> item.toDataModel()).collect(Collectors.toList())));
2018-02-07 10:56:30 +01:00
if (this.researchers != null && !this.researchers.isEmpty())
2018-02-16 08:45:18 +01:00
entity.setResearchers(new HashSet<>(this.researchers.stream().map(item -> item.toDataModel()).collect(Collectors.toList())));
2018-02-07 10:56:30 +01:00
if (this.project != null) entity.setProject(this.project.toDataModel());
if (this.profiles != null) {
Document associatedProfileDoc = XmlBuilder.getDocument();
Element associatedProfilesElement = associatedProfileDoc.createElement("profiles");
for (AssociatedProfile associatedProfile : this.profiles) {
associatedProfilesElement.appendChild(associatedProfile.toXml(associatedProfileDoc));
}
associatedProfileDoc.appendChild(associatedProfilesElement);
entity.setAssociatedDmps(XmlBuilder.generateXml(associatedProfileDoc));
}
return entity;
}
@Override
public String getHint() {
return null;
}
}