Mirror collection

Change-Id: Ib597547f09eaa1191b2c43f0d818d0f3002114c7
diff --git a/src/main/java/de/ids_mannheim/korap/Krill.java b/src/main/java/de/ids_mannheim/korap/Krill.java
index 112112d..8a5789a 100644
--- a/src/main/java/de/ids_mannheim/korap/Krill.java
+++ b/src/main/java/de/ids_mannheim/korap/Krill.java
@@ -166,7 +166,6 @@
         if (json.has("query")) {
             try {
                 KrillQuery kq = new KrillQuery("tokens");
-
                 SpanQueryWrapper qw = kq.fromJson(json.get("query"));
 
                 this.setQuery(kq);
@@ -209,11 +208,13 @@
         try {
             if (json.has("collection")) {
                 JsonNode collNode = json.get("collection");
+
                 // TODO: Temporary
-                if (collNode.fieldNames().hasNext())
-                    this.setCollection(
-                        new KrillCollection().fromJson(collNode)
-                    );
+                if (collNode.fieldNames().hasNext()) {
+                    KrillCollection kc = new KrillCollection()
+                            .fromJson(collNode);
+                    this.setCollection(kc);
+                };
             }
 
             // <legacycode>
@@ -303,14 +304,16 @@
 
         // Apply search
         else {
+
+            // This contains meta and matches
             kr = this.index.search(this);
-            this.getCollection().setIndex(this.index);
+            // this.getCollection().setIndex(this.index);
             kr.copyNotificationsFrom(this);
         };
 
-        // TODO: Only for development mode
-        kr.setRequest(this.request);
+        // kr.setRequest(this.request);
         kr.setQuery(this.getQuery());
+        kr.setCollection(this.getCollection());
 
         return kr;
     };
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index 539427b..5d7d736 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -59,6 +59,7 @@
     private String id;
     private ArrayList<FilterOperation> filter;
     private int filterCount = 0;
+    private JsonNode json;
 
     // Logger
     private final static Logger log = LoggerFactory
@@ -158,6 +159,7 @@
      * @throws QueryException
      */
     public KrillCollection fromJson (JsonNode json) throws QueryException {
+        this.json = json;
         this.filter(this._fromJson(json));
         return this;
     };
@@ -617,6 +619,22 @@
 
 
     /**
+     * Return the associated KoralQuery collection object
+     * as a {@link JsonNode}. This won't work,
+     * if the object was build using a CollectionBuilder,
+     * therefore it is limited to mirror a deserialized KoralQuery
+     * object.
+     * 
+     * @return The {@link JsonNode} representing the collection object
+     *         of a deserialized KoralQuery object.
+     */
+    public JsonNode toJsonNode () {
+        return this.json;
+    };
+
+
+
+    /**
      * Search in the virtual collection.
      * This is mostly used for testing purposes
      * and <strong>is not recommended</strong>
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index 3fe6f28..3bf8bcd 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -121,6 +121,7 @@
         };
     };
 
+
     /**
      * Constructs a new object for query deserialization
      * and building. Expects the name of an index field
@@ -281,12 +282,14 @@
                     SpanSubspanQueryWrapper ssqw = new SpanSubspanQueryWrapper(
                             sqw, startOffset, length);
                     return ssqw;
-                };
+                }
+                ;
 
                 if (DEBUG)
                     log.trace("Wrap class reference {}", number);
 
-                return new SpanFocusQueryWrapper(this._fromJson(operands.get(0)), number);
+                return new SpanFocusQueryWrapper(
+                        this._fromJson(operands.get(0)), number);
 
             case "koral:token":
 
@@ -384,7 +387,8 @@
         if (DEBUG)
             log.trace("Operands are {}", operands);
 
-        SpanQueryWrapper spanReferenceQueryWrapper = _operationReferenceFromJSON(json, operands);
+        SpanQueryWrapper spanReferenceQueryWrapper = _operationReferenceFromJSON(
+                json, operands);
         if (spanReferenceQueryWrapper != null) {
             return spanReferenceQueryWrapper;
         }
@@ -428,8 +432,9 @@
         throw new QueryException(711, "Unknown group operation");
     };
 
-    private SpanQueryWrapper _operationReferenceFromJSON(JsonNode node, JsonNode operands)
-            throws QueryException {
+
+    private SpanQueryWrapper _operationReferenceFromJSON (JsonNode node,
+            JsonNode operands) throws QueryException {
         boolean isReference = false;
         int classNum = -1;
         int refOperandNum = -1;
@@ -464,7 +469,8 @@
         return null;
     }
 
-    private JsonNode _resolveReference(JsonNode node, JsonNode operands,
+
+    private JsonNode _resolveReference (JsonNode node, JsonNode operands,
             int refOperandNum, int classNum) throws QueryException {
         JsonNode referent = null;
         ObjectMapper m = new ObjectMapper();
@@ -474,7 +480,8 @@
             if (i != refOperandNum) {
                 if (!isReferentFound) {
                     referent = _extractReferentClass(operands.get(i), classNum);
-                    if (referent != null) isReferentFound = true;
+                    if (referent != null)
+                        isReferentFound = true;
                 }
                 newOperands.insert(i, operands.get(i));
             }
@@ -490,7 +497,8 @@
 
     }
 
-    private JsonNode _extractReferentClass(JsonNode node, int classNum) {
+
+    private JsonNode _extractReferentClass (JsonNode node, int classNum) {
         JsonNode referent;
         if (node.has("classOut") && node.get("classOut").asInt() == classNum) {
             // System.out.println("found: " + node.toString());
@@ -520,7 +528,7 @@
 
         SpanQueryWrapper operand1 = this._fromJson(operands.get(0));
         SpanQueryWrapper operand2 = this._fromJson(operands.get(1));
-        
+
         String direction = ">:";
         if (operand1.isEmpty() && !operand2.isEmpty()) {
             direction = "<:";
@@ -529,14 +537,13 @@
         if (!relation.has("@type"))
             throw new QueryException(701,
                     "JSON-LD group has no @type attribute");
-        
+
         if (relation.get("@type").asText().equals("koral:relation")) {
             if (!relation.has("wrap")) {
                 throw new QueryException(718, "Missing relation term");
             }
             SpanQueryWrapper relationWrapper = _termFromJson(
-                    relation.get("wrap"),
-                    direction);
+                    relation.get("wrap"), direction);
             return new SpanRelationWrapper(relationWrapper, operand1, operand2);
         }
         else {
@@ -730,7 +737,8 @@
                     "Span references are currently not supported");
         };
 
-        return new SpanFocusQueryWrapper(this._fromJson(operands.get(0)), number);
+        return new SpanFocusQueryWrapper(this._fromJson(operands.get(0)),
+                number);
     };
 
 
@@ -1039,7 +1047,7 @@
 
         // <legacy>
         if (json.has("caseInsensitive")
-            && json.get("caseInsensitive").asBoolean()) {
+                && json.get("caseInsensitive").asBoolean()) {
             isCaseInsensitive = true;
         }
         // </legacy>
diff --git a/src/main/java/de/ids_mannheim/korap/index/MultiTerm.java b/src/main/java/de/ids_mannheim/korap/index/MultiTerm.java
index ec5079b..b009e7b 100644
--- a/src/main/java/de/ids_mannheim/korap/index/MultiTerm.java
+++ b/src/main/java/de/ids_mannheim/korap/index/MultiTerm.java
@@ -304,7 +304,7 @@
      * Offsets are attached following a hash sign,
      * payloads are attached following a dollar sign.
      * All payloads are written as UTF-8 character sequences.
-     *
+     * 
      * <b>For the moment this is only for testing purposes!</b>
      * 
      * @see #toStringShort().
@@ -457,26 +457,29 @@
                 }
                 catch (NumberFormatException e) {
                     throw new CorpusDataException(952,
-                            "Given offset information is not numeric in " + termSurface[0]);
+                            "Given offset information is not numeric in "
+                                    + termSurface[0]);
                 };
             }
             else {
                 throw new CorpusDataException(953,
-                        "Given offset information is incomplete in " + termSurface[0]);
+                        "Given offset information is incomplete in "
+                                + termSurface[0]);
             };
         };
         this.term = _unescape(stringOffset[0]);
     };
 
+
     // Escape the term
     private String _escape (String term) {
         return term.replaceAll("([#\\$\\\\])", "\\\\$1");
     };
-    
+
+
     // Unescape the term
     private String _unescape (String term) {
-        return term.replace("\\\\","\\")
-            .replace("\\#", "#")
-            .replace("\\$", "$");
+        return term.replace("\\\\", "\\").replace("\\#", "#")
+                .replace("\\$", "$");
     };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/SimpleSpanQuery.java b/src/main/java/de/ids_mannheim/korap/query/SimpleSpanQuery.java
index de1e4c8..1f28383 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SimpleSpanQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SimpleSpanQuery.java
@@ -75,8 +75,10 @@
     protected String field;
     protected boolean collectPayloads;
 
+
     public SimpleSpanQuery () {}
 
+
     /**
      * Constructs a new SimpleSpanQuery using the specified
      * {@link SpanQuery} and set whether payloads are to be collected
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanClassFilterQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanClassFilterQuery.java
index 48790bc..799c87e 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanClassFilterQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanClassFilterQuery.java
@@ -21,31 +21,33 @@
     private ClassOperation operation;
     private byte classNum1, classNum2;
 
+
     public SpanClassFilterQuery (SpanQuery sq, ClassOperation type,
-            int classNum1, int classNum2,
-            boolean collectPayloads) {
+                                 int classNum1, int classNum2,
+                                 boolean collectPayloads) {
         super(sq, collectPayloads);
         this.operation = type;
         this.classNum1 = (byte) classNum1;
         this.classNum2 = (byte) classNum2;
     }
 
+
     @Override
-    public SimpleSpanQuery clone() {
+    public SimpleSpanQuery clone () {
         return new SpanClassFilterQuery((SpanQuery) firstClause.clone(),
-                operation,
-                classNum1, classNum2, collectPayloads);
+                operation, classNum1, classNum2, collectPayloads);
     }
 
+
     @Override
-    public Spans getSpans(AtomicReaderContext context, Bits acceptDocs,
+    public Spans getSpans (AtomicReaderContext context, Bits acceptDocs,
             Map<Term, TermContext> termContexts) throws IOException {
-        return new ClassFilteredSpans(this, context, acceptDocs,
-                termContexts);
+        return new ClassFilteredSpans(this, context, acceptDocs, termContexts);
     }
 
+
     @Override
-    public String toString(String field) {
+    public String toString (String field) {
         StringBuilder sb = new StringBuilder();
         sb.append("spanClassFilter(");
         sb.append(firstClause.toString());
@@ -59,27 +61,33 @@
         return sb.toString();
     }
 
-    public ClassOperation getOperation() {
+
+    public ClassOperation getOperation () {
         return operation;
     }
 
-    public void setOperation(ClassOperation operation) {
+
+    public void setOperation (ClassOperation operation) {
         this.operation = operation;
     }
 
-    public byte getClassNum1() {
+
+    public byte getClassNum1 () {
         return classNum1;
     }
 
-    public void setClassNum1(byte classNum1) {
+
+    public void setClassNum1 (byte classNum1) {
         this.classNum1 = classNum1;
     }
 
-    public byte getClassNum2() {
+
+    public byte getClassNum2 () {
         return classNum2;
     }
 
-    public void setClassNum2(byte classNum2) {
+
+    public void setClassNum2 (byte classNum2) {
         this.classNum2 = classNum2;
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanFocusQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanFocusQuery.java
index c144a58..ab29d0f 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanFocusQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanFocusQuery.java
@@ -38,6 +38,7 @@
     private boolean matchTemporaryClass = false;
     private boolean removeTemporaryClasses = false;
 
+
     /**
      * Construct a new SpanFocusQuery.
      * 
@@ -80,7 +81,7 @@
     public String toString (String field) {
         StringBuffer buffer = new StringBuffer();
         buffer.append("focus(");
-        if (matchTemporaryClass){
+        if (matchTemporaryClass) {
             buffer.append("#");
         }
         if (classNumbers.size() > 1) {
@@ -188,19 +189,23 @@
         this.isSorted = isSorted;
     }
 
-    public boolean matchTemporaryClass() {
+
+    public boolean matchTemporaryClass () {
         return matchTemporaryClass;
     }
 
-    public void setMatchTemporaryClass(boolean matchTemporaryClass) {
+
+    public void setMatchTemporaryClass (boolean matchTemporaryClass) {
         this.matchTemporaryClass = matchTemporaryClass;
     }
 
-    public boolean removeTemporaryClasses() {
+
+    public boolean removeTemporaryClasses () {
         return removeTemporaryClasses;
     }
 
-    public void setRemoveTemporaryClasses(boolean rem) {
+
+    public void setRemoveTemporaryClasses (boolean rem) {
         this.removeTemporaryClasses = rem;
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanReferenceQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanReferenceQuery.java
index 9c2484d..3b23a18 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanReferenceQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanReferenceQuery.java
@@ -16,8 +16,9 @@
 
     private byte classNum;
 
+
     public SpanReferenceQuery (SpanQuery firstClause, byte classNum,
-            boolean collectPayloads) {
+                               boolean collectPayloads) {
         super(firstClause, collectPayloads);
         this.classNum = classNum;
     }
@@ -50,11 +51,12 @@
     }
 
 
-    public byte getClassNum() {
+    public byte getClassNum () {
         return classNum;
     }
 
-    public void setClassNum(byte classNum) {
+
+    public void setClassNum (byte classNum) {
         this.classNum = classNum;
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanRelationMatchQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanRelationMatchQuery.java
index 5bc962a..0fac2a3 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanRelationMatchQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanRelationMatchQuery.java
@@ -12,14 +12,15 @@
 
 import de.ids_mannheim.korap.query.spans.FocusSpans;
 
-public class SpanRelationMatchQuery extends SimpleSpanQuery{
+public class SpanRelationMatchQuery extends SimpleSpanQuery {
 
     private SpanQuery operandQuery;
     private SpanQuery operand2Query;
     private SpanRelationQuery relationQuery;
 
-    public SpanRelationMatchQuery (SpanRelationQuery relation, SpanQuery operand,
-            boolean collectPayloads) {
+
+    public SpanRelationMatchQuery (SpanRelationQuery relation,
+                                   SpanQuery operand, boolean collectPayloads) {
 
         checkVariables(relation, operand);
         SpanFocusQuery sq = new SpanFocusQuery(new SpanSegmentQuery(
@@ -34,8 +35,10 @@
         this.collectPayloads = collectPayloads;
     }
 
-    public SpanRelationMatchQuery (SpanRelationQuery relation, SpanQuery source,
-            SpanQuery target, boolean collectPayloads) {
+
+    public SpanRelationMatchQuery (SpanRelationQuery relation,
+                                   SpanQuery source, SpanQuery target,
+                                   boolean collectPayloads) {
 
         checkVariables(relation, source, target);
         SpanFocusQuery sq = null;
@@ -63,7 +66,8 @@
 
     }
 
-    public void checkVariables(SpanRelationQuery relation, SpanQuery operand) {
+
+    public void checkVariables (SpanRelationQuery relation, SpanQuery operand) {
         if (relation == null) {
             throw new IllegalArgumentException(
                     "The relation query cannot be null.");
@@ -80,8 +84,10 @@
         this.relationQuery = relation;
         this.operandQuery = operand;
     }
-    
-    public void checkVariables(SpanRelationQuery relation, SpanQuery operand, SpanQuery target) {
+
+
+    public void checkVariables (SpanRelationQuery relation, SpanQuery operand,
+            SpanQuery target) {
         checkVariables(relation, operand);
         if (target == null) {
             if (operand == null) {
@@ -96,8 +102,9 @@
         this.operand2Query = target;
     }
 
+
     @Override
-    public SimpleSpanQuery clone() {
+    public SimpleSpanQuery clone () {
         if (operand2Query != null) {
             return new SpanRelationMatchQuery(
                     (SpanRelationQuery) relationQuery.clone(),
@@ -110,16 +117,18 @@
                 (SpanQuery) operandQuery.clone(), collectPayloads);
     }
 
+
     @Override
-    public Spans getSpans(AtomicReaderContext context, Bits acceptDocs,
+    public Spans getSpans (AtomicReaderContext context, Bits acceptDocs,
             Map<Term, TermContext> termContexts) throws IOException {
 
         return new FocusSpans((SpanFocusQuery) firstClause, context,
                 acceptDocs, termContexts);
     }
 
+
     @Override
-    public String toString(String field) {
+    public String toString (String field) {
         return getFirstClause().toString();
     }
 }
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanRelationQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanRelationQuery.java
index 8d06a7e..65b8786 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanRelationQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanRelationQuery.java
@@ -62,7 +62,10 @@
     private byte sourceClass;
     private byte targetClass;
 
-    private List<Byte> tempClassNumbers = Arrays.asList(tempSourceNum, tempTargetNum);
+    private List<Byte> tempClassNumbers = Arrays.asList(tempSourceNum,
+            tempTargetNum);
+
+
     /**
      * Constructs a SpanRelationQuery based on the given span query.
      * 
@@ -83,14 +86,16 @@
         }
     }
 
+
     public SpanRelationQuery (SpanQuery firstClause, List<Byte> classNumbers,
-            boolean collectPayloads) {
+                              boolean collectPayloads) {
         this(firstClause, collectPayloads);
         this.tempClassNumbers = classNumbers;
         this.tempSourceNum = classNumbers.get(0);
         this.tempTargetNum = classNumbers.get(1);
     }
 
+
     @Override
     public SimpleSpanQuery clone () {
         SimpleSpanQuery sq = new SpanRelationQuery(
@@ -132,43 +137,53 @@
         return sb.toString();
     }
 
-    public int getDirection() {
+
+    public int getDirection () {
         return direction;
     }
 
-    public void setDirection(int direction) {
+
+    public void setDirection (int direction) {
         this.direction = direction;
     }
 
-    public List<Byte> getTempClassNumbers() {
+
+    public List<Byte> getTempClassNumbers () {
         return tempClassNumbers;
     }
 
-    public void setTempClassNumbers(List<Byte> classNumbers) {
+
+    public void setTempClassNumbers (List<Byte> classNumbers) {
         this.tempClassNumbers = classNumbers;
     }
 
-    public byte getTempSourceNum() {
+
+    public byte getTempSourceNum () {
         return tempSourceNum;
     }
 
-    public void setTempSourceNum(byte sourceNum) {
+
+    public void setTempSourceNum (byte sourceNum) {
         this.tempSourceNum = sourceNum;
     }
 
-    public byte getTempTargetNum() {
+
+    public byte getTempTargetNum () {
         return tempTargetNum;
     }
 
-    public void setTempTargetNum(byte targetNum) {
+
+    public void setTempTargetNum (byte targetNum) {
         this.tempTargetNum = targetNum;
     }
 
-    public byte getSourceClass() {
+
+    public byte getSourceClass () {
         return sourceClass;
     }
 
-    public void setSourceClass(byte sourceClass)
+
+    public void setSourceClass (byte sourceClass)
             throws IllegalArgumentException {
         if (sourceClass < 1) {
             throw new IllegalArgumentException(
@@ -178,11 +193,13 @@
         this.sourceClass = sourceClass;
     }
 
-    public byte getTargetClass() {
+
+    public byte getTargetClass () {
         return targetClass;
     }
 
-    public void setTargetClass(byte targetClass)
+
+    public void setTargetClass (byte targetClass)
             throws IllegalArgumentException {
         if (targetClass < 1) {
             throw new IllegalArgumentException(
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanSegmentQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanSegmentQuery.java
index 7e75543..29189e2 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanSegmentQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanSegmentQuery.java
@@ -46,6 +46,7 @@
         this(firstClause, secondClause, true);
     }
 
+
     /**
      * Constructs a SpanSegmentQuery from the two given SpanQueries.
      * 
@@ -60,7 +61,7 @@
      *            <code>false</code>.
      */
     public SpanSegmentQuery (SpanQuery firstClause, SpanQuery secondClause,
-            boolean collectPayloads) {
+                             boolean collectPayloads) {
         super(firstClause, secondClause, collectPayloads);
         if (firstClause instanceof SpanRelationQuery) {
             isRelation = true;
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ClassFilteredSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ClassFilteredSpans.java
index bfd5f11..28459cf 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ClassFilteredSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ClassFilteredSpans.java
@@ -20,9 +20,11 @@
     private ClassOperation operation;
     private byte classNum1, classNum2;
 
+
     public ClassFilteredSpans (SpanClassFilterQuery query,
-            AtomicReaderContext context, Bits acceptDocs,
-            Map<Term, TermContext> termContexts) throws IOException {
+                               AtomicReaderContext context, Bits acceptDocs,
+                               Map<Term, TermContext> termContexts)
+            throws IOException {
         super(query, context, acceptDocs, termContexts);
         this.operation = query.getOperation();
         this.classNum1 = query.getClassNum1();
@@ -30,8 +32,9 @@
         hasMoreSpans = firstSpans.next();
     }
 
+
     @Override
-    public boolean next() throws IOException {
+    public boolean next () throws IOException {
         while (hasMoreSpans) {
             matchPayload.clear();
             bitset1 = null;
@@ -49,17 +52,21 @@
         return false;
     }
 
-    private boolean isClassOperationValid() throws IOException {
+
+    private boolean isClassOperationValid () throws IOException {
         setBitsets();
-        int cardinality = Math.max(bitset1.cardinality(), bitset2.cardinality());
+        int cardinality = Math
+                .max(bitset1.cardinality(), bitset2.cardinality());
         bitset1.and(bitset2);
         // System.out.println("cardinality:" + cardinality);
         switch (operation) {
             case DISJOINT:
-                if (bitset1.cardinality() == 0) return true;
+                if (bitset1.cardinality() == 0)
+                    return true;
                 break;
             case EQUAL:
-                if (cardinality == bitset1.cardinality()) return true;
+                if (cardinality == bitset1.cardinality())
+                    return true;
                 break;
             case DIFFER:
                 if (cardinality == 0 || cardinality != bitset1.cardinality())
@@ -71,19 +78,21 @@
                 }
                 break;
             case INTERSECT:
-                if (bitset1.cardinality() > 0) return true;
+                if (bitset1.cardinality() > 0)
+                    return true;
                 break;
         }
 
         return false;
     }
 
-    private void setBitsets() throws IOException {
+
+    private void setBitsets () throws IOException {
         BitSet bs = new BitSet();
         int start, end;
         // System.out.println("------------------------");
         for (byte[] payload : firstSpans.getPayload()) {
-            if (payload.length == 9){
+            if (payload.length == 9) {
                 start = byte2int(payload, 0) + 1;
                 end = byte2int(payload, 4) + 1;
                 if (payload[8] == classNum1) {
@@ -118,14 +127,16 @@
 
     }
 
+
     @Override
-    public boolean skipTo(int target) throws IOException {
+    public boolean skipTo (int target) throws IOException {
         // TODO Auto-generated method stub
         return false;
     }
 
+
     @Override
-    public long cost() {
+    public long cost () {
         // TODO Auto-generated method stub
         return 0;
     }
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
index ac83c4d..09cc05b 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
@@ -128,7 +128,7 @@
     };
 
 
-    protected boolean addClassPayload() throws IOException {
+    protected boolean addClassPayload () throws IOException {
         hasmorespans = true;
 
         classedPayload.clear();
@@ -151,7 +151,7 @@
 
         // Add highlight information as byte array
         classedPayload.add(bb.array());
-        
+
         if (spans instanceof SimpleSpans) {
             SimpleSpans ss = (SimpleSpans) spans;
             this.hasSpanId = ss.hasSpanId;
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ReferenceSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ReferenceSpans.java
index a860afd..cae4c5a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ReferenceSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ReferenceSpans.java
@@ -16,6 +16,7 @@
 
     private byte classNum;
 
+
     public ReferenceSpans (SpanReferenceQuery query,
                            AtomicReaderContext context, Bits acceptDocs,
                            Map<Term, TermContext> termContexts)
@@ -43,7 +44,7 @@
 
 
     private boolean hasSameClassPosition () throws IOException {
-        int start=0, end=0;
+        int start = 0, end = 0;
         boolean isFound = false;
         boolean match = false;
 
@@ -52,7 +53,8 @@
         for (byte[] payload : firstSpans.getPayload()) {
             if (payload.length == 9 && payload[8] == classNum) {
                 if (isFound) {
-                    if (start == byte2int(payload, 0) && end == byte2int(payload, 4)){
+                    if (start == byte2int(payload, 0)
+                            && end == byte2int(payload, 4)) {
                         match = true;
                         continue;
                     }
@@ -86,7 +88,7 @@
 
 
     @Override
-    public long cost() {
+    public long cost () {
         return firstSpans.cost();
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
index 66afdbe..979b359 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
@@ -61,6 +61,7 @@
     private byte tempSourceNum, tempTargetNum;
     private byte sourceClass, targetClass;
 
+
     /**
      * Constructs RelationSpans from the given
      * {@link SpanRelationQuery}.
@@ -251,7 +252,8 @@
         cs.setPayloads(payload);
     }
 
-    private byte[] createClassPayload(int start, int end, byte classNumber,
+
+    private byte[] createClassPayload (int start, int end, byte classNumber,
             boolean keep) {
         ByteBuffer buffer = null;
         if (keep) {
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanReferenceQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanReferenceQueryWrapper.java
index 02a734f..8b4c54d 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanReferenceQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanReferenceQueryWrapper.java
@@ -10,8 +10,9 @@
     private SpanQueryWrapper subQuery;
     private byte classNum;
 
+
     public SpanReferenceQueryWrapper (SpanQueryWrapper subQueryWrapper,
-            byte classNum) {
+                                      byte classNum) {
         this.subQuery = subQueryWrapper;
         if (subQuery != null) {
             this.isNull = false;
@@ -30,17 +31,19 @@
         }
         this.classNum = classNum;
     }
-    
+
+
     @Override
-    public SpanQuery toQuery() throws QueryException {
+    public SpanQuery toQuery () throws QueryException {
 
         if (this.isNull() || this.isEmpty()) {
             return null;
         }
 
         SpanQuery sq = subQuery.retrieveNode(this.retrieveNode).toQuery();
-        if (sq == null) return null;
-        
+        if (sq == null)
+            return null;
+
         return new SpanReferenceQuery(sq, classNum, true);
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRelationWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRelationWrapper.java
index 2535ce9..992787c 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRelationWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRelationWrapper.java
@@ -14,8 +14,10 @@
     private SpanQueryWrapper subQuery1;
     private SpanQueryWrapper subQuery2;
 
+
     public SpanRelationWrapper (SpanQueryWrapper relationWrapper,
-            SpanQueryWrapper operand1, SpanQueryWrapper operand2) {
+                                SpanQueryWrapper operand1,
+                                SpanQueryWrapper operand2) {
 
         this.relationQuery = relationWrapper;
         if (relationQuery != null) {
@@ -35,17 +37,17 @@
 
 
     @Override
-    public SpanQuery toQuery() throws QueryException {
+    public SpanQuery toQuery () throws QueryException {
 
         if (this.isNull() || this.isEmpty()) {
             return null;
         }
 
-        SpanTermQuery relationTermQuery = (SpanTermQuery) relationQuery.retrieveNode(
-                this.retrieveNode).toQuery();
+        SpanTermQuery relationTermQuery = (SpanTermQuery) relationQuery
+                .retrieveNode(this.retrieveNode).toQuery();
         if (relationTermQuery == null)
             return null;
-        
+
         SpanRelationQuery rq = new SpanRelationQuery(relationTermQuery, true);
         SpanQuery subq1, subq2;
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
index 08c33b1..211c113 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
@@ -477,8 +477,8 @@
             String unit, boolean exclusion) {
 
         if (DEBUG)
-            log.trace("With contraint {}-{} (unit {}, excl {})",
-                      min, max, unit, exclusion);
+            log.trace("With contraint {}-{} (unit {}, excl {})", min, max,
+                    unit, exclusion);
 
         // Word unit
         if (unit.equals("w")) {
@@ -537,8 +537,8 @@
             SpanElementQueryWrapper unit, boolean exclusion) {
 
         if (DEBUG)
-            log.trace("With contraint {}-{} (unit {}, excl {})",
-                      min, max, unit.toString(), exclusion);
+            log.trace("With contraint {}-{} (unit {}, excl {})", min, max,
+                    unit.toString(), exclusion);
 
         if (this.constraints == null)
             this.constraints = new ArrayList<DistanceConstraint>(1);
@@ -601,10 +601,8 @@
         // that will be optimized away later on
         if (this.constraints.size() == 1) {
             DistanceConstraint dc = this.constraints.get(0);
-            if (dc.getUnit().equals("w") &&
-                dc.getMinDistance() == 1 &&
-                dc.getMaxDistance() == 1 &&
-                this.isInOrder) {
+            if (dc.getUnit().equals("w") && dc.getMinDistance() == 1
+                    && dc.getMaxDistance() == 1 && this.isInOrder) {
                 return false;
             };
         };
diff --git a/src/main/java/de/ids_mannheim/korap/response/Response.java b/src/main/java/de/ids_mannheim/korap/response/Response.java
index 2af28ab..674cd0b 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Response.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Response.java
@@ -40,9 +40,9 @@
 
     private KrillMeta meta;
     private KrillCollection collection;
+    private KrillQuery query;
 
     private String version, name, node, listener;
-    private KrillQuery query;
 
     private long totalResources = -2, // Not set
             totalResults = -2; // Not set
@@ -403,7 +403,9 @@
         this.collection = collection;
 
         // Move messages from the collection
-        return (Response) this.moveNotificationsFrom(collection);
+        Response resp = (Response) this.moveNotificationsFrom(collection);
+
+        return resp;
     };
 
 
@@ -468,9 +470,8 @@
                 json.put("meta", metaNode);
         };
 
-        ObjectNode meta = json.has("meta") ?
-            (ObjectNode) json.get("meta") :
-            (ObjectNode) json.putObject("meta");
+        ObjectNode meta = json.has("meta") ? (ObjectNode) json.get("meta")
+                : (ObjectNode) json.putObject("meta");
 
         if (sb.length() > 0)
             meta.put("version", sb.toString());
@@ -503,8 +504,8 @@
         };
 
         // KoralQuery collection object
-        if (this.collection != null
-                && this.collection.getFilters().toArray().length > 0) {
+        if (this.collection != null) {
+            // && this.collection.getFilters().toArray().length > 0) {
             JsonNode collNode = this.collection.toJsonNode();
             if (collNode != null)
                 json.put("collection", collNode);
diff --git a/src/main/java/de/ids_mannheim/korap/response/Result.java b/src/main/java/de/ids_mannheim/korap/response/Result.java
index c120d43..bc57674 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Result.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Result.java
@@ -327,9 +327,8 @@
 
 
     private void _addMeta (ObjectNode json) {
-        ObjectNode meta = json.has("meta") ?
-            (ObjectNode) json.get("meta") :
-            (ObjectNode) json.putObject("meta");
+        ObjectNode meta = json.has("meta") ? (ObjectNode) json.get("meta")
+                : (ObjectNode) json.putObject("meta");
 
 
         // Relevant context setting