package eu.eudat.controllers; import eu.eudat.audit.AuditableAction; import eu.eudat.authorization.Permission; import eu.eudat.service.elastic.ElasticService; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.auditing.AuditService; import gr.cite.tools.logging.LoggerService; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(path = "api/maintenance") public class MaintenanceController { private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(MaintenanceController.class)); private final AuthorizationService authorizationService; private final ElasticService elasticService; private final AuditService auditService; @Autowired public MaintenanceController(AuthorizationService authorizationService, ElasticService elasticService, AuditService auditService) { this.authorizationService = authorizationService; this.elasticService = elasticService; this.auditService = auditService; } @RequestMapping(method = RequestMethod.POST, value = {"/index/elastic"}) public void generateIndex() throws Exception { logger.debug("generate elastic "); this.authorizationService.authorizeForce(Permission.ManageElastic); elasticService.resetDmpIndex(); elasticService.resetDescriptionIndex(); this.auditService.track(AuditableAction.Maintenance_GenerateElastic); } @RequestMapping(method = RequestMethod.DELETE, value = {"/index/elastic"}) public void clearIndex() throws Exception { logger.debug("clear elastic"); this.authorizationService.authorizeForce(Permission.ManageElastic); elasticService.deleteDescriptionIndex(); elasticService.deleteDmpIndex(); this.auditService.track(AuditableAction.Maintenance_ClearElastic); } }