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

261 lines
9.2 KiB
Java
Raw Normal View History

2018-06-27 12:29:21 +02:00
package eu.eudat.models.data.datasetwizard;
2017-12-22 14:42:47 +01:00
2018-05-28 11:50:42 +02:00
import eu.eudat.data.entities.*;
2018-07-11 15:47:36 +02:00
import eu.eudat.elastic.entities.Tag;
2017-12-22 14:42:47 +01:00
import eu.eudat.models.DataModel;
2018-06-27 12:29:21 +02:00
import eu.eudat.models.data.dataset.DataRepository;
import eu.eudat.models.data.dataset.Registry;
import eu.eudat.models.data.dataset.Service;
import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel;
import eu.eudat.models.data.dmp.DataManagementPlan;
import eu.eudat.models.data.externaldataset.ExternalDatasetListingModel;
import eu.eudat.models.data.user.composite.PagedDatasetProfile;
2018-05-28 11:50:42 +02:00
import net.minidev.json.JSONValue;
2017-12-22 14:42:47 +01:00
2018-05-28 11:50:42 +02:00
import java.util.*;
2017-12-22 14:42:47 +01:00
import java.util.stream.Collectors;
2018-02-01 10:08:06 +01:00
2018-02-16 08:45:18 +01:00
public class DatasetWizardModel implements DataModel<Dataset, DatasetWizardModel> {
2017-12-22 14:42:47 +01:00
private UUID id;
private String label;
private String reference;
private String uri;
private String description;
private short status;
private Date created;
private DataManagementPlan dmp;
2018-01-19 10:31:05 +01:00
private PagedDatasetProfile datasetProfileDefinition;
2017-12-22 14:42:47 +01:00
private List<Registry> registries;
private List<Service> services;
private List<DataRepository> dataRepositories;
2018-07-11 15:47:36 +02:00
private List<Tag> tags;
2018-01-17 16:06:35 +01:00
private List<ExternalDatasetListingModel> externalDatasets;
2017-12-22 14:42:47 +01:00
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 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;
}
2018-01-19 10:31:05 +01:00
public PagedDatasetProfile getDatasetProfileDefinition() {
2017-12-22 14:42:47 +01:00
return datasetProfileDefinition;
}
2018-01-19 10:31:05 +01:00
public void setDatasetProfileDefinition(PagedDatasetProfile datasetProfileDefinition) {
2017-12-22 14:42:47 +01:00
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;
}
2018-01-17 16:06:35 +01:00
public List<ExternalDatasetListingModel> getExternalDatasets() {
return externalDatasets;
}
public void setExternalDatasets(List<ExternalDatasetListingModel> externalDatasets) {
this.externalDatasets = externalDatasets;
}
2018-07-11 15:47:36 +02:00
public List<Tag> getTags() {
return tags;
}
public void setTags(List<Tag> tags) {
this.tags = tags;
}
2017-12-22 14:42:47 +01:00
@Override
2018-02-16 08:45:18 +01:00
public DatasetWizardModel fromDataModel(Dataset entity) {
2017-12-22 14:42:47 +01:00
this.id = entity.getId();
this.label = entity.getLabel();
2018-01-19 10:31:05 +01:00
this.status = entity.getStatus();
2017-12-22 14:42:47 +01:00
this.reference = entity.getReference();
this.description = entity.getDescription();
this.profile = new DatasetProfileListingModel();
2018-01-19 15:19:14 +01:00
this.uri = entity.getUri();
2017-12-22 14:42:47 +01:00
this.profile.fromDataModel(entity.getProfile());
2018-02-16 08:45:18 +01:00
this.registries = entity.getRegistries().stream().map(item -> new Registry().fromDataModel(item)).collect(Collectors.toList());
2018-05-28 11:50:42 +02:00
this.dataRepositories = entity.getDatasetDataRepositories().stream().map(item -> {
DataRepository dataRepository = new DataRepository().fromDataModel(item.getDataRepository());
if(item.getData()!=null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
dataRepository.setInfo(values.get("info"));
}
return dataRepository;
}).collect(Collectors.toList());
this.services = entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList());
2017-12-22 14:42:47 +01:00
this.created = entity.getCreated();
2018-02-16 08:45:18 +01:00
this.dmp = new DataManagementPlan().fromDataModel(entity.getDmp());
2018-05-28 11:50:42 +02:00
this.externalDatasets = entity.getDatasetExternalDatasets().stream().map(item -> {
ExternalDatasetListingModel externalDatasetListingModel = new ExternalDatasetListingModel().fromDataModel(item.getExternalDataset());
if(item.getData()!=null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
externalDatasetListingModel.setInfo(values.get("info"));
externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
}
return externalDatasetListingModel;
}).collect(Collectors.toList());
2018-02-16 08:45:18 +01:00
return this;
2017-12-22 14:42:47 +01:00
}
@Override
2018-01-17 13:03:51 +01:00
public Dataset toDataModel() throws Exception {
2018-03-21 11:57:56 +01:00
eu.eudat.data.entities.Dataset entity = new eu.eudat.data.entities.Dataset();
2017-12-22 14:42:47 +01:00
entity.setId(this.id);
entity.setLabel(this.label);
entity.setReference(this.reference);
entity.setUri(this.uri);
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-17 16:06:35 +01:00
if (this.registries != null && !this.registries.isEmpty()) {
2018-03-21 11:57:56 +01:00
entity.setRegistries(new HashSet<eu.eudat.data.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-17 16:06:35 +01:00
if (this.dataRepositories != null && !this.dataRepositories.isEmpty()) {
2018-05-28 11:50:42 +02:00
entity.setDatasetDataRepositories(new HashSet<DatasetDataRepository>());
for (DataRepository dataRepositoryModel : this.dataRepositories) {
eu.eudat.data.entities.DataRepository dataRepository = dataRepositoryModel.toDataModel();
DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
datasetDataRepository.setDataRepository(dataRepository);
Map<String,Map<String,String>> data = new HashMap<>();
Map<String,String> values = new HashMap<>();
values.put("info",dataRepositoryModel.getInfo());
data.put("data",values);
datasetDataRepository.setData(JSONValue.toJSONString(data));
entity.getDatasetDataRepositories().add(datasetDataRepository);
2017-12-22 14:42:47 +01:00
}
}
2018-01-17 16:06:35 +01:00
if (this.services != null && !this.services.isEmpty()) {
2018-05-28 11:50:42 +02:00
entity.setServices(new HashSet<DatasetService>());
for (Service serviceModel : this.services) {
eu.eudat.data.entities.Service service = serviceModel.toDataModel();
DatasetService datasetService = new DatasetService();
datasetService.setService(service);
entity.getServices().add(datasetService);
2017-12-22 14:42:47 +01:00
}
}
2018-01-17 16:06:35 +01:00
if (this.externalDatasets != null && !this.externalDatasets.isEmpty()) {
2018-05-28 11:50:42 +02:00
entity.setDatasetExternalDatasets(new HashSet<DatasetExternalDataset>());
2018-01-17 16:06:35 +01:00
for (ExternalDatasetListingModel externalDataset : this.externalDatasets) {
2018-05-28 11:50:42 +02:00
ExternalDataset externalDatasetEntity = externalDataset.toDataModel();
DatasetExternalDataset datasetExternalDataset = new DatasetExternalDataset();
datasetExternalDataset.setExternalDataset(externalDatasetEntity);
Map<String,Map<String,String>> data = new HashMap<>();
Map<String,String> values = new HashMap<>();
values.put("info",externalDataset.getInfo());
values.put("type",externalDataset.getType().toString());
data.put("data",values);
datasetExternalDataset.setData(JSONValue.toJSONString(data));
entity.getDatasetExternalDatasets().add(datasetExternalDataset);
2018-01-17 16:06:35 +01:00
}
}
2017-12-22 14:42:47 +01:00
return entity;
}
2018-01-19 10:31:05 +01:00
@Override
public String getHint() {
2018-02-08 16:54:31 +01:00
return "datasetWizardModel";
2018-01-19 10:31:05 +01:00
}
2017-12-22 14:42:47 +01:00
}