blob: 73615e0a30d7fb2fe69329476825d71da9f9f95f [file] [log] [blame]
margaretha398f4722019-01-09 19:07:20 +01001package de.ids_mannheim.korap.rewrite;
Michael Hanl1e18cb42015-08-06 20:57:35 +02002
margaretha4fa4b062019-01-28 19:43:30 +01003import org.springframework.beans.factory.annotation.Autowired;
margarethac38c8562017-11-21 19:02:08 +01004
Michael Hanl1e18cb42015-08-06 20:57:35 +02005import com.fasterxml.jackson.databind.JsonNode;
margarethac38c8562017-11-21 19:02:08 +01006
Michael Hanl1e18cb42015-08-06 20:57:35 +02007import de.ids_mannheim.korap.config.KustvaktConfiguration;
Michael Hanl3a1dfe12016-02-17 11:26:07 +01008import de.ids_mannheim.korap.exceptions.KustvaktException;
margaretha398f4722019-01-09 19:07:20 +01009import de.ids_mannheim.korap.rewrite.KoralNode.RewriteIdentifier;
Michael Hanl59bff812015-10-27 23:10:32 +010010import de.ids_mannheim.korap.user.User;
margaretha4fa4b062019-01-28 19:43:30 +010011import de.ids_mannheim.korap.user.UserSettingProcessor;
Michael Hanldaf86602016-05-12 14:31:52 +020012
Michael Hanl1e18cb42015-08-06 20:57:35 +020013/**
margaretha4fa4b062019-01-28 19:43:30 +010014 * @author hanl, margaretha
Michael Hanl1e18cb42015-08-06 20:57:35 +020015 * @date 30/06/2015
16 */
margaretha4fa4b062019-01-28 19:43:30 +010017public class FoundryInject implements RewriteTask.IterableRewritePath {
Michael Hanldaf86602016-05-12 14:31:52 +020018
margaretha4fa4b062019-01-28 19:43:30 +010019 @Autowired
20 protected LayerMapper mapper;
margaretha35e1ca22023-11-16 22:00:01 +010021
Michael Hanl1e18cb42015-08-06 20:57:35 +020022 @Override
margaretha1bc9cca2018-12-11 15:09:44 +010023 public KoralNode rewriteQuery (KoralNode node, KustvaktConfiguration config,
Michael Hanl3a1dfe12016-02-17 11:26:07 +010024 User user) throws KustvaktException {
margaretha35e1ca22023-11-16 22:00:01 +010025
margarethac38c8562017-11-21 19:02:08 +010026 if (node.get("@type").equals("koral:span")) {
margaretha35e1ca22023-11-16 22:00:01 +010027 if (!node.isMissingNode("/wrap")) {
margarethad6f39d52018-12-06 14:21:39 +010028 node = node.at("/wrap");
margaretha1bc9cca2018-12-11 15:09:44 +010029 JsonNode term = rewriteQuery(node, config, user).rawNode();
margaretha35e1ca22023-11-16 22:00:01 +010030 node.replaceAt("/wrap", term,
31 new RewriteIdentifier("koral:term", "replace"));
margarethadfecb4b2017-12-12 19:32:30 +010032 }
margarethac38c8562017-11-21 19:02:08 +010033 }
margaretha35e1ca22023-11-16 22:00:01 +010034 else if (node.get("@type").equals("koral:term")
35 && !node.has("foundry")) {
Michael Hanl1e18cb42015-08-06 20:57:35 +020036 String layer;
margaretha35e1ca22023-11-16 22:00:01 +010037 if (node.has("layer")) {
Michael Hanlf0785322015-11-13 16:14:45 +010038 layer = node.get("layer");
margaretha4fa4b062019-01-28 19:43:30 +010039 }
margaretha35e1ca22023-11-16 22:00:01 +010040 else {
Michael Hanlf0785322015-11-13 16:14:45 +010041 layer = node.get("key");
margaretha4fa4b062019-01-28 19:43:30 +010042 }
43 UserSettingProcessor settingProcessor = null;
margaretha35e1ca22023-11-16 22:00:01 +010044 if (user != null) {
margaretha4fa4b062019-01-28 19:43:30 +010045 settingProcessor = user.getUserSettingProcessor();
46 }
47 String foundry = mapper.findFoundry(layer, settingProcessor);
Michael Hanlc0ed00f2016-06-23 14:33:10 +020048 if (foundry != null)
49 node.put("foundry", foundry);
Michael Hanl1e18cb42015-08-06 20:57:35 +020050 }
margaretha1bc9cca2018-12-11 15:09:44 +010051 return node;
Michael Hanl1e18cb42015-08-06 20:57:35 +020052 }
Michael Hanl022543e2015-11-17 21:25:25 +010053
54 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +020055 public String path () {
Michael Hanl022543e2015-11-17 21:25:25 +010056 return "query";
57 }
58
59 @Override
Michael Hanl33829ec2016-05-28 17:03:38 +020060 public JsonNode rewriteResult (KoralNode node) {
Michael Hanl022543e2015-11-17 21:25:25 +010061 return null;
62 }
Michael Hanl1e18cb42015-08-06 20:57:35 +020063}