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 }