json pointer rewrite restriction parameter
diff --git a/src/main/java/de/ids_mannheim/korap/resource/rewrite/DocMatchRewrite.java b/src/main/java/de/ids_mannheim/korap/resource/rewrite/DocMatchRewrite.java
new file mode 100644
index 0000000..cc58817
--- /dev/null
+++ b/src/main/java/de/ids_mannheim/korap/resource/rewrite/DocMatchRewrite.java
@@ -0,0 +1,65 @@
+package de.ids_mannheim.korap.resource.rewrite;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.KustvaktConfiguration;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.handlers.DocumentDao;
+import de.ids_mannheim.korap.resources.Document;
+import de.ids_mannheim.korap.user.User;
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.Element;
+
+/**
+ * @author hanl
+ * @date 12/11/2015
+ */
+public class DocMatchRewrite implements RewriteTask.IterableRewriteAt {
+
+ private DocumentDao docDao;
+ private Cache cache;
+
+ public DocMatchRewrite() {
+ this.docDao = new DocumentDao(
+ BeanConfiguration.getBeans().getPersistenceClient());
+ this.cache = CacheManager.getInstance().getCache("documents");
+ }
+
+ @Override
+ public JsonNode postProcess(KoralNode node) {
+ Document doc = null;
+
+ if (node.has("docID")) {
+ String docID = node.get("docID");
+ Element e = this.cache.get(docID);
+ if (e == null) {
+ try {
+ doc = docDao.findbyId(docID, null);
+ }catch (KustvaktException ex) {
+ ex.printStackTrace();
+ // todo: what to do here?!
+ }
+
+ if (doc != null)
+ this.cache.put(new Element(docID, doc));
+ }else
+ doc = (Document) e.getObjectValue();
+
+ if (doc != null && doc.isDisabled())
+ node.removeNode();
+ }
+ return node.rawNode();
+ }
+
+ @Override
+ public String path() {
+ return "matches";
+ }
+
+ @Override
+ public JsonNode preProcess(KoralNode node, KustvaktConfiguration config,
+ User user) {
+ return null;
+ }
+}