Mercurial Hosting > luan
comparison src/luan/modules/lucene/LuanOpDoer.java @ 1551:9cc4cee39b8b
add LuanOpDoer
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 04 Oct 2020 16:29:54 -0600 |
parents | |
children | 52241b69c339 |
comparison
equal
deleted
inserted
replaced
1550:0dc3be25ad20 | 1551:9cc4cee39b8b |
---|---|
1 package luan.modules.lucene; | |
2 | |
3 import java.io.IOException; | |
4 import java.util.Map; | |
5 import org.apache.lucene.search.Query; | |
6 import goodjava.lucene.api.GoodIndexWriter; | |
7 import goodjava.lucene.logging.OpDoer; | |
8 import goodjava.lucene.logging.BasicOpDoer; | |
9 import luan.LuanFunction; | |
10 import luan.LuanException; | |
11 import luan.LuanRuntimeException; | |
12 | |
13 | |
14 final class LuanOpDoer implements OpDoer { | |
15 private final OpDoer opDoer; | |
16 private final LuanFunction fn; | |
17 | |
18 LuanOpDoer(GoodIndexWriter writer,LuanFunction fn) { | |
19 this.opDoer = new BasicOpDoer(writer); | |
20 this.fn = fn; | |
21 } | |
22 | |
23 public GoodIndexWriter writer() { | |
24 return opDoer.writer(); | |
25 } | |
26 | |
27 public void commit() throws IOException { | |
28 try { | |
29 fn.call(new CommitAction(opDoer)); | |
30 } catch(LuanException e) { | |
31 throw new LuanRuntimeException(e); | |
32 } | |
33 } | |
34 | |
35 public void deleteAll(long time) throws IOException { | |
36 try { | |
37 fn.call(new DeleteAllAction(opDoer,time)); | |
38 } catch(LuanException e) { | |
39 throw new LuanRuntimeException(e); | |
40 } | |
41 } | |
42 | |
43 public void deleteDocuments(long time,Query query) throws IOException { | |
44 try { | |
45 fn.call(new DeleteDocumentsAction(opDoer,time,query)); | |
46 } catch(LuanException e) { | |
47 throw new LuanRuntimeException(e); | |
48 } | |
49 } | |
50 | |
51 public void addDocument(long time,Map<String,Object> storedFields) throws IOException { | |
52 try { | |
53 fn.call(new AddDocumentAction(opDoer,time,storedFields)); | |
54 } catch(LuanException e) { | |
55 throw new LuanRuntimeException(e); | |
56 } | |
57 } | |
58 | |
59 public void updateDocument(long time,String keyFieldName,Map<String,Object> storedFields) throws IOException { | |
60 try { | |
61 fn.call(new UpdateDocumentAction(opDoer,time,keyFieldName,storedFields)); | |
62 } catch(LuanException e) { | |
63 throw new LuanRuntimeException(e); | |
64 } | |
65 } | |
66 | |
67 public void tag(long time,String tag) throws IOException { | |
68 try { | |
69 fn.call(new TagAction(opDoer,time,tag)); | |
70 } catch(LuanException e) { | |
71 throw new LuanRuntimeException(e); | |
72 } | |
73 } | |
74 | |
75 public static abstract class Action { | |
76 public final OpDoer opDoer; | |
77 public final String name; | |
78 | |
79 private Action(OpDoer opDoer,String name) { | |
80 this.opDoer = opDoer; | |
81 this.name = name; | |
82 } | |
83 | |
84 public abstract void run() throws IOException; | |
85 } | |
86 | |
87 public static final class CommitAction extends Action { | |
88 | |
89 private CommitAction(OpDoer opDoer) { | |
90 super(opDoer,"commit"); | |
91 } | |
92 | |
93 public void run() throws IOException { | |
94 opDoer.commit(); | |
95 } | |
96 } | |
97 | |
98 public static final class DeleteAllAction extends Action { | |
99 public final long time; | |
100 | |
101 private DeleteAllAction(OpDoer opDoer,long time) { | |
102 super(opDoer,"deleteAll"); | |
103 this.time = time; | |
104 } | |
105 | |
106 public void run() throws IOException { | |
107 opDoer.deleteAll(time); | |
108 } | |
109 } | |
110 | |
111 public static final class DeleteDocumentsAction extends Action { | |
112 public final long time; | |
113 public final Query query; | |
114 | |
115 private DeleteDocumentsAction(OpDoer opDoer,long time,Query query) { | |
116 super(opDoer,"deleteDocuments"); | |
117 this.time = time; | |
118 this.query = query; | |
119 } | |
120 | |
121 public void run() throws IOException { | |
122 opDoer.deleteDocuments(time,query); | |
123 } | |
124 } | |
125 | |
126 public static final class AddDocumentAction extends Action { | |
127 public final long time; | |
128 public final Map<String,Object> storedFields; | |
129 | |
130 private AddDocumentAction(OpDoer opDoer,long time,Map<String,Object> storedFields) { | |
131 super(opDoer,"addDocument"); | |
132 this.time = time; | |
133 this.storedFields = storedFields; | |
134 } | |
135 | |
136 public void run() throws IOException { | |
137 opDoer.addDocument(time,storedFields); | |
138 } | |
139 } | |
140 | |
141 public static final class UpdateDocumentAction extends Action { | |
142 public final long time; | |
143 public final String keyFieldName; | |
144 public final Map<String,Object> storedFields; | |
145 | |
146 private UpdateDocumentAction(OpDoer opDoer,long time,String keyFieldName,Map<String,Object> storedFields) { | |
147 super(opDoer,"updateDocument"); | |
148 this.time = time; | |
149 this.keyFieldName = keyFieldName; | |
150 this.storedFields = storedFields; | |
151 } | |
152 | |
153 public void run() throws IOException { | |
154 opDoer.updateDocument(time,keyFieldName,storedFields); | |
155 } | |
156 } | |
157 | |
158 public static final class TagAction extends Action { | |
159 public final long time; | |
160 public final String tag; | |
161 | |
162 private TagAction(OpDoer opDoer,long time,String tag) { | |
163 super(opDoer,"tag"); | |
164 this.time = time; | |
165 this.tag = tag; | |
166 } | |
167 | |
168 public void run() throws IOException { | |
169 opDoer.tag(time,tag); | |
170 } | |
171 } | |
172 | |
173 } |