blob: 1048f1bda3f9180d8b9a3e9920b9e6bbe8c71e48 [file] [log] [blame]
Michael Hanl1e18cb42015-08-06 20:57:35 +02001package de.ids_mannheim.korap.resource.rewrite;
2
margarethac38c8562017-11-21 19:02:08 +01003import java.util.Collection;
4
Michael Hanl1e18cb42015-08-06 20:57:35 +02005import com.fasterxml.jackson.databind.JsonNode;
margarethac38c8562017-11-21 19:02:08 +01006
Michael Hanldaf86602016-05-12 14:31:52 +02007import de.ids_mannheim.korap.config.BeanInjectable;
Michael Hanldaf86602016-05-12 14:31:52 +02008import de.ids_mannheim.korap.config.ContextHolder;
Michael Hanl1e18cb42015-08-06 20:57:35 +02009import de.ids_mannheim.korap.config.KustvaktConfiguration;
Michael Hanl3a1dfe12016-02-17 11:26:07 +010010import de.ids_mannheim.korap.exceptions.KustvaktException;
Michael Hanl1e18cb42015-08-06 20:57:35 +020011import de.ids_mannheim.korap.resource.LayerMapper;
margarethac38c8562017-11-21 19:02:08 +010012import de.ids_mannheim.korap.resource.rewrite.KoralNode.RewriteIdentifier;
Michael Hanl59bff812015-10-27 23:10:32 +010013import de.ids_mannheim.korap.user.User;
Michael Hanldaf86602016-05-12 14:31:52 +020014import edu.emory.mathcs.backport.java.util.Collections;
15
Michael Hanl1e18cb42015-08-06 20:57:35 +020016/**
17 * @author hanl
18 * @date 30/06/2015
19 */
Michael Hanle56bb892016-05-25 17:34:41 +020020public class FoundryInject implements RewriteTask.IterableRewritePath,
Michael Hanl8abaf9e2016-05-23 16:46:35 +020021 BeanInjectable {
Michael Hanldaf86602016-05-12 14:31:52 +020022
23 private Collection userdaos;
24
Michael Hanl8abaf9e2016-05-23 16:46:35 +020025
26 public FoundryInject () {
Michael Hanldaf86602016-05-12 14:31:52 +020027 this.userdaos = Collections.emptyList();
28 }
29
Michael Hanl1e18cb42015-08-06 20:57:35 +020030
Michael Hanl1e18cb42015-08-06 20:57:35 +020031 @Override
margaretha1bc9cca2018-12-11 15:09:44 +010032 public KoralNode rewriteQuery (KoralNode node, KustvaktConfiguration config,
Michael Hanl3a1dfe12016-02-17 11:26:07 +010033 User user) throws KustvaktException {
Michael Hanl1e18cb42015-08-06 20:57:35 +020034 LayerMapper mapper;
margaretha38d530e2017-07-11 19:06:50 +020035 // EM: do not use DB
36// if (user != null && !userdaos.isEmpty()) {
37// UserDataDbIface dao = BeansFactory.getTypeFactory()
38// .getTypeInterfaceBean(userdaos, UserSettings.class);
39// mapper = new LayerMapper(config, dao.get(user));
40// }
41// else
Michael Hanl1e18cb42015-08-06 20:57:35 +020042 mapper = new LayerMapper(config);
margarethac38c8562017-11-21 19:02:08 +010043
44 if (node.get("@type").equals("koral:span")) {
margarethaf4c3de32017-12-20 15:19:10 +010045 if (!node.isMissingNode("/wrap")){
margarethad6f39d52018-12-06 14:21:39 +010046 node = node.at("/wrap");
margaretha1bc9cca2018-12-11 15:09:44 +010047 JsonNode term = rewriteQuery(node, config, user).rawNode();
margarethadfecb4b2017-12-12 19:32:30 +010048 node.replaceAt("/wrap", term, new RewriteIdentifier("koral:term", "replace"));
49 }
margarethac38c8562017-11-21 19:02:08 +010050 }
51 else if (node.get("@type").equals("koral:term") && !node.has("foundry")) {
Michael Hanl1e18cb42015-08-06 20:57:35 +020052 String layer;
Michael Hanlf0785322015-11-13 16:14:45 +010053 if (node.has("layer"))
54 layer = node.get("layer");
Michael Hanl1e18cb42015-08-06 20:57:35 +020055 else
Michael Hanlf0785322015-11-13 16:14:45 +010056 layer = node.get("key");
Michael Hanl1e18cb42015-08-06 20:57:35 +020057 String foundry = mapper.findFoundry(layer);
Michael Hanlc0ed00f2016-06-23 14:33:10 +020058 if (foundry != null)
59 node.put("foundry", foundry);
Michael Hanl1e18cb42015-08-06 20:57:35 +020060 }
margaretha1bc9cca2018-12-11 15:09:44 +010061 return node;
Michael Hanl1e18cb42015-08-06 20:57:35 +020062 }
Michael Hanl022543e2015-11-17 21:25:25 +010063
Michael Hanl8abaf9e2016-05-23 16:46:35 +020064
Michael Hanl022543e2015-11-17 21:25:25 +010065 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +020066 public String path () {
Michael Hanl022543e2015-11-17 21:25:25 +010067 return "query";
68 }
69
Michael Hanl8abaf9e2016-05-23 16:46:35 +020070
Michael Hanl022543e2015-11-17 21:25:25 +010071 @Override
Michael Hanl33829ec2016-05-28 17:03:38 +020072 public JsonNode rewriteResult (KoralNode node) {
Michael Hanl022543e2015-11-17 21:25:25 +010073 return null;
74 }
Michael Hanldaf86602016-05-12 14:31:52 +020075
Michael Hanl8abaf9e2016-05-23 16:46:35 +020076
Michael Hanldaf86602016-05-12 14:31:52 +020077 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +020078 public <T extends ContextHolder> void insertBeans (T beans) {
Michael Hanlf8fcc7a2016-06-03 17:41:07 +020079 this.userdaos = beans.getUserDataProviders();
Michael Hanldaf86602016-05-12 14:31:52 +020080 }
Michael Hanl1e18cb42015-08-06 20:57:35 +020081}