package eu.eudat.models.datasetwizard; import eu.eudat.data.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.externaldataset.ExternalDatasetListingModel; import eu.eudat.models.user.composite.PagedDatasetProfile; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; public class DatasetWizardModel implements DataModel { private UUID id; private String label; private String reference; private String uri; private String description; private short status; private Date created; private DataManagementPlan dmp; private PagedDatasetProfile datasetProfileDefinition; private List registries; private List services; private List dataRepositories; private List externalDatasets; 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; } public PagedDatasetProfile getDatasetProfileDefinition() { return datasetProfileDefinition; } public void setDatasetProfileDefinition(PagedDatasetProfile datasetProfileDefinition) { this.datasetProfileDefinition = datasetProfileDefinition; } public List getRegistries() { return registries; } public void setRegistries(List registries) { this.registries = registries; } public List getServices() { return services; } public void setServices(List services) { this.services = services; } public List getDataRepositories() { return dataRepositories; } public void setDataRepositories(List dataRepositories) { this.dataRepositories = dataRepositories; } public DatasetProfileListingModel getProfile() { return profile; } public void setProfile(DatasetProfileListingModel profile) { this.profile = profile; } public List getExternalDatasets() { return externalDatasets; } public void setExternalDatasets(List externalDatasets) { this.externalDatasets = externalDatasets; } @Override public DatasetWizardModel fromDataModel(Dataset entity) { this.id = entity.getId(); this.label = entity.getLabel(); this.status = entity.getStatus(); this.reference = entity.getReference(); this.description = entity.getDescription(); this.profile = new DatasetProfileListingModel(); this.uri = entity.getUri(); this.profile.fromDataModel(entity.getProfile()); this.registries = entity.getRegistries().stream().map(item -> new Registry().fromDataModel(item)).collect(Collectors.toList()); this.dataRepositories = entity.getDataRepositories().stream().map(item -> new DataRepository().fromDataModel(item)).collect(Collectors.toList()); this.services = entity.getServices().stream().map(item -> new Service().fromDataModel(item)).collect(Collectors.toList()); this.created = entity.getCreated(); this.dmp = new DataManagementPlan().fromDataModel(entity.getDmp()); this.externalDatasets = entity.getExternalDatasets().stream().map(item -> new ExternalDatasetListingModel().fromDataModel(item)).collect(Collectors.toList()); return this; } @Override public Dataset toDataModel() throws Exception { eu.eudat.data.entities.Dataset entity = new eu.eudat.data.entities.Dataset(); 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); entity.setCreated(this.created != null ? this.created : new Date()); entity.setModified(new Date()); entity.setProfile(profile.toDataModel()); ///TODO if (this.registries != null && !this.registries.isEmpty()) { entity.setRegistries(new HashSet()); for (Registry registry : this.registries) { entity.getRegistries().add(registry.toDataModel()); } } if (this.dataRepositories != null && !this.dataRepositories.isEmpty()) { entity.setDataRepositories(new HashSet()); for (DataRepository dataRepository : this.dataRepositories) { entity.getDataRepositories().add(dataRepository.toDataModel()); } } if (this.services != null && !this.services.isEmpty()) { entity.setServices(new HashSet()); for (Service service : this.services) { entity.getServices().add(service.toDataModel()); } } if (this.externalDatasets != null && !this.externalDatasets.isEmpty()) { entity.setExternalDatasets(new HashSet()); for (ExternalDatasetListingModel externalDataset : this.externalDatasets) { entity.getExternalDatasets().add(externalDataset.toDataModel()); } } return entity; } @Override public String getHint() { return "datasetWizardModel"; } }