Mercurial Hosting > luan
comparison src/goodjava/lucene/logging/LogInputStream.java @ 1476:7d145095cc0b
lucene.logging check
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 19 Apr 2020 20:42:26 -0600 |
parents | |
children | 117ce8645b7f |
comparison
equal
deleted
inserted
replaced
1475:c7b86342857f | 1476:7d145095cc0b |
---|---|
1 package goodjava.lucene.logging; | |
2 | |
3 import java.io.InputStream; | |
4 import java.io.DataInputStream; | |
5 import java.io.IOException; | |
6 import java.util.List; | |
7 import java.util.ArrayList; | |
8 import java.util.Map; | |
9 import java.util.LinkedHashMap; | |
10 import org.apache.lucene.index.Term; | |
11 import org.apache.lucene.search.Query; | |
12 import org.apache.lucene.search.MatchAllDocsQuery; | |
13 import org.apache.lucene.search.TermQuery; | |
14 import org.apache.lucene.search.PrefixQuery; | |
15 import org.apache.lucene.search.WildcardQuery; | |
16 import org.apache.lucene.search.TermRangeQuery; | |
17 import org.apache.lucene.search.PhraseQuery; | |
18 import org.apache.lucene.search.NumericRangeQuery; | |
19 import org.apache.lucene.search.BooleanQuery; | |
20 import org.apache.lucene.search.BooleanClause; | |
21 import org.apache.lucene.util.BytesRef; | |
22 import goodjava.logging.Logger; | |
23 import goodjava.logging.LoggerFactory; | |
24 | |
25 | |
26 public class LogInputStream extends DataInputStream { | |
27 private static final Logger logger = LoggerFactory.getLogger(LogInputStream.class); | |
28 | |
29 public LogInputStream(InputStream in) { | |
30 super(in); | |
31 } | |
32 | |
33 public Object readObject() throws IOException { | |
34 int type = readByte(); | |
35 return readObject(type); | |
36 } | |
37 | |
38 protected Object readObject(int type) throws IOException { | |
39 switch(type) { | |
40 case LogFile.TYPE_NULL: | |
41 return null; | |
42 case LogFile.TYPE_STRING: | |
43 return readUTF(); | |
44 case LogFile.TYPE_INT: | |
45 return readInt(); | |
46 case LogFile.TYPE_LONG: | |
47 return readLong(); | |
48 case LogFile.TYPE_FLOAT: | |
49 return readFloat(); | |
50 case LogFile.TYPE_DOUBLE: | |
51 return readDouble(); | |
52 case LogFile.TYPE_BYTES: | |
53 return readByteArray(); | |
54 case LogFile.TYPE_LIST: | |
55 return readList(); | |
56 case LogFile.TYPE_QUERY_MATCH_ALL_DOCS: | |
57 return new MatchAllDocsQuery(); | |
58 case LogFile.TYPE_QUERY_TERM: | |
59 return new TermQuery( readTerm() ); | |
60 case LogFile.TYPE_QUERY_PREFIX: | |
61 return new PrefixQuery( readTerm() ); | |
62 case LogFile.TYPE_QUERY_WILDCARD: | |
63 return new WildcardQuery( readTerm() ); | |
64 case LogFile.TYPE_QUERY_TERM_RANGE: | |
65 { | |
66 String field = readUTF(); | |
67 BytesRef lowerTerm = readBytesRef(); | |
68 BytesRef upperTerm = readBytesRef(); | |
69 boolean includeLower = readBoolean(); | |
70 boolean includeUpper = readBoolean(); | |
71 return new TermRangeQuery(field,lowerTerm,upperTerm,includeLower,includeUpper); | |
72 } | |
73 case LogFile.TYPE_QUERY_PHRASE: | |
74 { | |
75 PhraseQuery query = new PhraseQuery(); | |
76 int n = readInt(); | |
77 for( int i=0; i<n; i++ ) { | |
78 Term term = readTerm(); | |
79 int position = readInt(); | |
80 query.add(term,position); | |
81 } | |
82 return query; | |
83 } | |
84 case LogFile.TYPE_QUERY_NUMERIC_RANGE: | |
85 { | |
86 String field = readUTF(); | |
87 Number min = (Number)readObject(); | |
88 Number max = (Number)readObject(); | |
89 boolean minInclusive = readBoolean(); | |
90 boolean maxInclusive = readBoolean(); | |
91 Number n = min!=null ? min : max; | |
92 if( n instanceof Integer ) | |
93 return NumericRangeQuery.newIntRange(field,(Integer)min,(Integer)max,minInclusive,maxInclusive); | |
94 if( n instanceof Long ) | |
95 return NumericRangeQuery.newLongRange(field,(Long)min,(Long)max,minInclusive,maxInclusive); | |
96 if( n instanceof Float ) | |
97 return NumericRangeQuery.newFloatRange(field,(Float)min,(Float)max,minInclusive,maxInclusive); | |
98 if( n instanceof Double ) | |
99 return NumericRangeQuery.newDoubleRange(field,(Double)min,(Double)max,minInclusive,maxInclusive); | |
100 throw new RuntimeException("bad numeric type for "+n); | |
101 } | |
102 case LogFile.TYPE_QUERY_BOOLEAN: | |
103 { | |
104 BooleanQuery query = new BooleanQuery(); | |
105 int n = readInt(); | |
106 for( int i=0; i<n; i++ ) { | |
107 Query subquery = readQuery(); | |
108 BooleanClause.Occur occur = BooleanClause.Occur.valueOf( readUTF() ); | |
109 query.add(subquery,occur); | |
110 } | |
111 return query; | |
112 } | |
113 default: | |
114 throw new RuntimeException("invalid type "+type); | |
115 } | |
116 } | |
117 | |
118 public byte[] readByteArray() throws IOException { | |
119 int len = readInt(); | |
120 byte[] bytes = new byte[len]; | |
121 readFully(bytes); | |
122 return bytes; | |
123 } | |
124 | |
125 public List readList() throws IOException { | |
126 final int size = readInt(); | |
127 List list = new ArrayList(size); | |
128 for( int i=0; i<size; i++ ) { | |
129 list.add( readObject() ); | |
130 } | |
131 return list; | |
132 } | |
133 | |
134 public Map readMap() throws IOException { | |
135 final int size = readInt(); | |
136 Map map = new LinkedHashMap(); | |
137 for( int i=0; i<size; i++ ) { | |
138 Object key = readObject(); | |
139 Object value = readObject(); | |
140 map.put(key,value); | |
141 } | |
142 return map; | |
143 } | |
144 | |
145 public Query readQuery() throws IOException { | |
146 return (Query)readObject(); | |
147 } | |
148 | |
149 public BytesRef readBytesRef() throws IOException { | |
150 return new BytesRef( readByteArray() ); | |
151 } | |
152 | |
153 public Term readTerm() throws IOException { | |
154 String key = readUTF(); | |
155 BytesRef value = readBytesRef(); | |
156 return new Term(key,value); | |
157 } | |
158 | |
159 } |