TSK-299: added rest endpoint to export workbaskets
first version initial setup revert core reverted changes added query for domain in WorkbasketDefinitionController created bean WorkbasketDefinitionMapper and autowired WorkbasketService deleted ImportExportController fixed rebase error
This commit is contained in:
parent
9d41c4e06b
commit
468d2668ff
|
@ -25,6 +25,7 @@ import pro.taskana.TaskanaEngine;
|
|||
import pro.taskana.Workbasket;
|
||||
import pro.taskana.WorkbasketService;
|
||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||
import pro.taskana.rest.resource.mapper.WorkbasketDefinitionMapper;
|
||||
import pro.taskana.rest.serialization.WorkbasketMixIn;
|
||||
import pro.taskana.sampledata.SampleDataGenerator;
|
||||
|
||||
|
@ -109,4 +110,8 @@ public class RestApplication {
|
|||
return new ModelMapper();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public WorkbasketDefinitionMapper getWorkbasketDefinitionMapper() {
|
||||
return new WorkbasketDefinitionMapper();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
package pro.taskana.rest;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import pro.taskana.Workbasket;
|
||||
import pro.taskana.WorkbasketService;
|
||||
import pro.taskana.WorkbasketSummary;
|
||||
import pro.taskana.exceptions.NotAuthorizedException;
|
||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||
import pro.taskana.rest.resource.WorkbasketDefinition;
|
||||
import pro.taskana.rest.resource.mapper.WorkbasketDefinitionMapper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(path = "/v1/workbasketdefinitions", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
public class WorkbasketDefinitionController {
|
||||
|
||||
@Autowired
|
||||
private WorkbasketService workbasketService;
|
||||
|
||||
@Autowired
|
||||
private WorkbasketDefinitionMapper workbasketDefinitionMapper;
|
||||
|
||||
@GetMapping
|
||||
public ResponseEntity<List<WorkbasketDefinition>> exportWorkbaskets(@RequestParam(required = false) String domain) {
|
||||
try {
|
||||
List<WorkbasketDefinition> basketExports = new ArrayList<>();
|
||||
for (WorkbasketSummary summary : workbasketService.getWorkbaskets()) {
|
||||
if (domain == null || summary.getDomain().equals(domain)) {
|
||||
Workbasket workbasket = workbasketService.getWorkbasket(summary.getId());
|
||||
basketExports.add(workbasketDefinitionMapper.toResource(workbasket));
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(basketExports, HttpStatus.OK);
|
||||
} catch (WorkbasketNotFoundException e) {
|
||||
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
||||
} catch (NotAuthorizedException e) {
|
||||
return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package pro.taskana.rest.resource;
|
||||
|
||||
import pro.taskana.Workbasket;
|
||||
import pro.taskana.WorkbasketAccessItem;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* this class represents a workbasket including its distro targets and authorisations.
|
||||
*/
|
||||
public class WorkbasketDefinition {
|
||||
private final Workbasket workbasket;
|
||||
private final Set<String> distroTargets;
|
||||
private final List<WorkbasketAccessItem> authorizations;
|
||||
|
||||
public WorkbasketDefinition(Workbasket workbasket, Set<String> distroTargets, List<WorkbasketAccessItem> authorizations) {
|
||||
this.workbasket = workbasket;
|
||||
this.distroTargets = distroTargets;
|
||||
this.authorizations = authorizations;
|
||||
}
|
||||
|
||||
public Workbasket getWorkbasket() {
|
||||
return workbasket;
|
||||
}
|
||||
|
||||
public Set<String> getDistroTargets() {
|
||||
return distroTargets;
|
||||
}
|
||||
|
||||
public List<WorkbasketAccessItem> getAuthorizations() {
|
||||
return authorizations;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "WorkbasketDefinition{"
|
||||
+ "workbasket=" + workbasket.toString()
|
||||
+ ", authorizations=" + authorizations.toString()
|
||||
+ '}';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package pro.taskana.rest.resource.mapper;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import pro.taskana.Workbasket;
|
||||
import pro.taskana.WorkbasketAccessItem;
|
||||
import pro.taskana.WorkbasketService;
|
||||
import pro.taskana.WorkbasketSummary;
|
||||
import pro.taskana.exceptions.NotAuthorizedException;
|
||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||
import pro.taskana.rest.resource.WorkbasketDefinition;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class WorkbasketDefinitionMapper {
|
||||
|
||||
@Autowired
|
||||
private WorkbasketService workbasketService;
|
||||
|
||||
/**
|
||||
* maps the distro targets to their id to remove overhead.
|
||||
* @param basket {@link Workbasket} which will be converted
|
||||
* @return a {@link WorkbasketDefinition}, containing the {@code basket},
|
||||
* its ditribution targets and its authorizations
|
||||
* @throws NotAuthorizedException if the user is not authorized
|
||||
* @throws WorkbasketNotFoundException if {@code basket} is an unknown workbasket
|
||||
*/
|
||||
public WorkbasketDefinition toResource(Workbasket basket) throws NotAuthorizedException, WorkbasketNotFoundException {
|
||||
List<WorkbasketAccessItem> authorizations = workbasketService.getWorkbasketAuthorizations(basket.getKey());
|
||||
Set<String> distroTargets = workbasketService.getDistributionTargets(basket.getId()).stream()
|
||||
.map(WorkbasketSummary::getId)
|
||||
.collect(Collectors.toSet());
|
||||
return new WorkbasketDefinition(basket,distroTargets,authorizations);
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue