referential integrity update
This commit is contained in:
parent
1cc7933693
commit
265d4cf602
|
@ -33,7 +33,7 @@ public class Field implements DatabaseViewStyleDefinition,XmlSerializable<Field>
|
|||
public void setOrdinal(int ordinal) {
|
||||
this.ordinal = ordinal;
|
||||
}
|
||||
public boolean isDefaultVisibility() {
|
||||
public boolean getDefaultVisibility() {
|
||||
return defaultVisibility;
|
||||
}
|
||||
public void setDefaultVisibility(boolean defaultVisibility) {
|
||||
|
@ -111,7 +111,7 @@ public class Field implements DatabaseViewStyleDefinition,XmlSerializable<Field>
|
|||
public Field fromXml(Element element) {
|
||||
this.id = element.getAttribute("id");
|
||||
this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
|
||||
this.defaultVisibility = Boolean.getBoolean(element.getAttribute("defaultVisibility"));
|
||||
this.defaultVisibility = Boolean.valueOf(element.getAttribute("defaultVisibility")).booleanValue();
|
||||
|
||||
Element extendedDescription = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription");
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ public class Field implements ModelDefinition<entities.xmlmodels.modeldefinition
|
|||
public void setViewStyle(ViewStyle viewStyle) {
|
||||
this.viewStyle = viewStyle;
|
||||
}
|
||||
public boolean isDefaultVisibility() {
|
||||
public boolean getDefaultVisibility() {
|
||||
return defaultVisibility;
|
||||
}
|
||||
public void setDefaultVisibility(boolean defaultVisibility) {
|
||||
|
@ -150,7 +150,7 @@ public class Field implements ModelDefinition<entities.xmlmodels.modeldefinition
|
|||
}
|
||||
@Override
|
||||
public void fromDatabaseDefinition(entities.xmlmodels.viewstyledefinition.Field item) {
|
||||
this.defaultVisibility = item.isDefaultVisibility();
|
||||
this.defaultVisibility = item.getDefaultVisibility();
|
||||
this.description = item.getDescription();
|
||||
this.extendedDescription = item.getExtendedDescription();
|
||||
this.id = item.getId();
|
||||
|
|
|
@ -1,19 +1,25 @@
|
|||
package models.dataset;
|
||||
|
||||
import models.DataModel;
|
||||
import utilities.builders.DomainModelConverter;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Dataset implements DataModel<entities.Dataset>{
|
||||
private UUID id;
|
||||
private String label;
|
||||
private String reference;
|
||||
private String uri;
|
||||
private String description;
|
||||
private short status;
|
||||
private String properties;
|
||||
private entities.DMP dmp;
|
||||
private entities.DatasetProfile profile;
|
||||
private List<Registry> registries;
|
||||
private List<Service> services;
|
||||
private List<DataRepository> dataRepositories;
|
||||
|
@ -74,8 +80,38 @@ public class Dataset implements DataModel<entities.Dataset>{
|
|||
this.dataRepositories = dataRepositories;
|
||||
}
|
||||
|
||||
public void fromDataModel(entities.Dataset entity){
|
||||
|
||||
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
public entities.DMP getDmp() {
|
||||
return dmp;
|
||||
}
|
||||
public void setDmp(entities.DMP dmp) {
|
||||
this.dmp = dmp;
|
||||
}
|
||||
public entities.DatasetProfile getProfile() {
|
||||
return profile;
|
||||
}
|
||||
public void setProfile(entities.DatasetProfile profile) {
|
||||
this.profile = profile;
|
||||
}
|
||||
|
||||
public void fromDataModel(entities.Dataset entity) throws IllegalAccessException, InstantiationException{
|
||||
this.id = entity.getId();
|
||||
this.label = entity.getLabel();
|
||||
this.properties = entity.getProperties();
|
||||
this.reference = entity.getReference();
|
||||
this.dmp = entity.getDmp();
|
||||
this.description = entity.getDescription();
|
||||
this.profile = entity.getProfile();
|
||||
this.registries = new DomainModelConverter<entities.Registry,Registry>().fromDataModel(entity.getRegistries().stream().collect(Collectors.toList()), Registry.class);
|
||||
this.dataRepositories = new DomainModelConverter<entities.DataRepository,DataRepository>().fromDataModel(entity.getDataRepositories().stream().collect(Collectors.toList()), DataRepository.class);
|
||||
this.services = new DomainModelConverter<entities.Service,Service>().fromDataModel(entity.getServices().stream().collect(Collectors.toList()), Service.class);
|
||||
}
|
||||
|
||||
public entities.Dataset toDataModel(){
|
||||
|
@ -86,7 +122,9 @@ public class Dataset implements DataModel<entities.Dataset>{
|
|||
entity.setUri(this.uri);
|
||||
entity.setProperties(this.properties);
|
||||
entity.setStatus(this.status);
|
||||
|
||||
entity.setDmp(dmp);
|
||||
entity.setDescription(this.description);
|
||||
entity.setProfile(profile);
|
||||
if(!this.registries.isEmpty()){
|
||||
entity.setRegistries(new HashSet<entities.Registry>());
|
||||
for(Registry registry:this.registries){
|
||||
|
|
|
@ -105,6 +105,7 @@ public class DataManagementPlan implements DataModel<DMP>{
|
|||
dataManagementPlanEntity.setVersion(this.version);
|
||||
dataManagementPlanEntity.setPrevious(this.previous);
|
||||
dataManagementPlanEntity.setLabel(this.label);
|
||||
dataManagementPlanEntity.setProject(this.project.toDataModel());
|
||||
return dataManagementPlanEntity;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ public class Field implements PropertiesModelBuilder, ModelDefinition<entities.x
|
|||
public void setViewStyle(ViewStyle viewStyle) {
|
||||
this.viewStyle = viewStyle;
|
||||
}
|
||||
public boolean isDefaultVisibility() {
|
||||
public boolean getDefaultVisibility() {
|
||||
return defaultVisibility;
|
||||
}
|
||||
public void setDefaultVisibility(boolean defaultVisibility) {
|
||||
|
@ -145,7 +145,7 @@ public class Field implements PropertiesModelBuilder, ModelDefinition<entities.x
|
|||
}
|
||||
@Override
|
||||
public void fromDatabaseDefinition(entities.xmlmodels.viewstyledefinition.Field item) {
|
||||
this.defaultVisibility = item.isDefaultVisibility();
|
||||
this.defaultVisibility = item.getDefaultVisibility();
|
||||
this.description = item.getDescription();
|
||||
this.extendedDescription = item.getExtendedDescription();
|
||||
this.id = item.getId();
|
||||
|
|
|
@ -59,7 +59,7 @@ public class Group implements PropertiesModelBuilder, ModelDefinition<entities.x
|
|||
public void setExtendedDescription(String extendedDescription) {
|
||||
this.extendedDescription = extendedDescription;
|
||||
}
|
||||
public boolean isDefaultVisibility() {
|
||||
public boolean getDefaultVisibility() {
|
||||
return defaultVisibility;
|
||||
}
|
||||
public void setDefaultVisibility(boolean defaultVisibility) {
|
||||
|
|
|
@ -137,14 +137,39 @@ public class DMPs {
|
|||
|
||||
@Transactional
|
||||
@RequestMapping(method = RequestMethod.POST, value = { "/dmp/update" }, consumes = "application/json", produces="application/json")
|
||||
public @ResponseBody ResponseEntity<Object> updateDMP(@RequestBody DMP dmp) {
|
||||
public @ResponseBody ResponseEntity<Object> updateDMP(@RequestBody DataManagementPlan dataManagementPlan) {
|
||||
|
||||
DMP previousDmp = dMPDao.read(dmp.getId());
|
||||
addNullAndForeignElems(previousDmp, dmp);
|
||||
DMP newDmp = dataManagementPlan.toDataModel();
|
||||
if(newDmp.getOrganisations()!=null&&!newDmp.getOrganisations().isEmpty()){
|
||||
for(entities.Organisation organisation: newDmp.getOrganisations()){
|
||||
OrganisationCriteria criteria = new OrganisationCriteria();
|
||||
criteria.setLike(organisation.getReference());
|
||||
List<entities.Organisation> entries = this.organisationDao.listBy(criteria);
|
||||
if(entries!=null&&!entries.isEmpty())organisation.setId(entries.get(0).getId());
|
||||
else organisation = this.organisationDao.create(organisation);
|
||||
}
|
||||
}
|
||||
|
||||
if(newDmp.getResearchers()!=null&&!newDmp.getResearchers().isEmpty()){
|
||||
for(entities.Researcher researcher : newDmp.getResearchers()){
|
||||
ResearcherCriteria criteria = new ResearcherCriteria();
|
||||
criteria.setLike(researcher.getReference());
|
||||
List<entities.Researcher> entries = this.researcherDao.listBy(criteria);
|
||||
if(entries!=null&&!entries.isEmpty())researcher.setId(entries.get(0).getId());
|
||||
else researcher = this.researcherDao.create(researcher);
|
||||
}
|
||||
}
|
||||
|
||||
DMP previousDmp = dMPDao.read(dataManagementPlan.getId());
|
||||
previousDmp.setResearchers(newDmp.getResearchers());
|
||||
previousDmp.setOrganisations(newDmp.getOrganisations());
|
||||
previousDmp.setLabel(dataManagementPlan.getLabel());
|
||||
previousDmp.setVersion(dataManagementPlan.getVersion());
|
||||
previousDmp.setStatus((short)dataManagementPlan.getStatus());
|
||||
//if(!previousDmp.getProject().getId().equals(newDmp.getProject().getId()))previousDmp.setProject(projectDao.read(newDmp.getProject().getId()));
|
||||
|
||||
try {
|
||||
DMP updatedDMP = dMPDao.update(dmp);
|
||||
DMP updatedDMP = dMPDao.update(previousDmp);
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(SerializerProvider.toJson(updatedDMP));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
@ -188,15 +213,11 @@ public class DMPs {
|
|||
@RequestMapping(method = RequestMethod.POST, value = { "/dmp/softdelete" }, consumes = "application/json", produces="text/plain")
|
||||
public @ResponseBody ResponseEntity<Object> softDelete(@RequestBody DMP dmp) {
|
||||
|
||||
DMP d = dMPDao.read(dmp.getId());
|
||||
d.setStatus(new Short("-1"));
|
||||
|
||||
try {
|
||||
int code = updateDMP(d).getStatusCodeValue();
|
||||
if(code>199 && code<300)
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body("DELETED!");
|
||||
else
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"msg\":\"Could not soft delete DMP!\"");
|
||||
try{
|
||||
DMP d = dMPDao.read(dmp.getId());
|
||||
d.setStatus(new Short("-1"));
|
||||
dMPDao.update(d);
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"msg\":\"Could not soft delete DMP!\"");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"msg\":\"Could not soft delete DMP!\"");
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package rest.entities;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -40,6 +41,7 @@ import models.criteria.DataRepositoryCriteria;
|
|||
import models.criteria.RegistryCriteria;
|
||||
import models.criteria.ServiceCriteria;
|
||||
import responses.RestResponse;
|
||||
import utilities.builders.DomainModelConverter;
|
||||
|
||||
|
||||
@RestController
|
||||
|
@ -80,8 +82,9 @@ public class Datasets {
|
|||
public @ResponseBody ResponseEntity<Object> getDataset(@PathVariable("id") String id) {
|
||||
try {
|
||||
Dataset ds = datasetDao.read(UUID.fromString(id));
|
||||
ds.setDmp(ds.getDmp());
|
||||
return ResponseEntity.status(HttpStatus.OK).body(SerializerProvider.toJson(ds));
|
||||
models.dataset.Dataset dataset = new models.dataset.Dataset();
|
||||
dataset.fromDataModel(ds);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(SerializerProvider.toJson(dataset));
|
||||
}
|
||||
catch(Exception ex) {
|
||||
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Erroneous input: "+ex.getMessage());
|
||||
|
@ -175,22 +178,59 @@ public class Datasets {
|
|||
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST, value = { "/dataset/update" }, consumes = "application/json", produces="application/json")
|
||||
public @ResponseBody ResponseEntity<Object> updateDataset(@RequestBody String datasetJson) {
|
||||
public @ResponseBody ResponseEntity<Object> updateDataset(@RequestBody models.dataset.Dataset modeldataset) {
|
||||
|
||||
Dataset dataset;
|
||||
try {
|
||||
dataset = SerializerProvider.fromJson(datasetJson, Dataset.class);
|
||||
} catch (Exception e) {
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Could not create or update Dataset! Reason: " + e.getMessage());
|
||||
Dataset dataset = modeldataset.toDataModel();
|
||||
|
||||
if(dataset.getDataRepositories()!=null&&!dataset.getDataRepositories().isEmpty()){
|
||||
for(entities.DataRepository dataRepo : dataset.getDataRepositories()){
|
||||
DataRepositoryCriteria criteria = new DataRepositoryCriteria();
|
||||
criteria.setLike(dataRepo.getReference());
|
||||
List<entities.DataRepository> entries = this.dataRepositoryDao.listBy(criteria);
|
||||
if(entries!=null&&!entries.isEmpty())dataRepo.setId(entries.get(0).getId());
|
||||
else dataRepo = this.dataRepositoryDao.create(dataRepo);
|
||||
}
|
||||
}
|
||||
|
||||
SafeCleanAttribs.clean(dataset);
|
||||
if(dataset.getServices()!=null&&!dataset.getServices().isEmpty()){
|
||||
for(entities.Service service : dataset.getServices()){
|
||||
ServiceCriteria criteria = new ServiceCriteria();
|
||||
criteria.setLike(service.getReference());
|
||||
List<entities.Service> entries = this.serviceDao.listBy(criteria);
|
||||
if(entries!=null&&!entries.isEmpty())service.setId(entries.get(0).getId());
|
||||
else service = this.serviceDao.create(service);
|
||||
}
|
||||
}
|
||||
|
||||
if(dataset.getRegistries()!=null&&!dataset.getRegistries().isEmpty()){
|
||||
for(entities.Registry registry : dataset.getRegistries()){
|
||||
RegistryCriteria criteria = new RegistryCriteria();
|
||||
criteria.setLike(registry.getReference());
|
||||
List<entities.Registry> entries = this.registryDao.listBy(criteria);
|
||||
if(entries!=null&&!entries.isEmpty())registry.setId( entries.get(0).getId());
|
||||
else registry = this.registryDao.create(registry);
|
||||
}
|
||||
}
|
||||
|
||||
Dataset olddataset = datasetDao.read(modeldataset.getId());
|
||||
|
||||
olddataset.getServices().clear();
|
||||
olddataset.setServices(dataset.getServices());
|
||||
|
||||
olddataset.getDataRepositories().clear();
|
||||
olddataset.setDataRepositories(dataset.getDataRepositories());
|
||||
olddataset.getRegistries().clear();
|
||||
olddataset.setRegistries(dataset.getRegistries());
|
||||
|
||||
olddataset.setLabel(modeldataset.getLabel());
|
||||
olddataset.setDescription(modeldataset.getDescription());
|
||||
//SafeCleanAttribs.clean(dataset);
|
||||
|
||||
if("".equals(dataset.getReference())) dataset.setReference(null);
|
||||
if("".equals(dataset.getProperties())) dataset.setProperties(null);
|
||||
|
||||
try {
|
||||
dataset = datasetDao.update(dataset);
|
||||
dataset = datasetDao.update(olddataset);
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(SerializerProvider.toJson(dataset));
|
||||
}
|
||||
catch(Exception ex) {
|
||||
|
@ -221,15 +261,12 @@ public class Datasets {
|
|||
|
||||
@RequestMapping(method = RequestMethod.POST, value = { "/dataset/softdelete" }, consumes = "application/json", produces="text/plain")
|
||||
public @ResponseBody ResponseEntity<Object> softDelete(@RequestBody Dataset dataset) {
|
||||
|
||||
Dataset d = datasetDao.read(dataset.getId());
|
||||
d.setStatus(new Short("-1"));
|
||||
try {
|
||||
int code = updateDataset(SerializerProvider.toJson(d)).getStatusCodeValue();
|
||||
if(code>199 && code<300)
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body("DELETED!");
|
||||
else
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"msg\":\"Could not soft delete dataset!\"");
|
||||
|
||||
Dataset d = datasetDao.read(dataset.getId());
|
||||
d.setStatus(new Short("-1"));
|
||||
dataset = datasetDao.update(dataset);
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"msg\":\"Could not soft delete dataset!\"");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"msg\":\"Could not soft delete dataset!\"");
|
||||
|
|
|
@ -217,16 +217,13 @@ export class DatasetsComponent implements OnInit {
|
|||
editRow(item, event) {
|
||||
if (event.toElement.id == "editDataset") {
|
||||
//this.dataset = item;
|
||||
this.dataset.label = item.label;
|
||||
this.dataset.uri = item.uri;
|
||||
this.dataset.created = item.created;
|
||||
this.dataset.status = item.status;
|
||||
this.dataset.description = item.description;
|
||||
//this.dataset.dmp = item.dmp;
|
||||
this.dataset.profile = item.profile == null ? null : item.profile.id;
|
||||
this.dataset.id = item.id;
|
||||
this.dataset.creator = item.creator;
|
||||
$("#newDatasetModal").modal("show");
|
||||
|
||||
this.serverService.getDatasetByID(item.id).subscribe(item=>{
|
||||
this.dataset = item;
|
||||
this.dataset.profile = item.profile.id;
|
||||
$("#newDatasetModal").modal("show");
|
||||
}
|
||||
)
|
||||
}
|
||||
else if (event.toElement.id == "describeDataset") {
|
||||
this.describeDataset(item);
|
||||
|
|
Loading…
Reference in New Issue