dnet-applications/apps/dnet-is-application/src/main/java/eu/dnetlib/is/context/ContextRestController.java

80 lines
2.6 KiB
Java

package eu.dnetlib.is.context;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.DocumentException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import eu.dnetlib.is.context.model.Category;
import eu.dnetlib.is.context.model.Context;
import eu.dnetlib.is.context.model.repository.CategoryRepository;
import eu.dnetlib.is.context.model.repository.ConceptLevel0Repository;
import eu.dnetlib.is.context.model.repository.ConceptLevel1Repository;
import eu.dnetlib.is.context.model.repository.ConceptLevel2Repository;
import eu.dnetlib.is.context.model.repository.ContextRepository;
@RestController
@RequestMapping("/api/contexts")
public class ContextRestController {
@Autowired
private ContextRepository contextRepository;
@Autowired
private CategoryRepository categoryRepository;
@Autowired
private ConceptLevel0Repository conceptLevel0Repository;
@Autowired
private ConceptLevel1Repository conceptLevel1Repository;
@Autowired
private ConceptLevel2Repository conceptLevel2Repository;
@Autowired
private ContextImporter contextImporter;
private static final Log log = LogFactory.getLog(ContextRestController.class);
@GetMapping("/")
public List<Context> listContexts() {
return contextRepository.findAll()
.stream()
.sorted((v1, v2) -> StringUtils.compareIgnoreCase(v1.getId(), v2.getId()))
.collect(Collectors.toList());
}
@GetMapping("/{ctxId}")
public Context getContext(@PathVariable final String ctxId) {
return contextRepository.getById(ctxId);
}
@GetMapping("/{ctxId}/categories")
public Iterable<Category> listCategories(@PathVariable final String ctxId) {
return categoryRepository.findByContextIdOrderById(ctxId);
}
@PostMapping(value = "/load", consumes = "text/plain")
public List<String> loadFromOldProfile(final HttpServletRequest request) throws DocumentException, IOException {
final String xml = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8);
contextImporter.loadFromOldProfile(xml);
return Arrays.asList("Done.");
}
}