106 lines
4.6 KiB
Java
106 lines
4.6 KiB
Java
package eu.eudat.controllers.v2;
|
|
|
|
import eu.eudat.audit.AuditableAction;
|
|
import eu.eudat.commons.validation.ValidationFilterAnnotation;
|
|
import eu.eudat.model.Description;
|
|
import eu.eudat.model.Prefilling;
|
|
import eu.eudat.model.PrefillingLookup;
|
|
import eu.eudat.model.censorship.DescriptionCensor;
|
|
import eu.eudat.model.censorship.PrefillingCensor;
|
|
import eu.eudat.model.persist.DescriptionProfilingRequest;
|
|
import eu.eudat.model.persist.DescriptionProfilingWithDataRequest;
|
|
import eu.eudat.service.prefilling.PrefillingService;
|
|
import gr.cite.tools.auditing.AuditService;
|
|
import gr.cite.tools.data.censor.CensorFactory;
|
|
import gr.cite.tools.exception.MyApplicationException;
|
|
import gr.cite.tools.exception.MyForbiddenException;
|
|
import gr.cite.tools.exception.MyNotFoundException;
|
|
import gr.cite.tools.logging.LoggerService;
|
|
import gr.cite.tools.logging.MapLogEntry;
|
|
import jakarta.xml.bind.JAXBException;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.xml.sax.SAXException;
|
|
|
|
import javax.xml.parsers.ParserConfigurationException;
|
|
import java.io.IOException;
|
|
import java.util.AbstractMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@RestController
|
|
@RequestMapping(path = "api/prefilling")
|
|
public class PrefillingController {
|
|
|
|
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(PrefillingController.class));
|
|
|
|
@Autowired
|
|
|
|
|
|
private final AuditService auditService;
|
|
|
|
private final PrefillingService prefillingService;
|
|
|
|
private final CensorFactory censorFactory;
|
|
|
|
|
|
public PrefillingController(
|
|
AuditService auditService,
|
|
PrefillingService prefillingService,
|
|
CensorFactory censorFactory) {
|
|
this.auditService = auditService;
|
|
this.prefillingService = prefillingService;
|
|
this.censorFactory = censorFactory;
|
|
}
|
|
|
|
@PostMapping("query")
|
|
public List<Prefilling> query(@RequestBody PrefillingLookup model) throws MyApplicationException, MyForbiddenException, MyNotFoundException {
|
|
this.censorFactory.censor(PrefillingCensor.class).censor(model.getProject(), null);
|
|
|
|
logger.debug(new MapLogEntry("persisting" + Prefilling.class.getSimpleName()).And("model", model));
|
|
List<Prefilling> items = this.prefillingService.getPrefillings(model);
|
|
|
|
this.auditService.track(AuditableAction.Prefilling_Query, Map.ofEntries(
|
|
new AbstractMap.SimpleEntry<String, Object>("model", model)
|
|
));
|
|
|
|
return items;
|
|
}
|
|
|
|
@PostMapping("generate")
|
|
@ValidationFilterAnnotation(validator = DescriptionProfilingRequest.DescriptionProfilingRequestValidator.ValidatorName, argumentName = "model")
|
|
public Description generate(@RequestBody DescriptionProfilingRequest model) throws MyApplicationException, MyForbiddenException, MyNotFoundException, JAXBException, ParserConfigurationException, IOException, InstantiationException, IllegalAccessException, SAXException {
|
|
logger.debug(new MapLogEntry("persisting" + Prefilling.class.getSimpleName()).And("model", model));
|
|
|
|
this.censorFactory.censor(DescriptionCensor.class).censor(model.getProject(), null);
|
|
|
|
Description item = this.prefillingService.getPrefilledDescription(model);
|
|
|
|
this.auditService.track(AuditableAction.Prefilling_Generate, Map.ofEntries(
|
|
new AbstractMap.SimpleEntry<String, Object>("model", model)
|
|
));
|
|
|
|
return item;
|
|
}
|
|
|
|
@PostMapping("generate-with-data")
|
|
@ValidationFilterAnnotation(validator = DescriptionProfilingWithDataRequest.DescriptionProfilingWithDataRequestValidator.ValidatorName, argumentName = "model")
|
|
public Description generateWithData(@RequestBody DescriptionProfilingWithDataRequest model) throws MyApplicationException, MyForbiddenException, MyNotFoundException, JAXBException, ParserConfigurationException, IOException, InstantiationException, IllegalAccessException, SAXException {
|
|
logger.debug(new MapLogEntry("persisting" + Prefilling.class.getSimpleName()).And("model", model));
|
|
|
|
this.censorFactory.censor(DescriptionCensor.class).censor(model.getProject(), null);
|
|
|
|
Description item = this.prefillingService.getPrefilledDescriptionUsingData(model);
|
|
|
|
this.auditService.track(AuditableAction.Prefilling_GenerateWithData, Map.ofEntries(
|
|
new AbstractMap.SimpleEntry<String, Object>("model", model)
|
|
));
|
|
|
|
return item;
|
|
}
|
|
}
|