blob: 51d4ab7d2b0db19ff897b426901c612964ec8847 [file] [log] [blame]
Nils Diewaldf399a672013-11-18 17:55:22 +00001package de.ids_mannheim.korap.query.wrap;
2
3import org.apache.lucene.search.spans.SpanQuery;
4
5import de.ids_mannheim.korap.query.SpanClassQuery;
Nils Diewaldbe5943e2014-10-21 19:35:34 +00006import de.ids_mannheim.korap.util.QueryException;
Nils Diewaldf399a672013-11-18 17:55:22 +00007
Nils Diewaldf399a672013-11-18 17:55:22 +00008
Nils Diewald0cc4f2e2015-01-30 20:13:08 +00009// TODO: If this.subquery.isNegative(), it may be an Expansion!
10// SpanExpansionQuery(x, y.negative, min, max. direction???, classNumber, true)
11
Nils Diewald92729ce2014-10-06 16:00:17 +000012public class SpanClassQueryWrapper extends SpanQueryWrapper {
13 private SpanQueryWrapper subquery;
Nils Diewaldf399a672013-11-18 17:55:22 +000014
Nils Diewaldbb33da22015-03-04 16:24:25 +000015
Nils Diewald92729ce2014-10-06 16:00:17 +000016 public SpanClassQueryWrapper (SpanQueryWrapper subquery, byte number) {
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000017 this.subquery = subquery;
Nils Diewaldbb33da22015-03-04 16:24:25 +000018 this.number = number;
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000019 if (number != (byte) 0)
20 this.hasClass = true;
Nils Diewaldf399a672013-11-18 17:55:22 +000021 };
22
Nils Diewaldbb33da22015-03-04 16:24:25 +000023
Nils Diewald92729ce2014-10-06 16:00:17 +000024 public SpanClassQueryWrapper (SpanQueryWrapper subquery, short number) {
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000025 this(subquery, (byte) number);
Nils Diewaldf399a672013-11-18 17:55:22 +000026 };
27
Nils Diewaldbb33da22015-03-04 16:24:25 +000028
Nils Diewald92729ce2014-10-06 16:00:17 +000029 public SpanClassQueryWrapper (SpanQueryWrapper subquery, int number) {
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000030 this(subquery, (byte) number);
Nils Diewaldf399a672013-11-18 17:55:22 +000031 };
32
Nils Diewaldbb33da22015-03-04 16:24:25 +000033
Nils Diewald92729ce2014-10-06 16:00:17 +000034 public SpanClassQueryWrapper (SpanQueryWrapper subquery) {
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000035 this(subquery, (byte) 0);
36 };
37
Nils Diewald0981c212015-02-13 20:47:10 +000038
39 @Override
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000040 public boolean isEmpty () {
41 return this.subquery.isEmpty();
42 };
43
Nils Diewald0981c212015-02-13 20:47:10 +000044
45 @Override
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000046 public boolean isOptional () {
47 return this.subquery.isOptional();
48 };
49
Nils Diewald0981c212015-02-13 20:47:10 +000050
51 @Override
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000052 public boolean isNull () {
53 return this.subquery.isNull();
54 };
55
Nils Diewald0981c212015-02-13 20:47:10 +000056
57 @Override
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000058 public boolean isNegative () {
59 return this.subquery.isNegative();
Nils Diewaldf399a672013-11-18 17:55:22 +000060 };
61
Nils Diewald0981c212015-02-13 20:47:10 +000062
63 @Override
64 public boolean maybeUnsorted () {
65 return this.subquery.maybeUnsorted();
66 };
67
68
Akrona7b936d2016-03-04 13:40:54 +010069 public SpanQuery toFragmentQuery () throws QueryException {
Nils Diewaldbb33da22015-03-04 16:24:25 +000070 if (this.subquery.isNull())
Nils Diewald6409a922015-01-29 20:50:42 +000071 return (SpanQuery) null;
Nils Diewald92729ce2014-10-06 16:00:17 +000072
Nils Diewaldbb33da22015-03-04 16:24:25 +000073 SpanQuery sq = (SpanQuery) this.subquery
Akrona7b936d2016-03-04 13:40:54 +010074 .retrieveNode(this.retrieveNode).toFragmentQuery();
Nils Diewald6409a922015-01-29 20:50:42 +000075
Nils Diewaldbb33da22015-03-04 16:24:25 +000076 if (sq == null)
77 return (SpanQuery) null;
78
Nils Diewald6409a922015-01-29 20:50:42 +000079 if (this.number == (byte) 0) {
80 return new SpanClassQuery(sq);
81 };
82 return new SpanClassQuery(sq, (byte) this.number);
Nils Diewaldf399a672013-11-18 17:55:22 +000083 };
Nils Diewaldf399a672013-11-18 17:55:22 +000084};