| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 1 | package de.ids_mannheim.korap.query.serialize; |
| 2 | |
| Michael Hanl | 034be0d | 2014-02-14 10:17:34 +0000 | [diff] [blame] | 3 | import java.util.LinkedHashMap; |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 4 | import java.util.LinkedList; |
| 5 | import java.util.List; |
| 6 | import java.util.Map; |
| 7 | |
| 8 | /** |
| 9 | * @author hanl |
| 10 | * @date 07/02/2014 |
| 11 | */ |
| Michael Hanl | df206ab | 2014-05-13 10:22:27 +0000 | [diff] [blame] | 12 | public class MetaQueryBuilder { |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 13 | |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 14 | private Map meta; |
| 15 | |
| Michael Hanl | df206ab | 2014-05-13 10:22:27 +0000 | [diff] [blame] | 16 | public MetaQueryBuilder() { |
| Michael Hanl | 034be0d | 2014-02-14 10:17:34 +0000 | [diff] [blame] | 17 | this.meta = new LinkedHashMap(); |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 18 | } |
| 19 | |
| Michael Hanl | b9f3fd1 | 2014-06-03 11:38:27 +0000 | [diff] [blame] | 20 | /** |
| 21 | * context segment if context is either of type char or token. |
| 22 | * size can differ for left and right span |
| 23 | * @param left |
| 24 | * @param leftType |
| 25 | * @param right |
| 26 | * @param rightType |
| 27 | * @return |
| 28 | */ |
| Michael Hanl | df206ab | 2014-05-13 10:22:27 +0000 | [diff] [blame] | 29 | public MetaQueryBuilder addContext(Integer left, String leftType, |
| Michael Hanl | bdcb00e | 2014-05-21 19:18:05 +0000 | [diff] [blame] | 30 | Integer right, String rightType) { |
| Michael Hanl | 034be0d | 2014-02-14 10:17:34 +0000 | [diff] [blame] | 31 | Map map = new LinkedHashMap(); |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 32 | List l = new LinkedList(); |
| 33 | List r = new LinkedList(); |
| Michael Hanl | 034be0d | 2014-02-14 10:17:34 +0000 | [diff] [blame] | 34 | l.add(leftType); |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 35 | l.add(left); |
| 36 | map.put("left", l); |
| Michael Hanl | 034be0d | 2014-02-14 10:17:34 +0000 | [diff] [blame] | 37 | r.add(rightType); |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 38 | r.add(right); |
| 39 | map.put("right", r); |
| 40 | meta.put("context", map); |
| 41 | return this; |
| 42 | } |
| 43 | |
| Michael Hanl | b9f3fd1 | 2014-06-03 11:38:27 +0000 | [diff] [blame] | 44 | /** |
| 45 | * context if of type paragraph or sentence where left and right size delimiters are irrelevant. |
| 46 | * @param type |
| 47 | * @return |
| 48 | */ |
| 49 | public MetaQueryBuilder addContext(String type) { |
| 50 | addEntry("context", type); |
| 51 | return this; |
| 52 | } |
| 53 | |
| 54 | |
| Michael Hanl | df206ab | 2014-05-13 10:22:27 +0000 | [diff] [blame] | 55 | public MetaQueryBuilder addEntry(String name, Object value) { |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 56 | meta.put(name, value); |
| 57 | return this; |
| 58 | } |
| 59 | |
| Michael Hanl | 034be0d | 2014-02-14 10:17:34 +0000 | [diff] [blame] | 60 | public Map raw() { |
| 61 | return meta; |
| 62 | } |
| Michael Hanl | ed5658f | 2014-02-07 22:24:46 +0000 | [diff] [blame] | 63 | } |