blob: 4d9052e88fddc28307290b1f40fe61a8f0781f96 [file] [log] [blame]
margarethab097fb02021-02-22 19:28:33 +01001package de.ids_mannheim.korap.dto.converter;
2
3import org.springframework.stereotype.Component;
4
5import com.fasterxml.jackson.databind.JsonNode;
6
7import de.ids_mannheim.korap.dto.QueryDto;
8import de.ids_mannheim.korap.entity.QueryDO;
9import de.ids_mannheim.korap.exceptions.KustvaktException;
10import de.ids_mannheim.korap.utils.JsonUtils;
11
12/**
13 * QueryConverter prepares data transfer objects (DTOs) from
14 * {@link QueryDO} entities. DTO structure defines controllers
15 * output, namely the structure of JSON objects in HTTP responses.
16 *
17 * @author margaretha
18 *
19 */
20@Component
21public class QueryConverter {
22
23 public QueryDto createQueryDto (QueryDO query,
24 String statistics) throws KustvaktException {
25
26 QueryDto dto = new QueryDto();
27 dto.setId(query.getId());
28 dto.setName(query.getName());
29 dto.setCreatedBy(query.getCreatedBy());
30 dto.setRequiredAccess(query.getRequiredAccess().name());
31 dto.setStatus(query.getStatus());
32 dto.setDescription(query.getDescription());
33 dto.setType(query.getType().displayName());
34
35 dto.setQuery(query.getQuery());
36 dto.setQueryLanguage(query.getQueryLanguage());
37
38 JsonNode kq = JsonUtils.readTree(query.getKoralQuery());
39 dto.setKoralQuery(kq);
40
41 if (statistics != null) {
42 JsonNode node = JsonUtils.readTree(statistics);
43 dto.setNumberOfDoc(node.at("/documents").asInt());
44 dto.setNumberOfParagraphs(node.at("/paragraphs").asInt());
45 dto.setNumberOfSentences(node.at("/sentences").asInt());
46 dto.setNumberOfTokens(node.at("/tokens").asInt());
47 }
48 return dto;
49
50 }
51}