argos/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/MaintenanceController.java

59 lines
2.4 KiB
Java

package eu.eudat.controllers.v2;
import eu.eudat.audit.AuditableAction;
import eu.eudat.authorization.Permission;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.model.Lock;
import eu.eudat.models.data.helpers.responses.ResponseItem;
import eu.eudat.service.elastic.ElasticService;
import eu.eudat.types.ApiMessageCode;
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.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
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);
}
}