CavalliumDBEngine/src/main/java/it/cavallium/dbengine/database/disk/LLIndexSearcher.java

53 lines
1.5 KiB
Java
Raw Normal View History

2021-09-18 18:34:21 +02:00
package it.cavallium.dbengine.database.disk;
import io.net5.buffer.api.Drop;
import io.net5.buffer.api.Owned;
import io.net5.buffer.api.internal.ResourceSupport;
2021-09-23 20:57:28 +02:00
import it.cavallium.dbengine.database.LiveResourceSupport;
2021-09-18 18:34:21 +02:00
import java.io.IOException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.SearcherManager;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
2021-09-23 20:57:28 +02:00
public class LLIndexSearcher extends LiveResourceSupport<LLIndexSearcher, LLIndexSearcher> {
2021-09-18 18:34:21 +02:00
private IndexSearcher indexSearcher;
2021-09-22 11:03:39 +02:00
public LLIndexSearcher(IndexSearcher indexSearcher, Drop<LLIndexSearcher> drop) {
2021-09-23 15:34:56 +02:00
super(drop);
2021-09-18 18:34:21 +02:00
this.indexSearcher = indexSearcher;
}
public IndexReader getIndexReader() {
if (!isOwned()) {
2021-09-22 11:03:39 +02:00
throw attachTrace(new IllegalStateException("LLIndexSearcher must be owned to be used"));
2021-09-18 18:34:21 +02:00
}
return indexSearcher.getIndexReader();
}
public IndexSearcher getIndexSearcher() {
if (!isOwned()) {
2021-09-22 11:03:39 +02:00
throw attachTrace(new IllegalStateException("LLIndexSearcher must be owned to be used"));
2021-09-18 18:34:21 +02:00
}
return indexSearcher;
}
@Override
protected RuntimeException createResourceClosedException() {
return new IllegalStateException("Closed");
}
@Override
protected Owned<LLIndexSearcher> prepareSend() {
var indexSearcher = this.indexSearcher;
2021-09-22 11:03:39 +02:00
return drop -> new LLIndexSearcher(indexSearcher, drop);
2021-09-18 18:34:21 +02:00
}
2021-09-23 15:34:56 +02:00
protected void makeInaccessible() {
2021-09-18 18:34:21 +02:00
this.indexSearcher = null;
}
}