Skip to content

Commit 14b4035

Browse files
committed
first working version of approved usage update
1 parent fb90f7d commit 14b4035

2 files changed

Lines changed: 51 additions & 2 deletions

File tree

docs/ClassDiagram.drawio.svg

Lines changed: 4 additions & 0 deletions
Loading

src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/rest/DataSetResourceController.java

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package eu.dzhw.fdz.metadatamanagement.datasetmanagement.rest;
22

33
import java.net.URI;
4+
import java.util.ArrayList;
5+
import java.util.List;
46

7+
import org.springframework.beans.factory.annotation.Autowired;
58
import org.springframework.http.ResponseEntity;
69
import org.springframework.stereotype.Controller;
710
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -15,10 +18,16 @@
1518

1619
import eu.dzhw.fdz.metadatamanagement.common.rest.GenericDomainObjectResourceController;
1720
import eu.dzhw.fdz.metadatamanagement.common.service.CrudService;
21+
import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ApprovedUsageEnum;
22+
import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.DataPackage;
23+
import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.repository.DataPackageRepository;
1824
import eu.dzhw.fdz.metadatamanagement.datasetmanagement.domain.DataSet;
25+
import eu.dzhw.fdz.metadatamanagement.datasetmanagement.domain.SubDataSet;
26+
import eu.dzhw.fdz.metadatamanagement.projectmanagement.repository.DataAcquisitionProjectRepository;
1927
import eu.dzhw.fdz.metadatamanagement.usermanagement.security.UserInformationProvider;
2028
import io.swagger.v3.oas.annotations.Operation;
2129
import io.swagger.v3.oas.annotations.tags.Tag;
30+
import lombok.extern.slf4j.Slf4j;
2231

2332
/**
2433
* DataSet REST Controller which overrides default spring data rest methods.
@@ -27,9 +36,13 @@
2736
*/
2837
@Controller
2938
@Tag(name = "Dataset Resource", description = "Endpoints used by the MDM to manage datasets.")
39+
@Slf4j
3040
public class DataSetResourceController
3141
extends GenericDomainObjectResourceController<DataSet, CrudService<DataSet>> {
3242

43+
@Autowired
44+
DataPackageRepository dataPackageRepository;
45+
3346
public DataSetResourceController(CrudService<DataSet> crudService,
3447
UserInformationProvider userInformationProvider) {
3548
super(crudService, userInformationProvider);
@@ -46,16 +59,17 @@ public ResponseEntity<DataSet> getDomainObject(@PathVariable String id) {
4659
return super.getDomainObject(id);
4760
}
4861

49-
5062
@Override
5163
@PostMapping(value = "/api/data-sets")
52-
public ResponseEntity<?> postDomainObject(@RequestBody DataSet dataSet) {
64+
public ResponseEntity<?> postDomainObject(@RequestBody DataSet dataSet) {
65+
addApprovedUsageIfDownloadableContent(dataSet);
5366
return super.postDomainObject(dataSet);
5467
}
5568

5669
@Override
5770
@PutMapping(value = "/api/data-sets/{id:.+}")
5871
public ResponseEntity<?> putDomainObject(@RequestBody DataSet dataSet) {
72+
addApprovedUsageIfDownloadableContent(dataSet);
5973
return super.putDomainObject(dataSet);
6074
}
6175

@@ -69,4 +83,35 @@ public ResponseEntity<?> deleteDomainObject(@PathVariable String id) {
6983
protected URI buildLocationHeaderUri(DataSet domainObject) {
7084
return UriComponentsBuilder.fromPath("/api/data-sets/" + domainObject.getId()).build().toUri();
7185
}
86+
87+
private void addApprovedUsageIfDownloadableContent(DataSet dataSet) {
88+
boolean hasDownloadableContent = false;
89+
var subsets = dataSet.getSubDataSets();
90+
for (SubDataSet subDataSet : subsets) {
91+
String accessWay = subDataSet.getAccessWay();
92+
if (accessWay != null && accessWay.toLowerCase().contains("cuf")) {
93+
hasDownloadableContent = true;
94+
}
95+
}
96+
97+
log.info("Data set has downloadable content, updating approved usages: " + hasDownloadableContent);
98+
if(hasDownloadableContent) {
99+
String projectId = dataSet.getDataAcquisitionProjectId();
100+
List<DataPackage> dataPackages = dataPackageRepository.findByDataAcquisitionProjectId(projectId);
101+
log.info("found " + dataPackages.size() + " data packages for project " + projectId);
102+
103+
if(dataPackages.size() > 0 ) {
104+
log.info("updated approved usages for project " + projectId);
105+
DataPackage entity = dataPackages.get(0);
106+
List<ApprovedUsageEnum> approvedUsages = entity.getApprovedUsageList();
107+
if(approvedUsages == null) {
108+
approvedUsages = new ArrayList<>();
109+
entity.setApprovedUsageList(approvedUsages);
110+
}
111+
approvedUsages.add(ApprovedUsageEnum.TEACHING_PURPOSES);
112+
113+
dataPackageRepository.save(entity);
114+
}
115+
}
116+
}
72117
}

0 commit comments

Comments
 (0)