public boolean isCollectionIndex() { while (true) { try { return storage.callIndexEngine(false, false, indexId, new OIndexEngineCallback<Boolean>() { @Override public Boolean callEngine(OBaseIndexEngine engine) { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.isCollectionIndex(); } }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } } }
@Override public long getSize() { while (true) { try { return storage.callIndexEngine(false, false, indexId, new OIndexEngineCallback<Long>() { // TODO apply current TX @Override public Long callEngine(OBaseIndexEngine engine) { OBasicTransaction transaction = getDatabase().getMicroOrRegularTransaction(); OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.sizeInTx(getTransactionChanges(transaction)); } }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } } }
public Analyzer indexAnalyzer() { while (true) { try { return storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.indexAnalyzer(); }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } } } }
public Document buildDocument(final Object key) { while (true) try { return storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.buildDocument(key, null); }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } }
public Analyzer queryAnalyzer() { while (true) try { return storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.queryAnalyzer(); }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } }
public Query buildQuery(final Object query) throws ParseException { while (true) try { return storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.buildQuery(query); }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } }
@Override public IndexSearcher searcher() { while (true) { try { return storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.searcher(); }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } } }
@Override protected Iterable<OTransactionIndexChangesPerKey.OTransactionIndexEntry> interpretTxKeyChanges( final OTransactionIndexChangesPerKey changes) { try { return storage.callIndexEngine(false, false, indexId, new OIndexEngineCallback<Iterable<OTransactionIndexChangesPerKey.OTransactionIndexEntry>>() { @Override public Iterable<OTransactionIndexChangesPerKey.OTransactionIndexEntry> callEngine(OBaseIndexEngine engine) { if (((OLuceneSpatialIndexContainer) engine).isLegacy()) { return OLuceneSpatialIndex.super.interpretTxKeyChanges(changes); } else { return interpretAsSpatial(changes.entries); } } }); } catch (OInvalidIndexEngineIdException e) { e.printStackTrace(); } return super.interpretTxKeyChanges(changes); }
while (true) try { storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine;
protected void onIndexEngineChange(final int indexId) { while (true) try { storage.callIndexEngine(false, false, indexId, engine -> { engine.init(getName(), getType(), getDefinition(), isAutomatic(), getMetadata()); return null; }); break; } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } }
@Override protected void onIndexEngineChange(int indexId) { while (true) try { storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine oIndexEngine = (OLuceneIndexEngine) engine; oIndexEngine.init(getName(), getType(), getDefinition(), isAutomatic(), getMetadata()); return null; }); break; } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } }
@Override public Set<OIdentifiable> get(final Object key) { final OBasicTransaction transaction = getDatabase().getMicroOrRegularTransaction(); if (transaction.isActive()) { while (true) { try { return storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.getInTx(key, getTransactionChanges(transaction)); }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } } } else { while (true) { try { return (Set<OIdentifiable>) storage.getIndexValue(indexId, key); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } } } }
private OLuceneTxChanges getTransactionChanges(OBasicTransaction transaction) { OLuceneTxChanges changes = (OLuceneTxChanges) transaction.getCustomData(getName()); if (changes == null) { while (true) try { changes = storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; try { return indexEngine.buildTxChanges(); } catch (IOException e) { throw OException.wrapException(new OIndexException("Cannot get searcher from index " + getName()), e); } }); break; } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } transaction.setCustomData(getName(), changes); } return changes; }
while (true) { try { luceneDoc = storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine oIndexEngine = (OLuceneIndexEngine) engine; return oIndexEngine.buildDocument(key, singleValue);
@Override public boolean remove(final Object key, final OIdentifiable value) { if (key != null) { OBasicTransaction transaction = getDatabase().getMicroOrRegularTransaction(); if (transaction.isActive()) { transaction.addIndexEntry(this, super.getName(), OTransactionIndexChanges.OPERATION.REMOVE, encodeKey(key), value); OLuceneTxChanges transactionChanges = getTransactionChanges(transaction); transactionChanges.remove(key, value); return true; } else { while (true) { try { return storage.callIndexEngine(false, false, indexId, engine -> { OLuceneIndexEngine indexEngine = (OLuceneIndexEngine) engine; return indexEngine.remove(key, value); }); } catch (OInvalidIndexEngineIdException e) { doReloadIndexEngine(); } } } } return true; }