blob: d2894b325aaa918e862d4265086bac9e4d70abaa [file] [log] [blame]
margarethadc731922017-05-22 17:20:42 +02001package de.ids_mannheim.korap.resource.rewrite;
2
3import org.slf4j.Logger;
4import org.slf4j.LoggerFactory;
5
6import com.fasterxml.jackson.databind.JsonNode;
7
8import de.ids_mannheim.korap.config.Attributes;
9import de.ids_mannheim.korap.config.KustvaktConfiguration;
10import de.ids_mannheim.korap.exceptions.KustvaktException;
11import de.ids_mannheim.korap.resource.rewrite.KoralNode.RewriteIdentifier;
12import de.ids_mannheim.korap.user.User;
13import de.ids_mannheim.korap.utils.JsonUtils;
14import de.ids_mannheim.korap.utils.KoralCollectionQueryBuilder;
15
16/**
17 * @author margaretha
18 * @date 22 May 2017
19 */
20public class CollectionRewrite implements RewriteTask.RewriteQuery {
21
22 private static Logger jlog = LoggerFactory.getLogger(CollectionRewrite.class);
23
24 public CollectionRewrite() {
25 super();
26 }
27
28 @Override
29 public JsonNode rewriteQuery(KoralNode node, KustvaktConfiguration config, User user) throws KustvaktException {
30 JsonNode subnode = node.rawNode();
31 KoralCollectionQueryBuilder builder = new KoralCollectionQueryBuilder();
32 if (subnode.at("/collection").isMissingNode()) {
33 if (subnode.has("collection")) {
34 builder.setBaseQuery(JsonUtils.toJSON(subnode));
35 }
36
37 switch (user.getCorpusAccess()) {
38 case PUBLIC:
39 builder = new KoralCollectionQueryBuilder();
40 builder.with("availability = /CC-BY.*/ | availablity = /ACA.*/");
41 break;
42
43 case ALL:
44 builder = new KoralCollectionQueryBuilder();
45 builder.with("availability = /QAO.*/ | availablity = /ACA.*/ | availablity = /CC-BY.*/");
46 break;
47
48 default: // FREE
49 builder = new KoralCollectionQueryBuilder();
50 builder.with("availability = /CC-BY.*/");
51 break;
52 }
53
54 JsonNode rewritten = JsonUtils.readTree(builder.toJSON()).at("/collection");
55 RewriteIdentifier identifier = new KoralNode.RewriteIdentifier(Attributes.AVAILABILITY,
56 rewritten.at("/value"));
57 node.set("collection", rewritten, identifier);
58 jlog.debug(node.at("/collection").toString());
59 }
60
61 return node.rawNode();
62 }
63}