blob: 17683ce40b7dadcafaea68035d806e9e56342843 [file] [log] [blame]
Michael Hanl1e18cb42015-08-06 20:57:35 +02001package de.ids_mannheim.korap.resource.rewrite;
2
3import com.fasterxml.jackson.databind.JsonNode;
Michael Hanl59bff812015-10-27 23:10:32 +01004import de.ids_mannheim.korap.config.KustvaktConfiguration;
5import de.ids_mannheim.korap.user.User;
Michael Hanl1e18cb42015-08-06 20:57:35 +02006
7/**
8 * @author hanl
9 * @date 30/06/2015
10 */
Michael Hanlf0785322015-11-13 16:14:45 +010011public interface RewriteTask {
Michael Hanl1e18cb42015-08-06 20:57:35 +020012
Michael Hanlf0785322015-11-13 16:14:45 +010013 interface RewriteBefore extends RewriteTask {
14 /**
15 * @param node Json node in KoralNode wrapper
16 * @param config {@link KustvaktConfiguration} singleton instance to use default configuration parameters
17 * @param user injected by rewrite handler if available. Might cause {@link NullPointerException} if not checked properly
18 * @return
19 */
20 JsonNode preProcess(KoralNode node, KustvaktConfiguration config,
21 User user);
Michael Hanl1e18cb42015-08-06 20:57:35 +020022 }
23
Michael Hanlf0785322015-11-13 16:14:45 +010024 interface RewriteAfter extends RewriteTask {
25 JsonNode postProcess(KoralNode node);
26 }
Michael Hanlac4962c2015-09-21 22:21:05 +020027
28 /**
29 * query rewrites get injected the entire query from root containing all child nodes
30 * <p/>
Michael Hanlf0785322015-11-13 16:14:45 +010031 * {@link RewriteQuery} does not allow the deletion of the root node or subnode through KoralNode.
Michael Hanlac4962c2015-09-21 22:21:05 +020032 * The {@link de.ids_mannheim.korap.resource.rewrite.RewriteHandler} will igonore respecitve invalid requests
Michael Hanlac4962c2015-09-21 22:21:05 +020033 */
Michael Hanlf0785322015-11-13 16:14:45 +010034 interface RewriteQuery extends RewriteBefore, RewriteAfter {
Michael Hanlac4962c2015-09-21 22:21:05 +020035 }
36
Michael Hanlac4962c2015-09-21 22:21:05 +020037 /**
Michael Hanlf0785322015-11-13 16:14:45 +010038 * Koral term nodes that are subject to rewrites
Michael Hanlac4962c2015-09-21 22:21:05 +020039 * Be aware that node rewrites are processed before query rewrites. Thus query rewrite may override previous node rewrites
Michael Hanl59bff812015-10-27 23:10:32 +010040 * <p/>
Michael Hanlf0785322015-11-13 16:14:45 +010041 * {@link RewriteNode} rewrite supports the deletion of the respective node by simply setting the node invalid in KoralNode
Michael Hanlac4962c2015-09-21 22:21:05 +020042 */
Michael Hanlf0785322015-11-13 16:14:45 +010043 interface RewriteNode extends RewriteBefore {
44 }
45
46 /**
47 * koral token nodes that are subject to rewrites
48 * Be aware that node rewrites are processed before query rewrites. Thus query rewrite may override previous node rewrites
49 * {@link RewriteKoralToken} rewrite DOES NOT support the deletion of the respective node
50 */
51 interface RewriteKoralToken extends RewriteBefore {
Michael Hanlac4962c2015-09-21 22:21:05 +020052 }
Michael Hanl1e18cb42015-08-06 20:57:35 +020053}