argos/dmp-backend/src/main/java/eu/eudat/models/datasetwizard/DatasetWizardModel.java

202 lines
6.1 KiB
Java
Raw Normal View History

2017-12-22 14:42:47 +01:00
package eu.eudat.models.datasetwizard;
2018-01-12 11:17:37 +01:00
import eu.eudat.entities.DMP;
2017-12-22 14:42:47 +01:00
import eu.eudat.entities.Dataset;
import eu.eudat.models.DataModel;
import eu.eudat.models.dataset.DataRepository;
import eu.eudat.models.dataset.Registry;
import eu.eudat.models.dataset.Service;
import eu.eudat.models.datasetprofile.DatasetProfileListingModel;
import eu.eudat.models.dmp.DataManagementPlan;
import eu.eudat.models.user.composite.DatasetProfile;
import eu.eudat.utilities.builders.DomainModelConverter;
2018-01-12 11:17:37 +01:00
import java.util.*;
2017-12-22 14:42:47 +01:00
import java.util.stream.Collectors;
/**
* Created by ikalyvas on 12/22/2017.
*/
public class DatasetWizardModel implements DataModel<Dataset> {
private UUID id;
private String label;
private String reference;
private String uri;
private String description;
private short status;
private String properties;
private Date created;
private DataManagementPlan dmp;
private eu.eudat.models.user.composite.DatasetProfile datasetProfileDefinition;
private List<Registry> registries;
private List<Service> services;
private List<DataRepository> dataRepositories;
private DatasetProfileListingModel profile;
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;
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public short getStatus() {
return status;
}
public void setStatus(short status) {
this.status = status;
}
public String getProperties() {
return properties;
}
public void setProperties(String properties) {
this.properties = properties;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public DataManagementPlan getDmp() {
return dmp;
}
public void setDmp(DataManagementPlan dmp) {
this.dmp = dmp;
}
public DatasetProfile getDatasetProfileDefinition() {
return datasetProfileDefinition;
}
public void setDatasetProfileDefinition(DatasetProfile datasetProfileDefinition) {
this.datasetProfileDefinition = datasetProfileDefinition;
}
public List<Registry> getRegistries() {
return registries;
}
public void setRegistries(List<Registry> registries) {
this.registries = registries;
}
public List<Service> getServices() {
return services;
}
public void setServices(List<Service> services) {
this.services = services;
}
public List<DataRepository> getDataRepositories() {
return dataRepositories;
}
public void setDataRepositories(List<DataRepository> dataRepositories) {
this.dataRepositories = dataRepositories;
}
public DatasetProfileListingModel getProfile() {
return profile;
}
public void setProfile(DatasetProfileListingModel profile) {
this.profile = profile;
}
@Override
public void fromDataModel(Dataset entity) throws InstantiationException, IllegalAccessException {
this.id = entity.getId();
this.label = entity.getLabel();
this.properties = entity.getProperties();
this.reference = entity.getReference();
this.description = entity.getDescription();
this.profile = new DatasetProfileListingModel();
this.profile.fromDataModel(entity.getProfile());
2018-01-08 15:57:21 +01:00
this.registries = new DomainModelConverter<eu.eudat.entities.Registry, Registry>().fromDataModel(entity.getRegistries().stream().collect(Collectors.toList()), Registry.class);
this.dataRepositories = new DomainModelConverter<eu.eudat.entities.DataRepository, DataRepository>().fromDataModel(entity.getDataRepositories().stream().collect(Collectors.toList()), DataRepository.class);
this.services = new DomainModelConverter<eu.eudat.entities.Service, Service>().fromDataModel(entity.getServices().stream().collect(Collectors.toList()), Service.class);
2017-12-22 14:42:47 +01:00
this.created = entity.getCreated();
2018-01-12 11:17:37 +01:00
this.dmp = new DomainModelConverter<eu.eudat.entities.DMP, DataManagementPlan>().fromDataModel(Arrays.asList(entity.getDmp()), DataManagementPlan.class).get(0);
2017-12-22 14:42:47 +01:00
}
@Override
2018-01-17 13:03:51 +01:00
public Dataset toDataModel() throws Exception {
2017-12-22 14:42:47 +01:00
eu.eudat.entities.Dataset entity = new eu.eudat.entities.Dataset();
entity.setId(this.id);
entity.setLabel(this.label);
entity.setReference(this.reference);
entity.setUri(this.uri);
entity.setProperties(this.properties);
entity.setStatus(this.status);
entity.setDmp(dmp.toDataModel());
entity.setDescription(this.description);
2018-01-08 15:57:21 +01:00
entity.setCreated(this.created != null ? this.created : new Date());
2017-12-22 14:42:47 +01:00
entity.setModified(new Date());
entity.setProfile(profile.toDataModel()); ///TODO
2018-01-08 15:57:21 +01:00
if (!this.registries.isEmpty()) {
2017-12-22 14:42:47 +01:00
entity.setRegistries(new HashSet<eu.eudat.entities.Registry>());
2018-01-08 15:57:21 +01:00
for (Registry registry : this.registries) {
2017-12-22 14:42:47 +01:00
entity.getRegistries().add(registry.toDataModel());
}
}
2018-01-08 15:57:21 +01:00
if (!this.dataRepositories.isEmpty()) {
2017-12-22 14:42:47 +01:00
entity.setDataRepositories(new HashSet<eu.eudat.entities.DataRepository>());
2018-01-08 15:57:21 +01:00
for (DataRepository dataRepository : this.dataRepositories) {
2017-12-22 14:42:47 +01:00
entity.getDataRepositories().add(dataRepository.toDataModel());
}
}
2018-01-08 15:57:21 +01:00
if (!this.services.isEmpty()) {
2017-12-22 14:42:47 +01:00
entity.setServices(new HashSet<eu.eudat.entities.Service>());
2018-01-08 15:57:21 +01:00
for (Service service : this.services) {
2017-12-22 14:42:47 +01:00
entity.getServices().add(service.toDataModel());
}
}
return entity;
}
}